Мониторинг с Prometheus: как это работает
Не зная цифр, невозможно эффективно управлять бизнесом, а по-настоящему взвешенные решения принимаются только на основе сбора и анализа метрик. В этой статье поговорим, как собирает метрики Prometheus и почему стандартные базы данных не всегда подходят для этих целей.
В настоящее время Prometheus — одна из наиболее быстрых и мощных систем, предназначенных для сбора аналитики. Архитектура системы состоит из отдельных компонентов, которые сообщаются друг с другом по протоколу http. По сути, всё устроено модно-молодёжно и с web-интерфейсами, плюс настраивается в yaml-конфигах.
Если интересуют подробности, официальную документацию можно почитать здесь.
А, может, лучше использовать MySQL?
Может. Но только в том случае, если у вас небольшой проект, недостаточно знаний в аналитике и ваши данные обновляются нечасто. Во всех остальных случаях стандартные системы управления БД не обеспечат требуемой надёжности и производительности. Продвинутые штуки типа индексов и транзакций — это, конечно, круто, но они лишь замедлят работу БД, а ведь от неё требуется максимальная скорость и безотказность при записи метрик.
Именно поэтому для систем аналитики создана концепция time series database. Речь идёт о системе хранения простых значений, которые привязаны к определённым моментам времени. При реализации данного подхода у любой БД будут 2 измерения — сами значения и момент времени. В результате появляется возможность заранее планировать алгоритмы поиска и обработки значений, плюс выжимать максимум по надёжности и скорости работы. То есть пространство состояний, в которых может находиться данная СУБД, описано хорошо и является предельно малым.
Это неплохой подход к внутренней архитектуре БД, позволяющий быстро записывать много разных метрик, а также выполнять хитрые статистические запросы для получения этих метрик в динамике. А раз именно эти операции и являются единственным предназначением Prometheus, то и выполняются они предельно быстро. Вывод очевиден: раз обычные СУБД рассчитаны на расширенный спектр задач по обработке и записи данных, они всегда будут проигрывать по скорости, если речь идёт о работе с наборами метрик.
Интересная особенность Prometheus
По дефолту в Prometheus предлагается особенная модель сбора статистики. Обычно источники данных обращаются в централизованное хранилище данных, однако Prometheus сам опрашивает всех участников системы, забирая данные. Это так называемый «обратный» подход. У него есть плюсы: — у вас всегда существует единая точка конфигурирования системы сбора статистики; — в этой точке вы можете описать полный список сервисов, у которых необходимо собирать метрики.
Конечно, это удобно. Но есть и минусы: — для каждого сервиса требуется специальный интерфейс; — Prometheus может обращаться к этому интерфейсу со своими запросами, но это уже трудоёмко, неудобно и не всегда возможно.
Кроме вышеописанного способа сбора данных, существует и классическая модель, при реализации которой все системы отчитываются в специальный сборщик метрик (демон). Этот сборщик поставляется в качестве отдельной программы, которая работает в паре с самой БД. А уже Prometheus сам его опрашивает на предмет наличия новых значений по привычному алгоритму.
На картинке ниже сервер Prometheus выполняет опрос целевых объектов и забирает из них метрики (определённые параметры данных объектов). В целях визуализации применяют разные инструменты, к примеру, Grafana:
Советы по использованию мониторинга Prometheus
Prometheus отлично справляется со сбором и бизнес-, и технических метрик. С бизнес-показателями всё просто и понятно — менеджеры ставят задачи, а разработчики реализуют расчёт показателей на сервере и «учат» Prometheus эти показатели собирать и записывать. Именно так реализуется, например, сбор статистических параметров типа выручки, количества заказов, оборота и т. п.
А вот с техническими показателями всё интересней — Prometheus интегрирован с известными облачными сервисами и системами контейнеризации, благодаря чему параметры типа ёмкости дисков и нагрузки на процессоры вы сможете собирать в автоматическом режиме, для чего достаточно будет прописать в конфигурационный файл всего несколько строчек.
А ещё Prometheus очень дружит с Kubernetes — это весьма упрощает работу по сбору и анализу состояний кластера приложений.
Для отрисовки графиков и анализа данных есть много готовых решений. Разработчики и аналитики смогут без проблем подключить к Prometheus одну из систем построения отчётов и довольно быстро получить готовый отчёт по множеству параметров. А в маркетплейсе MCS вы сможете в несколько кликов инсталлировать современную систему мониторинга на основе Grafana, Alertmanager и Prometheus.
Источник — https://mcs.mail.ru/blog/monitoring-s-pomoshchyu-prometheus-kak-eto-rabotaet.