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

Инструменты мониторинга приложений

При запуске каждой новой фичи для разработчиков обычно заводятся таски по созданию механизмов измерения метрик, связанных с новой функцией. Часто это решается готовыми сервисами, отслеживающими различные аспекты поведения пользователя: Google Analytics, Яндекс.Метрика, Mixpanel. Эти сборщики статистики легко интегрируются в любой продукт и предоставляют необходимый минимум информации об эффективности вашего софта.

Но у готовых сервисов есть недостаток – они уже готовые! В смысле, что в них нельзя легко залезть и добавить какие-то свои хитрые методы анализа данных, поменять в них что-то под себя. Например, готовыми средствами невозможно (или крайне сложно) пересечь метрики проекта с данными по нагрузке на серверы. Или использовать методы из классической статистики для вычисления специфических параметров. Или сгруппировать метрики между собой по определенными правилам. Все эти штуки здорово облегчают понимание ситуации для менеджеров, но этих инструментов в готовых системах сбора и хранения метрик просто нет!

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

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

Graphite

Graphite — инструмент, который начали разрабатывать в далеком 2008 году, написан на языке Python.

Состоит из трех независимых частей:

  • Carbon — демон, который принимает входящие данные от приложений.
  • Whisper — простенькая база данных, агрегирующая статистику и раскладывающая ее по определенным правилам.
  • Graphite — веб-приложение, отрисовывающее стату в устаревшем, негибком и тяжеловесном интерфейсе.

В целом, это решение довольно надежное и включает в себя все необходимые части для сбора и анализа метрик проекта. Но, к сожалению, медленное (Python хорош, но фантастической скорости работы не обеспечит) и некрасивое. Зато довольно простое в настройке.

Prometheus

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

Отличается огромной скоростью работы, надежность и отказоустойчивостью. Prometheus monitoring написан на языке Go, славящимся своей быстротой. Из минусов можно отметить не самую понятную систему просмотра статистики и некоторое неудобство отправки данных в базу.

Прекрасное решение для продуктов, собирающих большое количество метрик – в Prometheus скорость (как чтения, так и записи) выше всяких похвал. И настроенный инструмент можно получить в виде облачного сервиса.

InfluxDB

Еще одна скоростная база данных на языке Go. Influx разрабатывался не как внутренний проект, а как полноценный продукт для IT-рынка. Разработчики сделали максимальный упор на гибкость. Поэтому InfluxDB умеет принимать данные в простом и легко настраиваемом формате, позволяющем выстраивать сбор статистики именно так, как нужно вашему бизнес.

С данными потом можно работать с помощью встроенного SQL-подобного языка запросов. Аналитики, уже умеющие писать запросы на подобных языках, за пару минут могут собирать очень сложные и информативные отчеты по самым разным параметрам, хранящимся в БД.

Influx по скорости и надежности почти идентичен Prometheus, но гибкость работы с метриками проекта уделывает все остальные продукты на рынке.

Grafana

Говоря о метриках, нельзя обойти стороной Grafana. Это не база данных, а утилита для метрик проекта из систем сбора статистики. Она умеет подключаться к любой базе данных с метриками, рисовать графики, анализировать тренды и слать уведомления менеджерам и разработчиками.

Мониторинг Grafana пригодится при работе с абсолютно любой системой сбора данных — на сегодня нет более красивого, понятного и гибкого продукта для анализа метрик.

Без мониторинга приложений приезжаешь в никуда

Аккуратная и точная работа с метриками проекта — единственный способ принимать осознанные и правильные решения при разработке программных проектов. Чем раньше вы начнёте собирать данные о всем происходящем в вашей системе (конверсии, время жизни юзера в системе, средние суммы заказов, количество сбоев, рост аудитории и многие другие) — тем раньше вы увидите проблемы продукта и возможности для его роста.

Недостаточно внедрить у себя Google Analytics или Mixpanel — масса полезной и нужной инфы просто уплывет у вас из под носа. Собирайте статистику с помощью Grafana, Prometheus, Graphite, InfluxDB сегодня, чтобы знать, куда вы двинетесь завтра.