Что нового в Zabbix 5.0

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

image

Zabbix 4.2 и Zabbix 4.4


Начнем с изменений, появившихся в версии Zabbix 4.0, в связи с использованием LTS-версий.
В версии Zabbix 4.2, которая вышла в апреле 2019 года, появились следующие возможности:

  • Высокочастотный мониторинг с помощью троттлинга, который обеспечивает масштабирование и повышение NVPS, что означает более быстрое обнаружение проблем и направление оповещений без большой нагрузки на Zabbix.
  • Сбор данных с помощью HTTP-агента.
  • Поддержка сбора данных от Prometheus Pro.
  • Предобработка поддерживает валидацию и JavaScript, который позволяет трансформировать любые собираемые данные.
  • Предобработка на стороне прокси, которая обеспечивает более эффективное масштабирование с помощью прокси.
  • Улучшенное управление тегами — мета-информацией на уровне событий и проблем, с которыми удобно работать, потому что теги поддерживаются и на уровне шаблонов, и на уровне узлов сети.


В сентябре прошлого года вышла версия Zabbix 4.4, которая предлагала следующие возможности:

  • Новый Zabbix агент.
  • Поддержка Webhook для оповещений и уведомлений, что позволяет интегрироваться с внешними системами.
  • Поддержка TimescaleDB.
  • Встроенная база знаний для метрик и триггеров стала видимой для пользователей Zabbix. Например, пользователи могут использовать описание элементов данных и триггеров в Monitoring > Latest data.
  • Новый стандарт для шаблонов.


Zabbix 5.0


Сегодня мы поговорим о LTS-релизе Zabbix 5.0, который будет поддерживаться в течение 5 лет. Поддержка версии 4.4 прекращается через один месяц. LTS-релиз Zabbix 3.0 будет поддерживаться еще 3,5 года.

Zabbix обеспечивает мониторинг многих вещей, список которых можно уточнить на странице http://www.zabbix.com/integrations, где представлены шаблоны для мониторинга и плагины, в том числе для нового агента.

image
Доступные шаблоны для мониторинга и интеграции

Кроме того, существуют возможности интеграции с различными системами, включая системы тикетов, ITSM-системы и системы доставки сообщений с помощью Webhook.

image
Возможности интеграции

В Zabbix 5.0 расширена встроенная поддержка для интеграции с различными системами тикетов, а также системами оповещений:

image
Интеграция с различными системами

Расширен список встроенных шаблонов для мониторинга приложений и устройств:

image
Встроенные шаблоны для мониторинга приложений и устройств

Все обновления доступны для скачивания в Git repository.

Любой пользователь или разработчик может участвовать в Zabbix с готовыми наработками — шаблонами или плагинами, воспользовавшись простой процедурой:

  1. Подписание Zabbix Contributory Agreement (ZCA) на https://www.zabbix.com/developers.
  2. Размещение Pull Request на https://git.zabbix.com.
  3. Рассмотрение заявки командой разработчиков. Если плагин или шаблон соответствует стандартам Zabbix, он включается в продукт, и работа такого разработчика будет официально поддерживаться командой Zabbix.


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

Разработчики Zabbix предлагают пакеты для практически всех наиболее популярных дистрибутивов и различных платформ виртуализации. Кроме того, Zabbix с помощью одного клика мыши можно установить в публичном облаке. Zabbix также доступен на платформах Red Hat Openshift или OpenStack.

image
Пакеты Zabbix для дистрибутивов и платформ

Поддержка Zabbix Agent 2 для Windows и Linux


Новый Zabbix Agent 2 — одно из лучших решений на рынке.

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


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

image
Постоянное хранение данных

Это важно в случае мониторинга критических систем и нестабильных коммуникаций, поскольку большое количество важнейших данных сохраняется до отправки на Zabbix сервер. Опция также полезна для спутниковых соединений, которые могут быть недоступны в течение длительного времени.
ВАЖНО! В Zabbix 5.0 сохранена поддержка Zabbix Agent 1.

Изменения в системе безопасности в Zabbix 5.0


1. В новой версии поддерживается HTTP-прокси для webhook, который позволяет выполнять соединения с Zabbix сервера на внешние системами оповещения более безопасным и управляемым образом.

