Как стать автором
Обновить
211.98
Serverspace
IT-инфраструктура | Удвоение платежа по коду HABR

Сравниваем инструменты мониторинга IT-инфраструктуры Zabbix, Icinga, Prometheus

Время на прочтение10 мин
Количество просмотров33K

Инструменты мониторинга IT-инфраструктуры позволяют полностью отслеживать ее состояние: собирать данные, анализировать и визуализировать их, оповещать о сбоях и т.д. В этой статье рассмотрим платформы Zabbix, Icinga и Prometheus.

Что это за инструменты?

Zabbix

Начну со старшего поколения (2001 г.) – Zabbix. Решение с открытым исходным кодом, впрочем как и все остальные, основанное на GPL (стандартная общественная лицензия). Это делает его бесплатным для использования. 

На данный момент у программы множество версий. Самая популярная версия — 5.0 LTS с пятилетней долгосрочной поддержкой, которая подходит для производственной среды. А недавно была выпущена версия 6.0 LTS. В плане развития компании сообщается о возможности выпуска и дополнительных версий — вплоть до 7.0 LTS.

Zabbix мониторинг. Источник: https://www.zabbix.com/
Zabbix мониторинг. Источник: https://www.zabbix.com/

Icinga

icinga представляет из себя модульную систему мониторинга с открытым исходным кодом, изначально созданная как ответвление от Nagios. Позволяет наблюдать за состоянием серверной инфраструктуры, сервисов, роутеров и т.д. Icinga 2 предлагает как прямой мониторинг, так и поддержку SNMP для серверов и других устройств. Ее используют для снятия метрик и алертов по хостам и их сервисам.

В отличии от первой версии Icinga, во второй – было переписано ядро. Структура Icinga оптимизирована для развертывания распределенных систем мониторинга, при которой возможно создание нескольких агентов мониторинга, осуществляющих проверки и направляющих результаты на основной узел.

Icinga web. Источник: https://github.com/translaster/icingaweb2-ru
Icinga web. Источник: https://github.com/translaster/icingaweb2-ru

Prometheus

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

Все компоненты Prometheus доступны по лицензии Apache 2 на GitHub. Это не мешает крупным компаниям использовать эту систему в качестве ключевого элемента инфраструктуры (среди клиентов есть, например, DigitalOcean, Docker, Showmax или SoundCloud).

Prometheus мониторинг. Источник: https://developers.soundcloud.com/
Prometheus мониторинг. Источник: https://developers.soundcloud.com/

Чтобы наблюдать и анализировать графики в полной мере, лучше установить полноценный инструмент визуализации. Часто для этого используют интеграцию с Grafana, тем более она включает встроенную поддержку Prometheus.

Grafana подключается ко всем возможным источникам данных таким, как Graphite, Prometheus (об этом сочетании поговорим далее), Influx DB, Elastic Search, MySQL, PostgreSQL и т. д.

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

Grafana мониторинг. Источник: https://grafana.com/grafana/
Grafana мониторинг. Источник: https://grafana.com/grafana/

Мы в Serverspace сами используем Grafana для отслеживания состояния нашей инфраструктуры. В офисе у нас висят информационные экраны, на которых транслируется вся информация: выручка, скорость создания серверов, какие операционные системы используются чаще всего, на каких создано больше серверов и т.д. Для сбора данных используем Microsoft SQL. 

Например, на скриншоте отображена метрика: скорость создания VM. По этим графикам определяем, что есть проблема с Windows и немного с CentOS (средняя скорость должна быть 40 секунд, а сейчас 52,4), поэтому отправляем задачу на решение нашему саппорту.

График времени создания VM
График времени создания VM

В чем же отличия инструментов мониторинга?

Zabbix, Icinga и Prometheus выполняют функции мониторинга серверной инфраструктуры и оповещения. Настроить можно для разных устройств и систем. Они отличаются технологиями и инструментами. Разбираем по основным критериям.

Архитектура и сбор данных

