Наблюдаемость
Healthchecks
Healthchecks обеспечивают проверку работоспособности сервиса и его зависимостей.
Проверки работоспособности
Сервис:
- Базовая проверка готовности сервиса к обработке запросов
- Проверка доступности БД
- Проверка доступности Redis (Hangfire)
- Проверка доступности RabbitMQ (подписки на события)
Внешние зависимости:
- VkVision API (если используется)
- Athlete API (если используется)
- PhotoService API
- TagatorService API
Эндпоинты
Текущие эндпоинты (реализуется в MentKit):
/hc— только статус (Healthy, Unhealthy, Dead)/health— статус и подробное описание с указанием не пройденной проверки
Интересная идея:
/health/live— liveness probe (сервис запущен)/health/ready— readiness probe (сервис готов принимать трафик)
Конфигурация
Healthchecks настраиваются в Kubernetes через liveness и readiness probes для автоматического перезапуска и управления трафиком.
Метрики
Метрики обработки фото
Распознавание:
photos_recognized_total— общее количество распознанных фотоphotos_recognized_by_provider— количество фото по провайдерам (VkVision, Athlete)photos_recognition_duration_seconds— время распознавания фото
Тегирование:
photos_tagged_total— общее количество протегированных фотоtags_created_total— общее количество проставленных теговtags_by_type— количество тегов по типам (авто, ручное, кастомные)
Нужно рассмотреть возможность объединения метрик в одной с помощью лейблов RecognitionType, Provider, State.
Метрики задач тегаторов
Пока не учитываем. Относится к TagatorService.
Задачи:
tagging_tasks_total— общее количество задачtagging_tasks_by_state— количество задач по состояниям:- Созданные
- В работе
- Выполненные
- Отменённые
- Отправленные на перетег
Производительность:
tagging_task_creation_duration_seconds— время создания задачиtagging_task_processing_duration_seconds— время обработки задачи тегаторомtagging_task_wait_duration_seconds— время ожидания задачи в очереди
Метрики тегаторов
Пока не учитываем. Относится к TagatorService.
Активность:
tagators_online_total— количество тегаторов на линииtagators_works_active— количество активных работtagators_works_completed— количество завершённых работ
Эффективность:
tagator_tasks_completed_by_tagator— количество задач по тегаторамtagator_accuracy— точность работы тегатора (процент принятых тегов)
Метрики валидации
Как идея. Проработать.
Результаты валидации:
validation_passed_total— количество фото, прошедших валидациюvalidation_failed_total— количество фото, не прошедших валидациюvalidation_sent_to_manual_total— количество фото, отправленных на ручное тегирование
Причины отправки на ручное:
manual_tagging_reason_no_tags— теги не найденыmanual_tagging_reason_mismatch— несоответствие количества лиц и номеровmanual_tagging_reason_strategy— по стратегии альбома
Метрики провайдеров
Как идея. Проработать.
VkVision:
vkvision_requests_total— количество запросовvkvision_request_duration_seconds— время запросаvkvision_errors_total— количество ошибокvkvision_space_usage— заполненность спейсов
Athlete:
athlete_requests_total— количество запросовathlete_request_duration_seconds— время запросаathlete_callbacks_received_total— количество полученных колбековathlete_callback_processing_duration_seconds— время обработки колбекаathlete_errors_total— количество ошибок
Метрики инфраструктуры
Как идея. Проработать.
База данных:
db_query_duration_seconds— время выполнения запросовdb_connections_active— количество активных подключений
RabbitMQ:
rabbitmq_messages_consumed_total— количество обработанных сообщенийrabbitmq_message_processing_duration_seconds— время обработки сообщенияrabbitmq_errors_total— количество ошибок
Hangfire:
hangfire_jobs_scheduled_total— количество запланированных джобhangfire_jobs_succeeded_total— количество успешных джобhangfire_jobs_failed_total— количество упавших джоб
Мониторинг
Дашборды
Обзорный дашборд:
- Общее количество обрабатываемых фото
- Скорость обработки (фото/час)
- Количество тегаторов на линии
- Очередь задач на ручное тегирование
- Ошибки и проблемы
Дашборд распознавания:
- Распределение по провайдерам
- Время распознавания
- Процент успешного распознавания
- Ошибки провайдеров
Дашборд тегирования:
- Количество задач по статусам
- Производительность тегаторов
- Среднее время обработки задачи
- Процент качества работы
Дашборд инфраструктуры:
- Нагрузка на БД
- Нагрузка на Redis
- Состояние RabbitMQ
- Использование ресурсов (CPU, память)
Алерты
Критичные:
- Сервис недоступен
- БД недоступна
- RabbitMQ недоступен
- Провайдеры недоступны (VkVision, Athlete)
Важные:
- Высокая очередь необработанных фото (> 10000)
- Высокая очередь задач на ручное тегирование (> 5000)
- Высокий процент ошибок распознавания (> 10%)
- Нет тегаторов на линии
Предупреждения:
- Медленная обработка фото (> 5 мин на фото)
- Заполненность спейсов VkVision (> 80%)
- Высокое использование Redis (> 80%)
- Высокая нагрузка на БД
Логирование
Уровни логирования
Error:
- Ошибки взаимодействия с внешними сервисами
- Ошибки обработки фото
- Критичные ошибки БД
Warning:
- Повторные попытки обработки
- Проблемы валидации
- Таймауты запросов
Information:
- Начало и завершение обработки фото
- Создание и завершение задач тегирования
- Получение колбеков
- Изменение стратегии альбома
Debug:
- Детали запросов к провайдерам
- Детали валидации
- Детали работы с БД
Структурированное логирование
Использовать structured logging для удобного поиска и анализа:
{
"timestamp": "2026-01-24T10:30:45.123Z",
"level": "Information",
"message": "Photo recognized successfully",
"properties": {
"photoId": "uuid",
"albumId": "uuid",
"provider": "Athlete",
"duration": 1234,
"facesFound": 3,
"tagsFound": 2
}
}