Для мониторинга были выбраны метрики трех типов.
1. Бизнес-метрики
-
Квантили предсказаний модели:
Анализ предсказаний позволяет выявлять отклонения в работе модели, например, в результате изменения распределения во входных данных, из-за чего может возникнуть необходимость дообучения модели. При этом для мониторинга лучше использовать квантили, чтобы игнорировать выбросы.PromQL-запросы:
histogram_quantile(0.05, ml_service_predictions_bucket) histogram_quantile(0.5, ml_service_predictions_bucket) histogram_quantile(0.95, ml_service_predictions_bucket)
2. Метрики прикладного уровня
-
Количество запросов с неправильными параметрами:
При отправке таких запросов пользователь получит вместо предсказания описание ошибки, но код статуса при этом все равно будет равен 200. Поэтому такие запросы желательно учитывать отдельно, когда считаем, например, среднее предсказание. В связи с этим на дашборде показываем общее количество таких запросов к текущему моменту времени.PromQL-запрос:
ml_service_err_requests_total
-
Количество запросов в секунду к основной странице (трафик):
Позволяет оценивать интенсивность обращений к приложению, выявлять паттерны в изменении трафика и соотвествующим образом масштабировать сервис.PromQL-запрос:
rate(http_request_duration_seconds_count{handler='/predict', instance="ml_service:1702", job="scrapping-main-app", method="POST"}[1m])
-
Среднее время обработки одного запроса к основной странице (задержка):
Позволяет по резким всплескам во времени обслуживания выявлять перегруженность или сбои в работе сервиса.PromQL-запрос:
http_request_duration_seconds_sum{handler='/predict', instance="ml_service:1702", job="scrapping-main-app", method="POST"} / http_request_duration_seconds_count{handler='/predict', instance="ml_service:1702", job="scrapping-main-app", method="POST"}
3. Метрики инфраструктурного уровня
Эти метрики нужны, чтобы следить за потреблением ресурсов, оптимизировать их распределение,
прогнозировать критические ситуации итд.
-
Использование CPU
PromQL-запрос:
process_cpu_seconds_total
-
Использование RAM
PromQL-запрос:
process_virtual_memory_bytes
Дашборд состоит из 6 панелей в соответствии с выбранными метриками:
- Квантили предсказаний модели,
- Количество запросов с неправильными параметрами,
- Количество запросов в секунду (трафик),
- Среднее время обработки одного запроса (задержка),
- Использование CPU,
- Использование RAM.