Zabbix

С точки зрения архитектуры Zabbix состоит из нескольких программных компонентов: сервер, база данных, веб-интерфейс, прокси и агенты.

Архитектура Zabbix. Источник: https://subscription.packtpub.com/
Архитектура Zabbix. Источник: https://subscription.packtpub.com/

Zabbix сервер является центральным компонентом, которому агенты сообщают статистику и информацию о доступности и целостности. Он отвечает за прием, агрегацию и обработку данных, а также за генерацию событий и обнаружение аномалий. Для любых событий можно использовать различные виды обработки – e-mail, webhook, скрипты и т.д. В базе данных хранится вся информация о конфигурации, а также данные, собранные Zabbix.

Агенты Zabbix локально собирают метрики ОС. Они могут работать как в пассивном, так и в активном режимах. В пассивном режиме агенты обрабатывают запрос от сервера вместе со списком параметров, которые он должен контролировать, и возвращает ему собранные данные. В активном режиме агент первым устанавливает связь с сервером и регулярно отправляет ему данные. 

Дополнительный элемент – прокси-сервер Zabbix, обеспечивающий связь между агентами и сервером Zabbix.Такое решение целесообразно применять в геораспределенной сети, например, между отделами компании, местами с плохой связью. Прокси Zabbix и агенты Zabbix, как и сервер, написаны на языке C.

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

Icinga

Icinga2 написана на C++ и имеет модульную архитектуру с отдельным ядром, пользовательским интерфейсом и базой данных, в которые можно интегрировать различные дополнения и расширения. Управляет задачами по мониторингу, запускает проверки служб, занимается отправкой уведомлений.

Изначально Icinga является ответвлением от Nagios, поэтому отличается от него переработанной архитектурой, переведенной на использование прослоек IDOMOD и IDO2DB, позволяющих организовать хранение данных мониторинга и конфигурационной информации в СУБД MySQL, Oracle или PostgreSQL.

Nagios архитектура. Источник: https://coderlessons.com/tutorials/devops/vyuchi-nagios/nagios-arkhitektura
Nagios архитектура. Источник: https://coderlessons.com/tutorials/devops/vyuchi-nagios/nagios-arkhitektura

В состав Icinga входит модульный web-интерфейс, написанный на языке PHP, активно использующий AJAX и и предоставляющий статистику в виде графиков. Для обеспечения интеграции с внешними сервисами предусмотрено несколько API: XML, JSON, SOAP.

Nagios архитектура. Источник: Wikipedia
Nagios архитектура. Источник: Wikipedia

Prometheus

Архитектура Prometheus состоит из сервера, считывающего, агрегирующего и анализирующего данные и сохраняющего их в базе, push шлюза для приёма метрик, клиентских библиотек, менеджера уведомлений AlertManager, инструментов для экспорта данных из сторонних приложений, клиента командной строки для выполнения запросов к данным. Большинство из этих компонентов написаны на Go, и взаимодействуют по протоколу HTTP.

Архитектура Prometheus. Источник: https://prometheus.io/
Архитектура Prometheus. Источник: https://prometheus.io/

Prometheus собирает метрики на основе методов push и pull. В первом методе отслеживаемое приложение отвечает за отправку метрик в систему мониторинга с помощью Push шлюза. В методе pull приложение подготавливает метрики, а Prometheus решает, когда их скачивать, исходя из правил. Prometheus имеет эффективную встроенную базу данных временных рядов, поэтому информация о метриках хранится с отметкой времени, когда они были записаны.

В Prometheus используется язык PromQL (Prometheus Query Language), используемый для запросов и агрегирования данных мониторинга в режиме реального времени с использованием операторов и функций. Для автоматизации мониторинга используется Alertmanager, которое генерирует и отправляет оповещения при соблюдении определенных условий. 

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

В этом сочетании Prometheus будет основным уровнем для очистки и хранения данных, тогда как Grafana отвечает за получение данных с сервера Prometheus с помощью источника данных.