Если необходима интеграция Zabbix-сервера в локальной сети с внешней системой, наример, JIRA в облаке, можно поддерживать соединение через HTTP-прокси, что улучшает контролируемость и надежность соединения.

2. Как для старого, так и для нового агента предусмотрена возможность выбирать, какие именно проверки должны быть доступны на определенном агенте. Например, можно ограничить количество проверок, фактически создав белые и черные списки, определить поддерживаемые ключи.

  • Whitelist for MySQL related checks
    AllowKey=mysql[*] 
    DenyKey=*
  • Blacklist to deny all shell scripts
    DenyKey=system.run[*]
  • Blacklist to deny access to /etc/password
    DenyKey=vfs.file.contents[/etc/passwd,*]


3. Возможен выбор алгоритмов шифрования для всех компонентов Zabbix, во избежание использования небезопасных шифров для TLS-соединений. Это важно для мониторинга сред, для которых применяются определенные стандарты безопасности.

image
Выбор алгоритмов шифрования для TLS-соединений

4. В Zabbix 5.0 появилась поддержка шифрованных соединений с базой данных. На данный момент доступно только шифрованное соединение с PostgreSQL и MySQL.

image
Шифрованные соединения с базой данных

5. Zabbix 5.0 перешел с MD5 на SHA256 для хранения хэшей паролей пользователей в базе данных, поскольку на данный момент это наиболее безопасный алгоритм.

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

image
Секретные макросы

7. Все соединения Zabbix с внешними системами и внутренние соединения с агентами являются безопасными. Поддерживается шифрование с использованием TLS сертификатов, либо с использованием предварительно опубликованного ключа (pre-shared key encryption) для соединения с агентами и c прокси, либо HTTPS. Безопасность на стороне агентов можно усиливать за счет белых и черных списков. Интерфейс работает через HTTPS.

image
Безопасные соединения

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

image
SAML-идентификация

Поддержка SAML позволяет интегрировать Zabbix с различными локальными и облачными поставщиками идентификационных услуг, такими как Microsoft ADFS, OpenAM, SecurAuth, Okta, Auth0, а также Azure, AWS или Google Cloud Platform.

Удобство использования Zabbix 5.0


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

image
Интерфейс, оптимизированный для широкого экрана

2. Копирование виджетов с панелей позволяет очень быстро создавать новые ПАНЕЛИ. Для этого в ПАНЕЛИ необходимо выбрать нужный виджет, нажать Copy

image
Копирование виджета

и вставить виджет в нужную панель.

image
Вставка скопированного виджета

3. Экспорт графиков. Чтобы скопировать график и отправить, например, по электронной почтe, можно получить график в формате PNG, выбрав нужный виджет и нажав Download image.

image
Экспорт графиков

4. Фильтрация по тегам: Problem by severity и Problem hosts. Появилась возможность, например, собрать в одном дата-центре данные по всем проблемам, связанным с одним узлом сети.

image
Фильтрация по тегам

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

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

image
Добавление нового модуля

6. Простота навигации по ресурсам, связанным с узлами сети. В Monitoring > Hosts отображается список устройств, которые мониторит Zabbix: узлы сети, сервисы, сетевые устройства и т. д. Кроме того, доступна быстрая навигация к экранам, графикам и проблемам конкретных устройств.

Мы убрали вкладки Monitoring > Graphs и Monitoring > Webs, и вся навигация осуществляется через Monitoring > Hosts. Отображаемую информацию можно фильтровать, в том числе, по тегам, что позволяет отображать отключенные устройства

image
Навигация по ресурсам, связанным с узлами сети

Например, можно выбрать устройства, которые относятся к сервисам конечных пользователей, выбрав »Service», а также задав уровень важности этих проблем.

image
Возможности фильтрации

7. Новая операция предварительной обработки — «Замена» позволяет делать несколько полезных вещей, которые раньше можно было делать только с помощью регулярных выражений, достаточно сложных для многих пользователей.
Replace позволяет фактически заменить одну строку или символ на другие, что позволяет просто конвертировать данные, полученные в текстовом формате, в числовое представление.

image
Оператор Replace

8. Оператор JSONPath, который позволяет извлекать имена атрибутов в удобной форме

image
Оператор для JSONPath

