Торговля под присмотром: пример системы бизнес-мониторинга
Инструментов мониторинга ИТ-инфраструктуры существует много десятков, если не сотни. Есть бесспорные народные любимцы вроде Zabbix, с помощью которых можно сваять мониторинг для компании средней руки, и легион утилит, сервисов и мощных пакетов на любой вкус и размер.
А вот с бизнес-мониторингом всё сложнее. На рынке не сказать чтобы много готовых продуктов, на основе которых можно быстренько собрать дашборд, чтобы высокое начальство могло отслеживать уровень продаж и расторопность доставки. Обычно бизнес-мониторинг представляет собой узкоспециализированный проект, который делается для данной конкретной компании, с учётом особенностей её информационных систем. О подобном проекте — наш рассказ.
Одному нашему клиенту понадобилась система бизнес-мониторинга, которая в удобном виде сводит и наглядно показывает текущие показатели бизнеса. Например, как идут продажи, выросли они или упали по сравнению с тем же временем предыдущего периода, в каких филиалах торговля идёт бойчее, как работают разные сервисы, как оформляются кредиты на покупки, объём оплат через онлайн-каналы, распределение по видам доставки и так далее.
В то время мы как раз пробовали разные APM-решения (application performance monitoring). И среди них нам понравилась Instana. Довольно свежий продукт, вероятно, поэтому дешевле конкурентов. К тому же и технологии в Instana использованы свежие — Cassandra, Kafka, Elastic Search. Система способна прослеживать всё насквозь от самого железа до конечного сервиса и конечного пользователя. Также в Instana два уровня отображения данных мониторинга. Первый уровень — инфраструктура, состояние железа и ПО: операционные системы, приложения, контейнеры и прочее. Второй уровень — бизнес-логика: сервисы в приложении, их взаимодействие друг с другом. Например, можно отслеживать работу сервиса корзины в интернет-магазине. При этом сервис может состоять из группы микросервисов: один подсчитывает общую стоимость, второй подтягивает промо-акции, третий вычисляет стоимость доставки.
Для администрирования Instana очень удобна: есть различные виды поиска, гранулярность данных (в отличие от конкурентов) — всего 1 секунда. У конкурентов обычно усредняются данные за минуту, при этом нагрузка вырастает до 30%, и чем меньше гранулярность, тем выше нагрузка. У Instana же данные собираются каждую секунду и нагрузка на приложение минимальна — до 5%. Благодаря этому можно отслеживать самые короткие перебои, ошибки, рост нагрузки и прочее.
Ещё одно из преимуществ продукта — корреляция событий. Допустим, на сервере возникла проблема, которая потянула за собой прикладное приложение и соответствующий сервис — в итоге конечные пользователи столкнулись со сбоями и ошибками на сайте. Instana коррелирует все события, по которым срабатывают триггеры, и выдает инженеру один инцидент, в котором описывается вся причинно-следственная цепочка. Это помогает сразу найти источник бед.
В общем, нам Instana понравилась и мы пришли с ней к заказчику. Там на неё посмотрели и сказали, что всё очень красиво. Для админа. А им нужен более простой и наглядный инструмент — для бизнес-пользователей. Чтобы те могли в режиме реального времени видеть причины падения тех или иных бизнес-показателей.
Начали думать, как реализовать все требования по бизнес-мониторингу и простоту отображения. Радовало, что в Instana есть удобные API для получения всех нужных метрик из имевшихся у заказчика систем.
Перепробовали кучу алгоритмов и подходов. Готовое решение написали на Ruby on Rails, использовали Redis, связку Elastic Search и данных из БД. Туда зашили логику на основе машинного обучения для всяческих триггеров. То есть система сама учится, по каким пороговым значениям нужно включать «красные лампочки»: проводит технический анализ всех данных, по которым нужны триггеры, сравнивает разные факторы и автоматически выставляет пороги. Допустим, днем идёт по 100 заказов в пять минут, а ночью — по 10. В Zabbix пороговые значения прописываются вручную. Но бизнес растёт, изменяется, и приходится постоянно корректировать пороговые значения по многим показателям. Instana благодаря машинному обучению способна понять, что днем заказов явно больше, чем ночью, и самостоятельно рассчитать адекватные пороговые значения.
Это что касается бизнес-метрик. Если брать метрики технические, то система мониторинга должна знать, как себя ведёт каждая технология, как использует ресурсы, насколько резкими могут быть изменения. Если поведение не соответствует заложенному шаблону, загорается «красная лампочка». При этом «шаблон» — это сложный алгоритм, а не просто какие-то пороговые значения.
Instana собирает метрики из различных систем заказчика и передаёт в наш дашборд, где всё это наглядно и просто визуализируется.
На главной странице можно посмотреть количество заказов, выручку, количество клиентов. Всё это коррелируется с ценами и складскими остатками. Также можно посмотреть доступность сайта и количество ошибок в различных сервисах.
Здесь можно увидеть среднее количество заказов за каждый час, а цвет ячейки отражает разницу между текущим и средним значением за тот же час в тот же день недели в течение месяца. Если сегодня заказов больше, чем среднее значение за предыдущий период, ячейка зелёная, если меньше — красная. Справа графики по типу оплаты и доставки оформленных заказов, а также ошибки на основных сервисах, отвечающие за оформление. Можно применить фильтр и выбрать самые проблемные периоды, чтобы потом искать причины.
Если кликнуть мышью на график, то мы «проваливаемся» в него и видим конкретные трейсы с ошибками за этот период. Выводятся подробные данные: где происходили ошибки, какие именно, вплоть до декомпиляции кода: на каком методе и в каком классе.
В дашборде можно отслеживать успешность выполнения основных заданий по обработке данных, и если они еще выполняются, то через сколько завершатся. Например, нужно обновить цены и ассортимент на сайте. Информация о товарах и ценах в течение дня выгружается из нескольких систем, а ночью обрабатывается. 43 задания выполняются в течение 6 часов: на одни уходят минуты, на другие — часы. И бизнес-пользователям нужно понимать, какие задания выполнились, какие упали, когда закончились.
Мы реализовали интересную функцию: в дашборе можно увидеть, кто из пользователей ушёл из интернет-магазина, ничего не купив из-за ошибок на самом сайте или в связанном с ним ПО. Причём показывается, какая именно ошибка сорвала каждую из сделок. Между прочим, задача вовсе не праздная, учитывая количество посещений и объём продаж через интернет-магазин.
Выводится вся информация по каждому ушедшему клиенту: контактная информация, оформленные заказы и те, которые не удалось оформить. Сотрудники колл-центра могут позвонить, отправить SMS или письмо, вроде такого:»Мы видим, что вы хотели купить у нас смартфон, но столкнулись с затруднением. Инженеры уже разбираются с этим. Вот вам промокод, возвращайтесь завтра и купите смартфон со скидкой».
На другой вкладке можно посмотреть ситуацию в филиалах: объёмы продаж, количество заказов, остатки на складах, статус обработки новых цен и так далее. Всё это в тесной связке с Instana.
Наша система может коррелировать самые разные бизнес-метрики с техническими метриками, собирая данные из различных систем — той же Instana (но не обязательно, на её месте может быть и другая система мониторинга), из всевозможных баз данных, из хранилища логов.
Заказчик нашу систему пока тестирует. Что касается дальнейших перспектив решения — его, конечно, нужно адаптировать под задачи того или иного конкретного бизнеса. Но после некоторого количества уже собранных на этой ниве граблей, сделать такое будет куда быстрее и проще. А сфер применения бизнес-мониторинга масса — по сути это любой бизнес, где есть необходимость отслеживать в реальном времени работу бизнес-приложений и связанных с ними бизнес-метрик.
Сервисный центр компании «Инфосистемы Джет». Группа поддержки CRM и web-приложений.