Хранение данных

Zabbix

Zabbix использует внешнюю базу данных для хранения инфы. БД Zabbix нужно создавать во время его установки. Поддерживаются: MySQL, PostgreSQL, Oracle, IBM DB2 и SQLite.

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

Icinga

Icinga Data Out Database (IDODB) является точкой хранения данных мониторинга для надстроек или веб-интерфейса и предназначен для вывода всех данных системы мониторинга в базу данных. Поддерживает такие БД, как MySQL, Oracle Database, PostgreSQL.

Prometheus

Prometheus хранит данные в виде time-series database. Имея локальную БД, он может получать и обрабатывать больше метрик, чем другие системы. 

Prometheus не подходит для текста, журналов или журналов событий. Если вы используете свой Prometheus с Grafana (является наиболее распространенным сочетанием), вы можете найти обходной путь, используя Loki Grafana. Хотя для логов лучше использовать специализированные продукты.

Запросы

Zabbix

В Zabbix есть item keys, которые используют связь с агентом Zabbix для сбора данных и получения метрик. Различают пассивные и активные проверки агентов. При настройке элемента можно выбрать необходимый тип: Zabbix агент – для пассивных проверок или Zabbix агент (активный) - для активных проверок. Поддерживаемые item keys можно увидеть здесь. Для работы с базой данных используется SQL.

Icinga

Как и в Zabbix здесь используется язык запросов SQL.

Prometheus

Более гибок. Prometheus предоставляет собственный язык для запросов, который называется PromQL. Он может применять функции и операторы к запросам метрик, фильтровать, группировать по меткам и использовать регулярные выражения для улучшения сопоставления и фильтрации. Результат выражения можно отобразить в виде графика, просмотреть в виде табличных данных в браузере или использовать внешние системы через HTTP API.

UI

Zabbix

У Zabbix есть собственный веб-интерфейс с гибкими настройками. Можно настроить информационные панели на основе виджетов, сделать графики, карты сети, слайд-шоу и детализированные отчеты. По умолчанию интерфейс Zabbix предоставляет несколько предопределенных тем, но можно создавать свои собственные дашборды.

Zabbix визуализация. Источник: https://ru.wikipedia.org/wiki/Zabbix
Zabbix визуализация. Источник: https://ru.wikipedia.org/wiki/Zabbix

Icinga

У Icinga довольно простой web-интерфейс, написанный на PHP. Это доступная панель для отслеживания данных, позволяющая расширять функции с помощью дополнительных модулей. Можно настроить интеграцию с помощью Grafana. Однако, если говорить про ux он не совсем удобен, поэтому лучше настроить интеграцию.

Icinga web. Источник: https://icinga.com/blog/2016/03/01/icinga-web-2-v2-2-0-released/
Icinga web. Источник: https://icinga.com/blog/2016/03/01/icinga-web-2-v2-2-0-released/

Prometheus

У Prometheus есть Expression Browser. Но он не является полноценной панелью визуализации. Его можно использовать для выполнения углубленных запросов к сохраненным метрикам. Работает как консоль, позволяя вам делать запросы к базе данных, изменять запрос и узнавать ответы на свои вопросы.

Prometheus визуализация. Источник: https://www.opsramp.com
Prometheus визуализация. Источник: https://www.opsramp.com

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

Визуализация Prometheus с помощью Grafana. Источник: https://prometheus.io
Визуализация Prometheus с помощью Grafana. Источник: https://prometheus.io

Оповещение

Zabbix

В Zabbix функцию оповещения встроена, что позволяет управлять событиями различными способами: отправка сообщений, выполнение удаленных команд и т.д. Также можно настраивать сообщения в зависимости от роли получателя, выбирая, какую информацию включать, например дату, время, имя хоста, значение элементов, значения триггеров, профиль хоста и т. д.

Оповещения в Zabbix. Источник: https://www.zabbix.com
Оповещения в Zabbix. Источник: https://www.zabbix.com