9. Отображение сообщений электронной почты Zabbix. В предыдущих версиях все сообщения электронной почты от Zabbix в папке Входящие отображались списком. Начиная с Zabbix 5.0 сообщения будут группироваться по проблемам.

image
Группировка сообщений электронной почты от Zabbix

10. Поддержка пользовательских макросов для IPMI для имени пользователя и пароля. Если для имени пользователя и пароля используются секретные макросы, доступ к их значению будет закрыт.

image
Поддержка пользовательских макросов

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

image
Добавление и изменение пользовательских макросов

а также удалять какие-то определенные или все макросы из выбранных шаблонов для узлов сети.

image
Удаление отдельных или всех пользовательских макросов

12. Контроль формата сообщений на уровне способа оповещения. В Media types появилась вкладка Media templates с шаблонами сообщений.

image
Шаблоны способов оповещений

Для разных типов сообщений можно определить различные шаблоны.

image
Определение шаблона для типа сообщений

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

image
Управление шаблонами на уровне действий

В новой версии все можно определить на глобальном уровне, а на уровне сообщений — переписать глобальные настройки.

image
Управление шаблонами на глобальном уровне

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

13. Более широкое применение JavaScript. JavaScript используется для скриптов предобработки, для Webhook и т.д. В командной строке, работать с JavaScript непросто.
В Zabbix 5.0 используется новая утилита — zabbix_js, запускающая JavaScript, который принимает данные, обрабатывает их и генерирует выходные значения.

image
Утилита zabbix_js

image
Примеры использования утилиты zabbix_js

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

{host:zabbix.version.last()}="5.0.0"
{host:zabbix.version.last()}="{$ZABBIX.VERSION}


cравнивать последнее значение с предыдущим, например, когда речь идет о текстовых данных,

{host:text.last()}<>{host.text.prev()}


или

