Вышел Zabbix 4.2

Наша команда очень рада поделиться новостью о том, что состоялся релиз свободной системы мониторинга с открытым исходным кодом Zabbix 4.2!

xzud_pcioihippr2fepb60potno.png

Является ли версия 4.2 ответом на главный вопрос жизни, вселенной и мониторинга в целом? Давайте посмотрим!
Напомним, что Zabbix — это универсальная система для мониторинга производительности и доступности серверов, инженерного и сетевого оборудования, приложений, баз данных, систем виртуализации, контейнеров, ИТ-сервисов, веб-сервисов.

Zabbix реализует полный цикл от сбора данных, их обработки и преобразования, анализа получаемых данных, и заканчивая хранением этих данных, визуализацией и рассылкой оповещений с использованием правил эскалаций. Также система предоставляет гибкие возможности расширения методов сбора данных и оповещений, а также возможности автоматизации через API. Единый веб-интерфейс реализует централизованное управление конфигурациями мониторинга и распределением прав доступа различным группам пользователей. Код проекта свободно распространяется под лицензией GPLv2.

Zabbix 4.2 — это новая не LTS-версия с укороченным сроком официальной поддержки. Пользователям, которые ориентируются на длинный цикл эксплуатации программных продуктов, рекомендуем использовать LTS версии, такие как 3.0 и 4.0.

Итак, давайте поговорим о новинках и основных улучшениях версии 4.2:


v_eckacofct0uul_v21uutqby-m.png
В дополнение к уже существующим официальным пакетам, мы также предлагаем новые сборки для:

  • RaspberryPi, Mac OS/X, SUSE Enterprise Linux Server 12
  • MSI для Windows агента
  • Docker образы


Zabbix умеет собирать данные различными способами (push/pull) с разных источников данных. Это JMX, SNMP, WMI, HTTP/HTTPS, RestAPI, XML Soap, SSH, Telnet, агенты и скрипты и другие источники. А теперь встречайте поддержку Prometheus!

Строго говоря, сбор данных из экспортёров Prometheus был возможен и раньше благодаря типу элементов данных HTTP/HTTPS и регулярным выражениям.

Однако, новая версия позволяет работать с Prometheus максимально эффективно за счёт встроенной поддержки языка запросов PromQL. А использование зависимых метрик позволяет собирать и обрабатывать данные наиболее эффективно: один раз обратились за данными, а дальше раскладываем их по нужным метрикам.

yrhin1viwxnpfro62umwlpqu6bk.png
Получаем значение конкретной метрики

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

bwsm6i0fa4xo4oee7vlzitpsr3m.png
Находим метрики используя фильтр на языке запросов PromQL

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


Хотим ли мы обнаруживать проблемы как можно быстрее? Конечно, никаких сомнений! Чаще всего такой подход приводит к тому, что нам необходимо слишком часто опрашивать устройства и собирать данные, что приводит к большей нагрузке на систему мониторинга. Как этого избежать?

Мы реализовали механизм тротлинга (throttling) в правилах препроцессинга. Тротлинг, по сути, даёт нам возможность пропуска одинаковых значений.

Предположим, что мы следим за состоянием критичного приложения. Каждую секунду мы проверяем, функционирует ли наше приложение или нет. При этом в Zabbix поступает непрерывный поток данных из 1 (работает) и 0 (не работает). Например: 1111111111110001111111111111…

Когда с нашим приложением всё в порядке, то в Zabbix поступает поток из одних лишь единичек. Нужно ли их обрабатывать? В общем-то нет, ведь нас только интересует изменение состояния приложения, мы не хотим собирать и хранить так много данных. Так вот, тротлинг позволяет пропускать значение, если оно идентично предыдущему. В итоге мы получим лишь данные об изменении состояния, например, 01010101… Вполне достаточно информации для обнаружения проблем!

Пропущенные значения Zabbix просто напросто игнорирует, они не записываются в историю и никак не влияют на триггеры. С точки зрения Zabbix пропущенных значений не существует.

cctmyymdqz1dztuzve2qat22cwy.png
Игнорируем повторяющиеся значения

Здорово! Теперь мы можем очень часто опрашивать устройства, при этом мгновенно обнаруживать проблемы без хранения ненужной информации в базе данных.

А как же графики? Они ведь будут пустыми из-за нехватки данных! И как понять, собирает ли Zabbix данные, если большинство этих данных будет пропущено?

Мы и об этом подумали! Zabbix предлагает ещё один вид тротлинга, тротлинг с контрольными точками проверки (throttling with heartbeat).

