Что нового в Zabbix 5.0
В середине мая вышла версия Zabbix 5.0, и мы организовали серию онлайн митапов на разных языках с целью наглядно продемонстрировать сообществу все изменения и нововведения. Предлагаем вам ознакомиться с докладом исполнительного директора и создателя Zabbix Алексея Владышева, в котором он пошагово рассказал, что нового в Zabbix 5.0.
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, где представлены шаблоны для мониторинга и плагины, в том числе для нового агента.
Доступные шаблоны для мониторинга и интеграции
Кроме того, существуют возможности интеграции с различными системами, включая системы тикетов, ITSM-системы и системы доставки сообщений с помощью Webhook.
Возможности интеграции
В Zabbix 5.0 расширена встроенная поддержка для интеграции с различными системами тикетов, а также системами оповещений:
Интеграция с различными системами
Расширен список встроенных шаблонов для мониторинга приложений и устройств:
Встроенные шаблоны для мониторинга приложений и устройств
Все обновления доступны для скачивания в Git repository.
Любой пользователь или разработчик может участвовать в Zabbix с готовыми наработками — шаблонами или плагинами, воспользовавшись простой процедурой:
- Подписание Zabbix Contributory Agreement (ZCA) на https://www.zabbix.com/developers.
- Размещение Pull Request на https://git.zabbix.com.
- Рассмотрение заявки командой разработчиков. Если плагин или шаблон соответствует стандартам Zabbix, он включается в продукт, и работа такого разработчика будет официально поддерживаться командой Zabbix.
Zabbix — открытое программное обеспечение с открытым исходным кодом, доступным для просмотра, изучения и изменения. Пользователю предоставляется возможность свободно использовать продукт, участвовать в доработке программы или использовать код для своих новых программ. С другой стороны, команда Zabbix делает все возможное, чтобы Zabbix можно было легко устанавливать на различных платформах.
Разработчики Zabbix предлагают пакеты для практически всех наиболее популярных дистрибутивов и различных платформ виртуализации. Кроме того, Zabbix с помощью одного клика мыши можно установить в публичном облаке. Zabbix также доступен на платформах Red Hat Openshift или OpenStack.
Пакеты Zabbix для дистрибутивов и платформ
Поддержка Zabbix Agent 2 для Windows и Linux
Новый Zabbix Agent 2 — одно из лучших решений на рынке.
- Предлагает структуру, основанную на плагинах, и поддерживает скрипты для сбора данных, которые могут работать часами.
- Поддерживает параллельные активные проверки, постоянные подключения к внешним системам, что полезно, например, для эффективного мониторинга баз данных.
- Поддерживает ловушки и события, что важно для мониторинга, например, MQTT-устройств.
- Новая версия агента легко устанавливается (поскольку новый агент поддерживает все предыдущие функциональности).
Кроме того, для нового агента в Zabbix 5.0 предлагается поддержка постоянного хранения данных. Ранее неотправленная информация хранилась только в буферной памяти агента, а в новой версии доступна настройка хранения такой информации на диске.
Постоянное хранение данных
Это важно в случае мониторинга критических систем и нестабильных коммуникаций, поскольку большое количество важнейших данных сохраняется до отправки на 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-соединений. Это важно для мониторинга сред, для которых применяются определенные стандарты безопасности.
Выбор алгоритмов шифрования для TLS-соединений
4. В Zabbix 5.0 появилась поддержка шифрованных соединений с базой данных. На данный момент доступно только шифрованное соединение с PostgreSQL и MySQL.
Шифрованные соединения с базой данных
5. Zabbix 5.0 перешел с MD5 на SHA256 для хранения хэшей паролей пользователей в базе данных, поскольку на данный момент это наиболее безопасный алгоритм.
6. Zabbix 5.0 поддерживает секретные пользовательские макросы для хранения любой конфиденциальной информации, такой как пароли и API токены, к которой не имеют доступа конечные пользователи.
Секретные макросы
7. Все соединения Zabbix с внешними системами и внутренние соединения с агентами являются безопасными. Поддерживается шифрование с использованием TLS сертификатов, либо с использованием предварительно опубликованного ключа (pre-shared key encryption) для соединения с агентами и c прокси, либо HTTPS. Безопасность на стороне агентов можно усиливать за счет белых и черных списков. Интерфейс работает через HTTPS.
Безопасные соединения
8. Поддержка SAML для обеспечения единой точки аутентификации у надежного поставщика идентификационных услуг, поэтому пользовательские учетные данные не покинут границы брандмауэра.
SAML-идентификация
Поддержка SAML позволяет интегрировать Zabbix с различными локальными и облачными поставщиками идентификационных услуг, такими как Microsoft ADFS, OpenAM, SecurAuth, Okta, Auth0, а также Azure, AWS или Google Cloud Platform.
Удобство использования Zabbix 5.0
1. Пользовательский интерфейс, оптимизированный для широких экранов. Мы переместили меню из верхней части, где всегда не хватает места, в левую часть экрана. Меню по-прежнему отображается в полном, минимальном и скрытом режиме.
Интерфейс, оптимизированный для широкого экрана
2. Копирование виджетов с панелей позволяет очень быстро создавать новые ПАНЕЛИ. Для этого в ПАНЕЛИ необходимо выбрать нужный виджет, нажать Copy
Копирование виджета
и вставить виджет в нужную панель.
Вставка скопированного виджета
3. Экспорт графиков. Чтобы скопировать график и отправить, например, по электронной почтe, можно получить график в формате PNG, выбрав нужный виджет и нажав Download image.
Экспорт графиков
4. Фильтрация по тегам: Problem by severity и Problem hosts. Появилась возможность, например, собрать в одном дата-центре данные по всем проблемам, связанным с одним узлом сети.
Фильтрация по тегам
5. Поддержка модулей для расширения интерфейса Zabbix. Для установки независимого модуля нужно скопировать его в определенную директорию. Модули позволяют расширять существующую функциональность интерфейса, создавать новые страницы, менять структуру меню, например, добавлять пункты.
Написать и интегрировать модуль может любой пользователь. Для этого модуль копируется в папку modules, после чего становится видим для интерфейса, где его можно включить и выключить.
Добавление нового модуля
6. Простота навигации по ресурсам, связанным с узлами сети. В Monitoring > Hosts отображается список устройств, которые мониторит Zabbix: узлы сети, сервисы, сетевые устройства и т. д. Кроме того, доступна быстрая навигация к экранам, графикам и проблемам конкретных устройств.
Мы убрали вкладки Monitoring > Graphs и Monitoring > Webs, и вся навигация осуществляется через Monitoring > Hosts. Отображаемую информацию можно фильтровать, в том числе, по тегам, что позволяет отображать отключенные устройства
Навигация по ресурсам, связанным с узлами сети
Например, можно выбрать устройства, которые относятся к сервисам конечных пользователей, выбрав »Service», а также задав уровень важности этих проблем.
Возможности фильтрации
7. Новая операция предварительной обработки — «Замена» позволяет делать несколько полезных вещей, которые раньше можно было делать только с помощью регулярных выражений, достаточно сложных для многих пользователей.
Replace позволяет фактически заменить одну строку или символ на другие, что позволяет просто конвертировать данные, полученные в текстовом формате, в числовое представление.
Оператор Replace
8. Оператор JSONPath, который позволяет извлекать имена атрибутов в удобной форме
Оператор для JSONPath
9. Отображение сообщений электронной почты Zabbix. В предыдущих версиях все сообщения электронной почты от Zabbix в папке Входящие отображались списком. Начиная с Zabbix 5.0 сообщения будут группироваться по проблемам.
Группировка сообщений электронной почты от Zabbix
10. Поддержка пользовательских макросов для IPMI для имени пользователя и пароля. Если для имени пользователя и пароля используются секретные макросы, доступ к их значению будет закрыт.
Поддержка пользовательских макросов
11. Массовое изменение пользовательских макросов для узлов сети. В новой версии можно открыть список шаблонов, выбрать список узлов сети и добавлять макросы или менять значения существующих макросов,
Добавление и изменение пользовательских макросов
а также удалять какие-то определенные или все макросы из выбранных шаблонов для узлов сети.
Удаление отдельных или всех пользовательских макросов
12. Контроль формата сообщений на уровне способа оповещения. В Media types появилась вкладка Media templates с шаблонами сообщений.
Шаблоны способов оповещений
Для разных типов сообщений можно определить различные шаблоны.
Определение шаблона для типа сообщений
В предыдущих версиях нужно было управлять этими сообщениями на уровне действий, определять сообщения и предмет по умолчанию.
Управление шаблонами на уровне действий
В новой версии все можно определить на глобальном уровне, а на уровне сообщений — переписать глобальные настройки.
Управление шаблонами на глобальном уровне
Для большинства пользователей достаточно определять форматы шаблонов на уровне способа оповещения. Более того, после импорта какого-то нового способа оповещения все соответствующие форматы шаблонов уже являются его частью.
13. Более широкое применение JavaScript. JavaScript используется для скриптов предобработки, для Webhook и т.д. В командной строке, работать с JavaScript непросто.
В Zabbix 5.0 используется новая утилита — zabbix_js, запускающая JavaScript, который принимает данные, обрабатывает их и генерирует выходные значения.
Утилита zabbix_js
Примеры использования утилиты 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[]
Проверки JMX - В новой версии появился ключ для мониторинга счетчиков производительности Windows, который поддерживается старым и новым агентами на русском и английском языках и позволяет, например, обнаруживать количество процессоров, файловых систем, сервисов и т. д.
Мониторинг счетчиков производительности Windows с помощью ключа perf_counter - ODBC-мониторинг стал намного проще. Ранее все параметры для ODBC-мониторинга приходилось описывать во внешнем файле /etc/odbc.ini, к которому не было доступа со стороны интерфейса Zabbix. В новой версии практически все параметры могут быть частью ключа метрики.
Ключ метрики с описанием параметровВ новой версии можно задать имя сервера и порт на уровне метрики, а имя и пароль для доступа — с использованием секретных макросов для безопасности.
Использование секретных макросов - При использовании протокола IPMI для мониторинга оборудования появилась возможность создавать более простые шаблоны для автоматизации с помощью ipmi.get.
ipmi.get
16. Тестирование элементов данных из интерфейса. В Zabbix 5.0 появилась возможность тестирования некоторых элементов данных и, что еще более важно, шаблонов элементов данных из интерфейса.
Тестирование элементов данных
Любые возникающие проблемы отображаются в интерфейсе.
Отображение проблем в интерфейсе
Аналогичный алгоритм используется для шаблонов элементов данных. Кроме того, если какой-либо элемент данных не поддерживается, чтобы узнать причину сбоя, нужно просто нажать Test.
17. Тестирование способов оповещения, которое появилось в Zabbix 4.4, сохраняется, что важно при интеграции Zabbix с другими системами, например, системами тикетов.
Тестирование способов оповещения
18. Поддержка пользовательских макросов для прототипов элементов данных. Для определения значений пользовательских макросов можно использовать LLD-макросы.
Использование 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 дней. Это значительно сокращает требуемое место на диске (почти в десять раз, по данным пользователей), что улучшает экономию дискового пространства и повышает производительность.
Компрессия с помощью TimescaleDB
22. Настройка SNMP на уровне интерфейса. В Zabbix 5.0 вместо трех типов элементов данных используется только один — SNMP agent. Все атрибуты SNMP перенесены на уровень интерфейса узлов сети, что позволяет упростить шаблоны, переключение между версиями SNMP и т. д.
Настройка SNMP на уровне интерфейса
23. Зависимость мониторинга доступности узлов сети от доступности прокси позволяет отображать проблему доступности прокси как первоочередную в случае недоступности узлов сети при мониторинге с использованием триггера с функцией nodata:
{HostA:item.nodata(1m)}=1
Доступность узлов сети определяется доступностью прокси
Функция nodata по умолчанию принимает во внимание доступность прокси. Для более строгой проверки, не принимающей во внимание доступность прокси, используется второй параметр — strict:
{HostA:item.nodata(1m,strict)}=1
24. Управление правилами низкоуровневого обнаружения. В Zabbix 5.0 появился LLD-фильтр, который позволяет просматривать в том числе неподдерживаемые правила обнаружения
LLD-фильтр
25. Возможность снять подтверждение проблемы (unacknowledge) позволяет исправлять ошибки и полезна при создании рабочих процессов, зависящих от подтверждения проблемы.
Снятие подтверждения проблемы
26. Изменение правил низкоуровневого обнаружения —возможность добавления исключений при обнаружении объектов в результате мониторинга файловых систем, которая позволяет при низкоуровнем обнаружении создавать или не создавать определенные объекты, триггеры, элементы данных и т.д., менять важность проблем, добавлять теги для определенных объектов, исключать объекты, например, временные файловые системы, из поиска, менять интервал обновления данных и т.д.
Исключение из низкоуровневого обнаружения временных файловых систем
Например, можно изменить уровень приоритетности триггеров для обнаруженных файловых систем Oracle, оставив уровень приоритетности триггеров других файловых систем на прежнем уровне.
Изменение уровеня приоритетности триггеров для отдельны файловых систем
27. Новые макросы в Zabbix 5.0 позволяют повысить качество мониторинга.
Новые макросы в Zabbix 5.0
28. Другие нововведения в Zabbix 5.0:
Улучшения в Zabbix 5.0
29. Прекращение поддержки
Неподдерживаемая функциональность
Заключение
Обновиться до Zabbix 5.0 очень просто! Устанавливайте и запускайте новые бинарные файлы для сервера и frontend-файлы, и сервер автоматически обновит вашу базу данных.
Информация о процедуре обновления Zabbix размещена по адресу:
https://www.zabbix.com/documentation/current/manual/installation/upgrade_notes_500
ВАЖНО!
- Обновление исторических данных до формата Float64 необязательно.
- Данные TimescaleDB доступны только для чтения.
- Минимальная требуемая версия PHP7.2.
- DB2 не поддерживается как backend для Zabbix сервера
(!) Видео и слайды презентаций Алексея Владышева и других спикеров Zabbix Meetup Online (Russian) можно посмотреть здесь.