Попалась на глаза англоязычная статья со сравнением
Prometheus и Zabbix. Решил тезисно перевести её для вас. Тема достаточно горячая, постоянно вызывает споры. Напомню, что подобное
сравнение когда-то делал и я.
В статье автор называет обе системы мониторинга наиболее популярными, поэтому именно их и сравнивает.
Prometheus - система мониторинга с мощным встроенным языком запросов promql, использующая для хранения данных собственную time-series database. Способна собирать и обрабатывать метрики в режиме реального времени. Написана на GO. Prometheus имеет нативную поддержку со стороны Docker и Kubernetes.
Zabbix в основном нацелен на сбор данных с сетевых устройств, серверов, приложений, виртуальных машин. Он не только собирает метрики, но и отображает их, определяет проблемы, рассылает предупреждения, имеет свой собственный веб интерфейс для управления, написанный на php. Бэкенд у Zabbix написан на C, в качестве БД может использовать Mysql или PostgreSQL + TimescaleDB.
Сбор метрикУ Prometheus сбор метрик максимально автоматизирован за счет того, что его поддерживает огромное количество софта, который имеет экспортеры для выгрузки данных в формате Prometheus. Требуется минимум ручной работы для настройки мониторинга в том числе с автообнаружением. Данные сами поступают в мониторинг с наблюдаемых хостов и приложений.
Zabbix изначально был ориентирован на мониторинг железа и отдельных хостов с помощью zabbix agent, который надо устанавливать. Агенты собирают данные и отправляют на сервер по его запросу, либо принудительно. Помимо установки агентов, данные можно собирать в безагентном режиме по snmp или ipmi.
Хранение данныхPrometheus хранит данные в собственной Time Series Database (TSDB). Производительность этой БД позволяет принимать и обрабатывать данные быстрее, чем какая-либо другая система мониторинга. Допустимо разделять данные по времени даже на уровне миллисекунд. По дефолту данные хранятся только 14 дней. Для долгосрочного хранения надо настраивать отдельные внешние storage.
Zabbix хранит данные во внешних БД: MySQL, PostgreSQL, Oracle, IBM DB2, и SQLite
(эта вроде бы уже не поддерживается). Большое отличие Zabbix от Prometheus в том, что первый может хранить не только числовые значения временных рядов, но и текстовые значения, и целые логи в исходном виде.
ЗапросыУ Prometheus свой многофункциональный и гибкий язык запросов PromQL. В него встроены фильтры, группировки, сортировки, регулярные выражения и т.д. Большой простор для формирования данных. У Zabbix тоже свой отдельный синтаксис запросов, но гораздо более бедный и не такой функциональный. Он привязан к ключам и метрикам
(новый синтаксис в 5.4 частично решил эту проблему и добавил гибкости).
ВизуализацияУ самого Prometheus очень ограниченные возможности визуализации через встроенный Expression Browser. Его обычно используют в связке с Grafana. Zabbix имеет свои нативные и функциональные инструменты для визуализации данных, тем не менее, уступающие по функционалу Grafana, но превосходящие Prometheus. При этом сам Zabbix также может интегрироваться с Grafana.
ОповещенияPrometheus использует внешний Alertmanager для отправки уведомлений на события. Он в том числе умеет группировать схожие и повторяющиеся оповещения, чтобы не создавать кучу дубликатов. У Zabbix своя встроенная система оповещений с очень разнообразной и многоступенчатой настройкой. Кроме отправки уведомлений, она умеет выполнять другие действия, например, запуск скриптов на целевых машинах. Оповещения можно очень гибко настраивать по интервалам отправки, группам пользователей, важности и т.д.
ЗаключениеОба продукта хороши для мониторинга, при этом Prometheus более современный. Каждый имеет свои сильные и слабые стороны, поэтому свой выбор стоит основывать на конкретной ситуации и проблеме, которую вы собираетесь решать.
#zabbix #мониторинг #devops