_3ul8zygs2pfcfi3i1xabwflzis.png
Раз в минуту проверяем, жива ли метрика

В этом случае, Zabbix, несмотря на повторяющийся поток данных, будет сохранять как минимум одно значение в указанный интервал времени. Если данные собираются раз в секунду, а интервал задан одной минутой, то Zabbix превратит ежесекундный поток единичек в ежеминутный поток. Несложно заметить, что это проводит к 60-ти кратному сжатию полученных данных.

Теперь мы уверены, что данные собираются, функция триггера nodata () работает и с графиками всё в порядке!


Никто из нас не хочет собирать ошибочные или недостоверные данные. Например, мы знаем, что датчик температуры должен возвращать данные в диапазоне от 0°C до 100°C и любое другое значение должно рассматриваться как ошибочное и/или игнорироваться.

Сейчас это возможно с помощью встроенных в препроцессинг правил валидации данных по соответствию или отсутствию соответствия регулярным выражениям, диапазону значений, JSONPath и XMLPath.

Теперь мы можем управлять реакцией на ошибку. Если температура вне диапазона, то мы можем просто проигнорировать такое значение, задать значение по умолчанию (например, 0°C), либо определить своё собственное сообщение об ошибке, например, «Датчик повреждён» или «Замените батарейку.»

qt4wu4ybdrpzhhm9daoktvrpyyu.png
Температура должна быть от 0 до 100, остальное игнорируем

Хорошим примером использования валидации является возможность проверки входных данных на присутствие сообщения об ошибке и установки этой ошибки для всей метрики. Это очень полезная функциональность при получении данных из внешних API.


Если нам недостаточно встроенных правил препроцессинга, то теперь мы предлагаем полную свободу с использованием произвольных скриптов на языке JavaScript!

rpgh4kexxwi2hwi56yehsv-n-e8.png
Всего одна строчка кода для преобразования градусов по фаренгейту в градусы цельсия

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

Теперь возможны трансформация данных, агрегация, фильтры, арифметические и логические операции и многое многое другое!

pz_z-0jbwzoyf4hnjrtwuwqasei.png
Извлекаем полезную информацию из вывода Apache mod_status!


Теперь нам не нужно гадать как же работают наши сложные сценарии препроцессинга. Появилась удобная проверка правильности работы препроцессинга прямо из интерфейса!

jomnzgu3cmghjfxt7iwmf1f4l38.png


До Zabbix 4.2 препроцессингом занимался исключительно Zabbix сервер, что ограничивало возможности применения прокси для распределения нагрузки.

Начиная с версии Zabbix 4.2 мы получаем невероятно эффективное масштабирование нагрузки за счёт поддержки препроцессинга на стороне прокси. Теперь этим занимаются прокси!

vqune4kzcxmaujwsrmesh24mbn4.png

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


Напомним, что низкоуровневое обнаружение (LLD) — это очень мощный механизм для автоматического обнаружения любого рода ресурсов для мониторинга (файловых систем, процессов, приложений, сервисов, и т.д.) и автоматического создания на их основе элементов данных, триггеров, узлов сети и других объектов. Это невероятно экономит время, упрощает конфигурацию и позволяет использовать один шаблон для узлов сети, имеющих различные ресурсы для мониторинга.

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

Zabbix 4.2 позволяет низкоуровневому обнаружению (LLD) использовать произвольно оформленные данные в формате JSON. Почему это важно? Это позволяет, не прибегая к скриптам, общаться, например, с внешними API и использовать полученную информацию для автоматического создания узлов сети, элементов данных и триггеров.

В купе с поддержкой JavaScript это создает фантастические возможности для создания шаблонов работы с различными источниками данных, такими как, например, облачные API, API приложений, данные в форматах XML, CSV и прочее и прочее.

8_b7ahwhyjkg2dd9ay7skq90oym.png
Связываем JSON с информацией о процессах с LLD

Возможности действительно безграничны!


byoax6nnwkszlr-qyrn6vl0a6n4.png

Что такое TimescaleDB? Это обычный PostgreSQL плюс модуль расширения от команды TimescaleDB. TimescaleDB обещает лучшую производительность за счёт более эффективных алгоритмов и структуры данных.

Кроме этого, ещё одним преимуществом TimescaleDB является автоматическое партицирование таблиц с историей. TimescaleDB это скорость и простота обслуживания! Хотя, я должен отметить, что наша команда пока ещё не проводила серьёзного сравнения производительности с обычным PostgreSQL.

