Как стать автором
Обновить
Контур
Делаем сервисы для бизнеса

Собрали метрики из приложения и отдали их пользователям — они рады

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров632

Привет, Хабр. Меня зовут Рогатнев Сергей. Я работаю в Контуре ведущим разработчиком.

Каждое наше приложение пишет множество метрик: системных (потребление CPU, памяти, очереди на диск…) и прикладных (количество операций, время их выполнения, коды ошибок…). Метрики позволяют отслеживать состояние наших сервисов в моменте и отслеживать динамику за определенный период. Мы складываем их в Graphite, а отображаем в Графане:

Различные метрики по запросам
Различные метрики по запросам

Среди множества наших сервисов есть один, которой занимается обменом данными с одной государственной системой — Ветис.API. Чем эта система занимается не так важно, важно то, что стабильность этого API критически важна для функционирования бизнеса. В том числе и для ~19 000 клиентов Контура, которые интегрированы с государством через наши продукты.

Поэтому, как всякий уважающий себя проект, мы обложились метриками на взаимодействие с этим API вдоль и поперек, настроили себе разных графиков, по которым отслеживаем стабильность нашего взаимодействия, скорость обработки операций, наличие ошибок, их количество и состав. На основе этого мы с очень большой вероятностью можем сказать, на чьей стороне проблема, как хорошо отвечает Ветис.API, какие конкретно операции тормозят, доступен ли он для взаимодействия вообще.

Опираясь на эти метрики, мы можем предметно обсуждать проблемы с нашими клиентами и даже с разработчиками Ветис.API.

Мониторинг доступности

Запрос вида «А как там Ветис.API?» довольно актуален и у наших клиентов. Важно отделить проблемы клиента, наши проблемы и проблемы на стороне Ветис.API. И мы решили дать им ту информацию, что есть у нас, информацию из тех метрик, что мы собираем по взаимодействию с Ветис.API.

Но как это сделать? Самым простым способом на тот момент казалось выставить наши графики в Графане на отдельную страничку в интернет. Но здесь несколько проблем.

  • Проблема самих данных и их отображение

Графики создавались для команды разработки, их много в разных разрезах по типам операций, по перцентилям. Не каждый пользователь сможет в этом разобраться.

Метрики по операциям Ветис.API в разных разрезах.
Метрики по операциям Ветис.API в разных разрезах.
  • Проблема безопасности

Мы не можем дать доступ к нашей Графане всем пользователям в интернете.

Но данные‑то у нас по прежнему есть — те самые метрики, которые мы аккуратно складываем в хранилище. Значит нужно их достать и показать пользователям в удобном и наглядном формате.

Готовой библиотеки для получения метрик не было, поэтому мы быстренько написали свою. Получив только нужные метрики, мы собрали их в небольшой сервис для наших клиентов:

Из всего многообразия метрик мы выбрали две ключевые для наших клиентов — время обработки одной операции на стороне Ветис.API и доступность самого API.

Определили некие пороговые значения для времени выполнения каждой операции. Разделили их на 3 уровня:

  • быстро — стабильная работа, закрашиваем интервал зеленым

  • замедленная — выше чем обычно, но не критично для работы

  • медленно — оказывает существенное влияние на работу.

А доступность определяем относительно просто: получили N ошибок с кодом 5xx за время t — считаем API недоступным для работы.

Статистика за 24 часа позволяет отслеживать динамику по этим показателям.

Уведомления

Одной из главной ценностей нового сервиса было то, что он мог ответить на вопрос «Работает ли Ветис.API?». В моменты каких‑то проблем мы видели резко возросшую посещаемость нашего нового сервиса. Но это была реакция пользователей на какие‑то проблемы в их учетных системах — что‑то тормозило и они шли на наш сервис проверять, является ли проблема массовой. И там они могли узнать, допустим, что Ветис.API недоступен или наблюдаются задержки в обработке операций.

Имея на руках всю необходимую информацию, мы сделали очевидное улучшение и стали уведомлять пользователей о проблемах в специальном телеграм‑канале:

Уведомления во время недоступности Ветис.API
Уведомления во время недоступности Ветис.API

Наш сервис отслеживает доступность API и информирует клиентов в самом начале появления проблем.

А какая польза?

Так на основе массива метрик одного приложения мы сделали полезный сервис для наших клиентов. С тех пор каждый день наблюдаем активность:

Количество просмотров мониторинга за день
Количество просмотров мониторинга за день

На наш сервис регулярно ссылаются в профильных группах — пользователи находят подтверждение массовых сбоев или наоборот удостоверяются, что это локальные проблемы. На уведомления подписались более 1800 человек.

А команды разработки получили библиотеку для получения метрик в своих приложениях.

Теги:
Хабы:
+3
Комментарии0

Публикации

Информация

Сайт
tech.kontur.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия
Представитель
Варя Домрачева