Какие бизнесовые метрики можно добавить в сервисы
Что проверяют
Отличаете ли вы метрики продукта от метрик процесса. Технические графики отвечают на вопрос «сервис жив», бизнесовые на вопрос «продукт делает то, за что платят», и авария бывает видна только во вторых. Дальше спрашивают, чем вы это снимаете технически и на что настроен алерт.
Как отвечать
Начните с примера, который объясняет смысл: пятисоток нет, задержки в норме, а заказов за час втрое меньше обычного, потому что платёжный провайдер молча отклоняет карты одного банка. Технический мониторинг такое пропустит.
Что осмысленно снимать в сервисе:
- счётчики бизнес-событий: созданные заказы, успешные и отклонённые платежи с тегом причины отказа, регистрации, отправленные уведомления;
- воронка по шагам: сколько дошло от корзины до оплаты. Просадка на конкретном шаге локализует поломку быстрее любого лога;
- длительность бизнес-операций: не время HTTP-запроса, а время от заказа до сборки, от заявки до решения по ней;
- состояние очередей: датчик на число необработанных заявок и на возраст самой старой, это ранний сигнал деградации;
- доля деградаций: сколько ответов ушло из кэша или по резервному сценарию, сколько было ручных вмешательств.
Технически в Java это Micrometer: Counter, Timer, Gauge, DistributionSummary, экспорт через Spring Boot Actuator на /actuator/prometheus, дальше Prometheus и Grafana. Новые проекты всё чаще берут OpenTelemetry и протокол OTLP. Про перцентили скажите отдельно: гистограммы складываются между инстансами, готовые квантили нет, поэтому включают publishPercentileHistogram.
Где спотыкаются
Вешают на метрику теги высокой кардинальности: идентификатор пользователя, заказа, полный URL. Каждое значение это отдельный временной ряд, и хранилище ложится вместе с мониторингом.
Делают метрики источником истины для денег. Они теряются при рестарте и агрегируются приблизительно, финансовые цифры считают по базе, а метрика нужна для скорости реакции.
Заводят дашборд и не заводят алерт. График, на который смотрят только после жалобы клиента, ничем не отличается от отсутствия графика.