На данный момент TimescaleDB является достаточно молодым и быстроразвивающимся продуктом. Используйте с осторожностью!


Если раньше тегами можно было управлять лишь на уровне триггеров, то теперь управление тегами намного более гибкое. Zabbix поддерживает теги для шаблонов и узлов сети!

Все обнаруженные проблемы получают теги не только триггера, но и узла сети, а также шаблонов этого узла сети.

gjbv0eftjjevcilmzixsqvtjik4.png
Определяем теги для узла сети


Zabbix 4.2 позволяет фильтровать узлы сети по имени, используя регулярные выражения. Это даёт возможность создавать различные сценарии обнаружения для различных групп узлов сети. Особенно удобно, если у нас используются сложные правила именования устройств.
Ещё одно улучшение связано с именованием узлов сети. Появилась возможность управления именами устройств при сетевом обнаружении и получения имени устройства из значения метрики.

Это очень нужная функциональность, особенно при сетевом обнаружении с помощью SNMP и Zabbix агента.

x4jsu3mbrshjgvb5ob1b-6zs3lu.png
Автоматически назначаем локальное имя узла сети видимым именем

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

t0pcgybg_1vdhtil9zy0qbgxsh4.png


Появилась возможность удалённого мониторинга внутренних метрик Zabbix сервера и прокси (метрик производительности и работоспособности компонентов Zabbix).

Для чего это нужно? Функциональность позволяет следить со стороны за внутренними метриками серверов и прокси, позволяет быстро обнаруживать и оповещать о проблемах даже если сами компоненты перегружены или, например, на прокси большой объём неотправленных данных.


Теперь мы не ограничены простым текстом и можем формировать красивые e-mail сообщения, благодаря наличию поддержки формата HTML. Пора изучать HTML + CSS!

ymztuizog61qw-5pgszly4te-ww.png
Сообщения легче воспринимать даже при минимальном использовании HTML


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

ja64fe9xblrschv5ctgrvbekgky.png
Одним кликом открываем тикет в Jira


Зачем это нужно — спросите вы. Это позволяет использовать данные основной метрики как для обнаружения, так и для непосредственного сбора данных. Например, в случае сбора данных с экспортера Prometheus, Zabbix осуществит один HTTP запрос и незамедлительно использует полученную информацию для всех зависимых элементов данных: значений метрик и правил низкоуровневого обнаружения.
Появилась поддержка анимированных GIF изображений на картах для более заметной визуализации проблем.

mulocdxrkfa7hrsrc6hvdd6oxvq.gif
Проблемные устройства стали более заметными


В Веб-мониторинге добавилась возможность выбирать данные из полученного заголовка HTTP.

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

sozgu3kqg3mhgtgcsdv1siogd90.png
Извлекаем AuthID из заголовка HTTP


Zabbix Sender теперь отправляет данные по всем IP адресам из параметра ServerActive конфигурационного файла агента.

gc2nmzcaainvudnefbpyqrlsa4g.png


Страница конфигурации триггеров обзавелась расширенным фильтром для быстрой и удобной выборки триггеров по заданным критериям.

17xlqhuquifwc1wfygn97sk51ro.png
Выбираем триггеры, относящиеся к сервису K8S


Тут всё просто, теперь Zabbix показывает точное время при наведении мышкой на график.

y6yhceaiv7sxzbjjff66mlk2m9e.gif


  • Реализован более предсказуемый алгоритм для изменения порядка расположения виджетов в dashboard (панели)
  • Возможность массового изменения параметров прототипов элементов данных
  • Поддержка IPv6 для проверок DNS: «net.dns» и «new.dns.record»
  • Добавился параметр «skip» для проверок «vmware.eventlog»
  • Ошибка выполнения шага препроцессинга включает в себя номер шага


Для перехода с более ранних версий необходима лишь установка новых бинарных файлов (сервера и прокси) и нового интерфейса. Zabbix автоматически проведёт процедуру обновления базы данных. Установка новых агентов не потребуется.

Мы проводим бесплатные вебинары для тех для тех, кто хочет более подробно узнать о Zabbix 4.2 и иметь возможность задать вопросы комaнде Zabbix. Записывайтесь!

Не забываем о популярном Telegram канале Zabbix сообщества, где всегда можно получить консультацию и ответы на свои вопросы на русском языке от более опытных коллег, а, если повезёт, то и от самих разработчиков Zabbix. Для новичков рекомендуем группу для новичков.


— Release notes
— Upgrade notes
— Оригинальная статья

© Habrahabr.ru