Zabbix хранит все события в базе данных в виде списка. Параметры фильтрации можно использовать для поиска определенного триггерного события. Если нажать на конкретное, то можно увидеть подробности. На этом экране также отображаются источник события, сведения о подтверждении и связанные события.

Icinga

В Icinga можно настроить систему оповещений с помощью Icinga Director в панели управления. Для этого необходимо настроить временные периоды. Они используются для определения интервала, в течение которого будет работать рассылка оповещений.  Уведомления могут отправляться по электронной почте и/или в различные мессенджеры (например, Telegram).

Prometheus

В Prometheus необходимо установить Alertmanager. Это связано с тем, что оповещение с помощью Prometheus разделено на две части. Правила оповещения пересылают оповещения менеджеру. Затем он отправляет уведомления по электронной почте или другим платформам.

Схема работы оповещений в Prometheus. Источник:  https://medium.com
Схема работы оповещений в Prometheus. Источник: https://medium.com

Alertmanager обрабатывает предупреждения, отправленные клиентскими приложениямиs. Он заботится об их дедупликации, группировке и маршрутизации к правильной интеграции получателя. Уведомления можно отправлять по электронной почте, через системы уведомлений по телефону и через чаты.  

В Grafana также есть система оповещений. Уведомления могут отправляться по электронной почте и/или в различные мессенджеры (например, Slack или Telegram).

Сообщество

Zabbix

Большим преимуществом Zabbix является его сообщество и возможность получения знаний через множество каналов поддержки, включая систему поддержки, Telegram, Discord, Zabbix Forum, blog, социальные сети.

Полезные ссылки:

Icinga

В Icinga также есть большое комьюнити, где можно найти информацию по надстройке новых модулей и задать вопросы.

Полезные ссылки:

Prometheus

Несмотря на то что Prometheus более молодой инструмент, чем Zabbix, здесь также сформировалось большое сообщество. Вот несколько полезных ссылок:

Суммируем

Zabbix

Zabbix – это ПО с открытым исходным кодом с бэкэндом C и интерфейсом PHP. Имеет распределенную архитектуру сервера и клиента, поэтому на каждой стороне клиента необходимо установить агент Zabbix для сбора и отправки данных на сервер. Если необходимо использовать MySQL, MariaDB, PostgreSQL, SQLite, Oracle или IBM DB2 для хранения данных, то этот инструмент хорошо подойдет для мониторинга. Есть встроенная функция оповещения, позволяющая управлять событиями различными способами: отправка сообщений, выполнение удаленных команд и т.д.

Icinga

Icinga имеет современный веб-интерфейс, дополнительные соединители для баз данных (MySQL, Oracle Database, PostgreSQL), REST API, позволяющее администраторам добавлять дополнения без внесения изменений в ядро Icinga.

Для настройки дополнительных функций в Icinga необходимо настраивать отдельные расширения, например как для рисования графиков, показывающих изменения в отслеживаемых системах. Веб-интерфейс Icinga в основном доступен только для чтения. Он показывает состояние серверов, но не может сравнивать серверы и генерировать данные.

Prometheus

У Prometheus открытый исходный код, а сам продукт бесплатен. Он считается более современным инструментом, который используют, когда требуется решение для мониторинга базы данных с временными показателями и нужно долговременное хранилище для метрик. Есть версия, которая включает хранение ваших данных в течение одного года, полную настройку панели управления Grafana для визуализации данных и многое другое. 

Также Prometheus имеет поддержку от стороннего Node Exporter, который может помочь Prometheus извлечь различные аппаратные и связанные с ядром метрики. Инструмент имеет поддержку языка запросов PromQL.

Какие инструменты мониторинга IT-инфраструктуры вы используете? Поделитесь своим опытом.

Теги:
Хабы:
Всего голосов 12: ↑11 и ↓1+11
Комментарии8

Публикации

Информация

Сайт
serverspace.ru
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Danial Fedorov

Истории