{host:text.last(#1)}<>{host.text.prev(#2)}


или сравнивать текстовые значения различных метрик.

{hostA:textA.last()}={hostB:textB.last()}


15. Автоматизация и обнаружение.

  • Доступны новые проверки JMX для получения и обнаружения списка счетчиков JMX, что очень полезно, например, для мониторинга Java-приложений, а также для автоматизации создания элементов мониторинга, метрик, триггеров и графиков.
    jmx.get[]

    и
    jmx.discovery[]

    image
    Проверки JMX
  • В новой версии появился ключ для мониторинга счетчиков производительности Windows, который поддерживается старым и новым агентами на русском и английском языках и позволяет, например, обнаруживать количество процессоров, файловых систем, сервисов и т. д.

    image
    Мониторинг счетчиков производительности Windows с помощью ключа perf_counter

  • ODBC-мониторинг стал намного проще. Ранее все параметры для ODBC-мониторинга приходилось описывать во внешнем файле /etc/odbc.ini, к которому не было доступа со стороны интерфейса Zabbix. В новой версии практически все параметры могут быть частью ключа метрики.

    image
    Ключ метрики с описанием параметров

    В новой версии можно задать имя сервера и порт на уровне метрики, а имя и пароль для доступа — с использованием секретных макросов для безопасности.

    image
    Использование секретных макросов

  • При использовании протокола IPMI для мониторинга оборудования появилась возможность создавать более простые шаблоны для автоматизации с помощью ipmi.get.

    image
    ipmi.get


16. Тестирование элементов данных из интерфейса. В Zabbix 5.0 появилась возможность тестирования некоторых элементов данных и, что еще более важно, шаблонов элементов данных из интерфейса.

image
Тестирование элементов данных

Любые возникающие проблемы отображаются в интерфейсе.

image
Отображение проблем в интерфейсе

Аналогичный алгоритм используется для шаблонов элементов данных. Кроме того, если какой-либо элемент данных не поддерживается, чтобы узнать причину сбоя, нужно просто нажать Test.

17. Тестирование способов оповещения, которое появилось в Zabbix 4.4, сохраняется, что важно при интеграции Zabbix с другими системами, например, системами тикетов.

image
Тестирование способов оповещения

18. Поддержка пользовательских макросов для прототипов элементов данных. Для определения значений пользовательских макросов можно использовать LLD-макросы.

image
Использование LLD-макросов для определения значений пользовательских макросов

19. Поддержка данных Float64, которые необходимы, в основном, для мониторинга очень больших значений, в Zabbix требуется для поддержки данных получаемых от агентов Prometheus.
В случае установки Zabbix 5.0 автоматическая миграция данных на стандарт Float64 не происходит. У пользователя остается возможность использовать старые типы данных. Скрипты миграции на Float64 запускаются вручную и меняют типы данных в исторических таблицах. Автоматическая замена не используется, поскольку занимает очень длительное время.

20. Улучшение масштабируемости Zabbix 5.0: оптимизация интерфейса и устранение «узких мест»

  • Устранены раскрывающиеся списки, например, для выбора узлов сети, потому что эта функция не масштабируется.
  • Появились «встроенные» лимиты для размеров таблиц Overview.
  • Появились новые возможности в Monitoring > Hosts > Graphs.
  • Появилась функция paging (Monitoring > Hosts > Web) там, где её не было.


21. Улучшенная компрессия
Компрессия в Zabbix основана на расширении для PostgreSQL — TimescaleDB (начиная с Zabbix 4.4). TimescaleDB обеспечивет автоматическое секционирование базы данных и повышает её производительность, поскольку производительность TimescaleDB фактически не зависит от размера базы данных.

В Zabbix 5.0 в Administration > General > Housekeeping можно настроить, например, компрессию данных старше 7 дней. Это значительно сокращает требуемое место на диске (почти в десять раз, по данным пользователей), что улучшает экономию дискового пространства и повышает производительность.

image
Компрессия с помощью TimescaleDB

22. Настройка SNMP на уровне интерфейса. В Zabbix 5.0 вместо трех типов элементов данных используется только один — SNMP agent. Все атрибуты SNMP перенесены на уровень интерфейса узлов сети, что позволяет упростить шаблоны, переключение между версиями SNMP и т. д.

image
Настройка SNMP на уровне интерфейса

23. Зависимость мониторинга доступности узлов сети от доступности прокси позволяет отображать проблему доступности прокси как первоочередную в случае недоступности узлов сети при мониторинге с использованием триггера с функцией nodata:

{HostA:item.nodata(1m)}=1

image
Доступность узлов сети определяется доступностью прокси

Функция nodata по умолчанию принимает во внимание доступность прокси. Для более строгой проверки, не принимающей во внимание доступность прокси, используется второй параметр — strict:

{HostA:item.nodata(1m,strict)}=1

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

image
LLD-фильтр

25. Возможность снять подтверждение проблемы (unacknowledge) позволяет исправлять ошибки и полезна при создании рабочих процессов, зависящих от подтверждения проблемы.

image
Снятие подтверждения проблемы

26. Изменение правил низкоуровневого обнаружения —возможность добавления исключений при обнаружении объектов в результате мониторинга файловых систем, которая позволяет при низкоуровнем обнаружении создавать или не создавать определенные объекты, триггеры, элементы данных и т.д., менять важность проблем, добавлять теги для определенных объектов, исключать объекты, например, временные файловые системы, из поиска, менять интервал обновления данных и т.д.

image
Исключение из низкоуровневого обнаружения временных файловых систем

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

image
Изменение уровеня приоритетности триггеров для отдельны файловых систем

27. Новые макросы в Zabbix 5.0 позволяют повысить качество мониторинга.

image
Новые макросы в Zabbix 5.0

28. Другие нововведения в Zabbix 5.0:

image
Улучшения в Zabbix 5.0

29. Прекращение поддержки
image
Неподдерживаемая функциональность

Заключение


Обновиться до Zabbix 5.0 очень просто! Устанавливайте и запускайте новые бинарные файлы для сервера и frontend-файлы, и сервер автоматически обновит вашу базу данных.
Информация о процедуре обновления Zabbix размещена по адресу:
https://www.zabbix.com/documentation/current/manual/installation/upgrade_notes_500

ВАЖНО!

  1. Обновление исторических данных до формата Float64 необязательно.
  2. Данные TimescaleDB доступны только для чтения.
  3. Минимальная требуемая версия PHP7.2.
  4. DB2 не поддерживается как backend для Zabbix сервера


(!) Видео и слайды презентаций Алексея Владышева и других спикеров Zabbix Meetup Online (Russian) можно посмотреть здесь.

© Habrahabr.ru