Простая метрика на оценку успешности работы сервиса

Пусть сервис принимает сообщения из очереди сообщений, обрабатывает их, создает новое сообщение, которое кидает в другую очередь и пишет в БД.

введите сюда описание изображения

Получается, что внешние для сервиса системы (очереди и бд) могут работать с ним в таких сценариях

  • запросы проходят успешно и укладываются в таймауты
  • запросы проходят успешно и не укладываются в таймауты
  • запросы выполняются с ошибками

Сервис умеет поставлять метрики типа timeseries. Как одним графиком показать что сервис работает успешно?

Метрики снимаются Prometheus и сервис на каждое сообщение из входящей очереди поставляет метрику execute_duration_ms{}, которая является временем, затраченным на обработку одного сообщения. В это время входят операции чтения сообщения из входящей очереди, запись в БД и запись сообщения в исходящую очередь.

Можно построить два графика из этой метрики

  • RPS по execute_duration_ms_count
  • 99% перцентиль по execute_duration_ms_bucket

Но, тогда придется анализировать их оба, чтобы понять, что сервис работает исправно.

В идеале иметь очень простой график, вроде

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Oleg Khamov

Возможно, подойдет другое решение этой задачи - навесить алерты на важные показатели. Если все алерты "зеленые" то все ок, а что "покраснело", то и создает проблемы.

Например, весим алерт, что 99% перцентиль ответа от БД в течении 5 минут превышает 20 мс. Или даже можно навесить такой показатель времени ответа на сценарий использования или эндпойнт апи.

→ Ссылка