Хотя Zabbix предлагает множество возможностей, всегда есть место для дополнительных функций. Расширения — это удобный способ изменения и увеличения возможностей мониторинга при помощи Zabbix без изменения исходного кода.
Вы можете расширить функциональность Zabbix как используя встроенные возможности расширения (траппер элементы данных, пользовательские параметры и т. д.), так и путём использования или создания пользовательских расширений (загружаемых модулей, плагинов и т. д.).
В этом разделе представлен обзор со ссылками на все варианты расширения Zabbix.
Траппер элементы данных — это элементы данных, которые принимают входящие данные, а не запрашивают их. Траппер элементы данных полезны для отправки определённых данных на Zabbix сервер или прокси, например, периодические данные о доступности и производительности в случае долгоиграющих пользовательских скриптов. Отправка данных на Zabbix сервер или прокси возможна с помощью утилиты командной строки Zabbix sender или путем реализации коммуникационного протокола на основе JSON (аналогично тому, что используется в Zabbix sender). Отправка данных к серверу Zabbix также возможна при помощи метода API history.push.
Внешняя проверка — это элемент данных для выполнения проверок путём запуска исполняемого файла, например сценария оболочки или двоичного файла.
Внешние проверки выполняются Zabbix сервером или прокси (когда узел сети наблюдается через прокси) и не требуют наличия агента, работающего на отслеживаемом узле сети.
Пользовательский параметр — это заданная пользователем команда (связанная с задаваемым пользователем ключом), которая при выполнении может получить необходимые вам данные с узла сети, на котором работает Zabbix агент. Пользовательские параметры полезны для настройки элементов данных агента или агента 2, отсутствующих в Zabbix.
system.run[]Элемент данных Zabbix агента system.run[] — это элемент данных для определяемой пользователем команды (связанный с предопределённым ключом system.run[], например system.run[myscript.sh]), который может быть выполнен на узле сети, где запущен агент Zabbix.
Примечание: элементы данных system.run[] отключены по умолчанию и, если они используются, должны быть включены (разрешены) и определены в конфигурационном файле Zabbix агента или Zabbix агента 2 (параметр конфигурации AllowKey).
Пользовательские команды в элементах данных, таких как внешние проверки, пользовательские параметры и элементы данных Zabbix агента system.run[], выполняются от того пользователя ОС, который используется для запуска компонентов Zabbix. Для выполнения этих команд данный пользователь должен обладать необходимыми правами.
Элемент данных HTTP агента — это элемент данных для выполнения запросов данных через HTTP/HTTPS. Элементы данных HTTP агента полезны для отправки запросов к конечным точкам HTTP для получения данных от таких сервисов, как Elasticsearch и OpenWeatherMap, для проверки состояния Zabbix API или состояния веб-сервера Apache либо Nginx и т. д. Элементы данных HTTP (с включённой опцией разрешения получения трапов) так же могут функционировать как траппер элементы данных.
Скриптовый элемент данных — это элемент данных для выполнения пользовательского кода JavaScript, который получает данные через HTTP/HTTPS. Скриптовые элементы данных полезны, когда функциональности, предоставляемой элементами HTTP агента, недостаточно. Например, в сложных сценариях сбора данных, требующих нескольких шагов или сложной логики, скриптовый элемент данных можно настроить для выполнения HTTP-вызова, а затем обработки полученных данных и последующей передачи преобразованного значения второму HTTP-вызову.
Элементы данных HTTP агента и скриптовые элементы данных поддерживаются Zabbix сервером и прокси сервером, и не требуют наличия агента, работающего на отслеживаемом узле сети.
Подгружаемые модули, написанные на языке C, представляют собой универсальный и ориентированный на производительность вариант расширения функциональности компонентов Zabbix (сервер, прокси, агент) на платформах UNIX. Подгружаемый модуль — это, по сути, общая библиотека, используемая демоном Zabbix и подгружаемая при запуске. Библиотека должна содержать определённые функции, чтобы процесс Zabbix мог обнаружить, что файл действительно является модулем, который он может загрузить и с которым он может работать.
Подгружаемые модули имеют набор преимуществ, включая возможность добавлять новые метрики или реализовывать любую другую логику (для примера, экспорта данных истории Zabbix), прекрасную производительность и возможность разрабатывать, использовать и делиться функциональными возможностями, которые они предоставляют. Это способствует бесперебойному обслуживанию и помогает предоставлять новые функциональные возможности проще и независимо от основной кодой базы Zabbix.
Подгружаемые модули особенно полезны при сложной настройке мониторинга. При мониторинге встроенных систем наличие большого количества отслеживаемых параметров или тяжелые сценарии со сложной логикой или длительным временем запуска такие расширения, как пользовательские параметры, элементы Zabbix агента system.run[] и внешние проверки, будут влиять на производительность. Загружаемые модули предлагают способ расширения функциональности Zabbix без ущерба для производительности.
Плагины предоставляют альтернативу подгружаемым модулям (написанным на языке C). Однако плагины — это способ расширения только Zabbix агента 2.
Плагин — это пакет Go, который определяет структуру и реализует один или несколько интерфейсов плагина (Exporter, Collector, Configurator, Runner, Watcher). Поддерживаются два типа плагинов Zabbix агента 2:
Смотрите список встроенных плагинов.
Инструкции и учебные пособия по написанию собственных плагинов смотрите в Центре разработчиков.
Вебхук — это способ оповещения Zabbix, который позволяет расширить возможности Zabbix отсылать оповещения во внешнее программное обеспечение, такое как системы службы поддержки, чаты или мессенджеры. Подобно скриптовым элементам данных, вебхуки полезны для выполнения HTTP-вызовов с использованием пользовательского кода JavaScript, например, для отправки уведомлений на различные платформы, такие как Microsoft Teams, Discord и Jira. Также возможно возвращать некоторые данные (например, о созданных заявках в службу поддержки), которые затем отображаются в Zabbix.
Существующие вебхуки доступны в Git репозитории Zabbix. Для разработки собственного вебхука обратитесь к Руководству по разработке вебхуков [en].
Скрипт оповещения — это способ оповещения Zabbix, который предоставляет возможность создать альтернативный способ (скрипт) для управления оповещениями Zabbix. Скрипты оповещений полезны, если вас не устраивают существующие способы оповещения для отсылки уведомлений в Zabbix.
Можно изменить внешний вид веб-интерфейса Zabbix, используя пользовательские темы. Смотрите инструкции по созданию и применению своих собственных тем.
Модули веб-интерфейса предоставляют возможность расширить функциональность веб-интерфейса Zabbix путем добавления сторонних модулей или разработки своих собственных. С помощью модулей веб-интерфейса вы можете добавлять новые пункты меню, соответствующие им представления, действия и т.д.
Глобальный скрипт — это определяемый пользователем набор команд, которые могут быть выполнены на объекте мониторинга (с помощью интерпретатора оболочки (/bin/sh)), в зависимости от настроенной области и прав пользователя. Глобальные скрипты можно настроить для следующих действий:
Глобальные скрипты полезны во многих случаях. Например, если настроены операции действий или действия вручную над узлом сети, вы можете использовать глобальные скрипты для автоматического или ручного выполнения удалённых команд, например, перезапуск приложения (веб-сервера, промежуточного программного обеспечения, CRM и т. д.) или освобождение места на диске (удаление старых файлов, очистка /tmp и т. д.). Или другой пример: если настроено действие вручную над событиями, вы можете использовать глобальные скрипты для управления заявками о проблемах во внешних системах.
Глобальные скрипты могут выполняться Zabbix сервером, прокси или агентом.
Пользовательские команды выполняются от пользователя ОС, который используется для запуска компонентов Zabbix. Для выполнения этих команд данный пользователь должен обладать необходимыми правами.
Zabbix API — это API на основе HTTP, который является частью веб-интерфейса Zabbix. С помощью Zabbix API вы можете выполнять любые из следующих операций:
Zabbix API состоит из множества методов, которые номинально сгруппированы в отдельные API. Каждый метод выполняет определённую задачу. Доступные методы, а также обзор функций, предоставляемых Zabbix API, смотрите в Справочнике методов Zabbix API.