Мониторинг с помощью Prometheus: как это работает
IT-продукт без метрик — как корабль без руля и ветрил. Метрики нужно собирать, анализировать и только на основе их значений принимать решения. Поговорим о том, что такое Prometheus, как он собирает метрики и почему для этого не всегда подходят стандартные базы данных.
Как появился Prometheus
Управление бизнесом без знания цифр — невозможно. Для принятия взвешенных решений нужно знать ключевые бизнес-метрики: выручку, прибыль, количество заказов, количество активных пользователей, плюс как можно больше менее значимых параметров: распределение активности пользователей по регионам, самые популярные продукты на сайте, загрузка серверов. Только владея всей этой аналитической информацией можно понять, где вы находитесь в море бизнеса и куда нужно грести.
В 2012 году онлайн-платформа для распространения звуковых треков SoundCloud озадачилась поиском нового инструмента для аналитики. Взвесив все варианты и попробовав всё, что было на рынке в тот момент, в компании принялись за разработку своего решения.
В то время аналитические СУБД были либо слишком сложными, либо слишком ненадежными и медленными. В то же время начал набирать популярность язык Go. Система сбора метрик на Go могла стать на порядок круче аналогов, поэтому разработчики из SoundCloud решили написать собственный инструмент на нем.
Почему для сбора метрик нельзя использовать, скажем, MySQL?
Можно! Если у вас небольшой проект, малое количество значений в аналитике и данные редко обновляются — еще как можно. В остальных случаях стандартные СУБД не могут обеспечить нужной производительности и надежности. Все эти классные штуки типа индексов и транзакций, важные в других случаях, только замедляют работу базы данных, от которой требуется максимальная скорость и безотказность в записи метрик.
Поэтому для систем аналитики разработали концепцию time series database — систему хранения простых значений, привязанных к определенным моментам времени. У любой базы при таком подходе будет два измерения — момент времени и сами значения. Такой предельно простой подход к структуре хранимой информации позволяет заранее спланировать алгоритмы поиска и обработки значений, а также выжать максимальную скорость работы и надежность. Пространство состояний, в которых может находиться такая СУБД, предельно мало и хорошо описано.
Одна маленькая особенность Прометеуса
В нем по умолчанию предлагается интересная модель сбора статистики. Вместо того, чтобы источники данных обращались в централизованное хранилище данных, Prometheus сам опрашивает всех участников системы и забирает данные.
У этого «обратного» подхода есть плюсы и минусы. Плюсы — в том, что у вас всегда есть единая точка конфигурирования системы сбора статистики, и в этой точке можно описать полный набор сервисов, у которых надо собирать метрики. Это удобно! Минус же в том, что для каждого сервиса нужен специальный интерфейс, к которому Prometheus сможет обращаться со своими запросами, — это неудобно, трудоемко и не всегда возможно.
Помимо такого метода сбора данных, есть и классическая модель, когда все системы отчитываются в специальный демон-сборщик метрик — он поставляется в виде отдельной программы, работающей в паре с самой базой данных. А Prometheus уже сам опрашивает его на предмет новых значений по привычной механике.
Как пользоваться мониторингом Prometheus
Prometheus прекрасно справляется со сбором как бизнес, так и технических метрик: выручка за день, количество активных пользователей, свободное место на жестких дисках, нагрузка на процессоры и так далее.
С бизнес-показателями всё понятно — менеджеры ставят задачи, программисты реализуют расчет показателей на сервере, учат Прометеус правильно их собирать и записывать. Сбор статистических параметров вроде выручки, оборота и количества заказов реализуется именно так.
С техническими показателями всё намного интересней — Prometheus глубоко интегрирован с многими облачными сервисами и системами контейнеризации, так что параметры типа нагрузки на процессоры и емкость дисков можно собирать в автоматическом режиме, прописав несколько строчек конфигурационного файла.
Для анализа данных и отрисовки графиков из этого инструмента есть множество готовых решений. Аналитики и разработчики могут легко подключить к Prometheus одну из десятков систем построения отчетов и быстро получить готовый отчет по куче параметров. В маркетплейсе VK можно в несколько кликов установить современную систему мониторинга на основе Grafana, Prometheus и Alertmanager.