Простая метрика на оценку успешности работы сервиса
Пусть сервис принимает сообщения из очереди сообщений, обрабатывает их, создает новое сообщение, которое кидает в другую очередь и пишет в БД.
Получается, что внешние для сервиса системы (очереди и бд) могут работать с ним в таких сценариях
- запросы проходят успешно и укладываются в таймауты
- запросы проходят успешно и не укладываются в таймауты
- запросы выполняются с ошибками
Сервис умеет поставлять метрики типа timeseries. Как одним графиком показать что сервис работает успешно?
Метрики снимаются Prometheus и сервис на каждое сообщение из входящей очереди поставляет метрику execute_duration_ms{}, которая является временем, затраченным на обработку одного сообщения. В это время входят операции чтения сообщения из входящей очереди, запись в БД и запись сообщения в исходящую очередь.
Можно построить два графика из этой метрики
- RPS по execute_duration_ms_count
- 99% перцентиль по execute_duration_ms_bucket
Но, тогда придется анализировать их оба, чтобы понять, что сервис работает исправно.
В идеале иметь очень простой график, вроде
Ответы (1 шт):
Возможно, подойдет другое решение этой задачи - навесить алерты на важные показатели. Если все алерты "зеленые" то все ок, а что "покраснело", то и создает проблемы.
Например, весим алерт, что 99% перцентиль ответа от БД в течении 5 минут превышает 20 мс. Или даже можно навесить такой показатель времени ответа на сценарий использования или эндпойнт апи.

