Возможна потоковая передача значений элементов данных и событий из Zabbix во внешние системы по HTTP (смотрите подробности протокола).
Для потоковой передачи подмножеств значений элементов данных или событий можно использовать фильтр тегов.
За потоковую передачу данных отвечают два процесса сервера Zabbix: менеджер коннекторов (connector manager
) и рабочий процесс коннектора (connector worker
). Внутренний элемент данных Zabbix zabbix[connector_queue]
позволяет отслеживать количество значений, поставленных в очередь коннектора.
Для настройки потоковой передачи данных во внешнюю систему необходимы следующие шаги:
1. Наличие удалённой системы, настроенной на получение данных из Zabbix. Для этой цели доступны следующие инструменты:
events.ndjson
и history.ndjson
.2. Настройте нужное количество рабочих процессов коннектора в Zabbix путём регулирования параметра StartConnectors
в zabbix_server.conf
. Количество рабочих процессов коннектора должно соответствовать (или превышать, если одновременных сессий больше одной) настроенному в веб-интерфейсе Zabbix числу сконфигурированных коннекторов. После этого перезапустите Zabbix сервер.
3. Сконфигурируйте новый коннектор в веб-интерфейсе Zabbix (Администрирование → Общие → Коннекторы (Administration → General → Connectors)) и перезагрузите кэш сервера с помощью команды zabbix_server -R config_cache_reload
.
Обязательные поля отмечены звёздочкой.
Параметр | Описание |
---|---|
Имя (Name) | Введите имя коннектора. |
Тип данных (Data type) |
Выберите тип данных для потоковой передачи: Значения элемента данных (Item values) — трансляция значений элементов данных из Zabbix во внешние системы; События (Events) — трансляция событий из Zabbix во внешние системы. |
URL | Введите URL получателя. Поддерживаются пользовательские макросы. |
Фильтр тегов (Tag filter) |
Экспортировать только значения элементов данных или события, соответствующие фильтру тегов. Если не задано, то экспортировать всё. Можно как включать, так и исключать определённые теги и значения тегов. Можно задать несколько условий. Имена тегов всегда сопоставляются с учётом регистра. Для каждого условия доступно несколько операторов: Существует (Exists) — включать указанные имена тегов; Равно (Equals) — включать указанные имена тегов и значения (с учётом регистра); Содержит (Contains) — включать указанные имена тегов, где значения тегов содержат введённую строку (сопоставление подстроки, без учёта регистра); Не существует (Does not exist) — исключать указанные имена тегов; Не равно (Does not equal) — исключать указанные имена тегов и значения (с учётом регистра); Не содержит (Does not contain) — исключать указанные имена тегов, где значения тегов содержат введённую строку (сопоставление подстроки, без учёта регистра). Для условий есть два типа вычислений: И/ИЛИ (And/Or) — должны выполняться все условия, условия с тем же именем тега будут сгруппированы с условием ИЛИ; Или (Or) — достаточно выполнения одного условия. |
Тип информации (Type of information) |
Выберите тип информации (числовой (целое положительное), числовой (с плавающей точкой), символ и т.д.), по которому фильтровать значения элементов данных, транслируемых коннектором. Это поле доступно, если в поле Тип данных выбрано «Значения элемента данных». |
HTTP аутентификация (HTTP authentication) |
Выберите вариант аутентификации: Нет (None) — аутентификация не используется; Простая (Basic) — используется простая (basic) аутентификация; NTLM — используется аутентификация NTLM (Windows NT LAN Manager); Kerberos — используется аутентификация Kerberos (смотрите также: Настройка Kerberos с Zabbix); Digest — используется аутентификация Digest; Bearer — используется аутентификация Bearer. |
Имя пользователя (Username) |
Введите имя пользователя (до 255 символов). Поддерживаются пользовательские макросы. Это поле доступно, если параметр HTTP аутентификация установлен в значение «Basic», «NTLM», «Kerberos» или «Digest». |
Пароль (Password) |
Введите пароль пользователя (до 255 символов). Поддерживаются пользовательские макросы. Это поле доступно, если параметр HTTP аутентификация установлен в значение «Basic», «NTLM», «Kerberos» или «Digest». |
Токен на предъявителя (Bearer token) |
Введите Токен на предъявителя. Поддерживаются пользовательские макросы. Это поле доступно, если параметр HTTP аутентификация установлен в значение «Bearer». |
Расширенная настройка (Advanced configuration) |
Нажмите на надпись Расширенная настройка (Advanced configuration) для показа дополнительных параметров конфигурации (смотрите ниже). |
Макс. записей на сообщение (Max records per message) |
Укажите максимальное количество значений или событий, которые могут быть переданы в одном сообщении. |
Одновременные сессии (Concurrent sessions) |
Выберите количество отсылающих процессов, которые будут запущены для этого коннектора. Можно указать до 100 сессий; значение по умолчанию — «1». |
Попыток (Attempts) |
Число попыток для потоковой передачи данных. Можно указать до 5 попыток; значение по умолчанию — «1». |
Интервал между попытками (Attempt interval) |
Укажите, как долго коннектор должен ждать после неудачной попытки потоковой передачи данных. Можно указать до 10s; значение по умолчанию — «5s». Это поле доступно, если в поле Попыток указано «2» или больше. Неудачными считаются попытки, при которых не удалось установить соединение или код ответа HTTP не равен 200, 201, 202, 203, 204. Повторные попытки инициируются в случае ошибок связи или когда код ответа HTTP не равен 200, 201, 202, 203, 204, 400, 401, 403, 404, 405, 415, 422. Перенаправления выполняются, поэтому 302 -> 200 является успешным ответом; в то время как 302 -> 503 будет инициировать повторную попытку. |
Время ожидания (Timeout) |
Укажите время ожидания для сообщения (1-60 секунд, по умолчанию — 5 секунд). Поддерживаются суффиксы времени, например: 30s, 1m. Поддерживаются пользовательские макросы. |
HTTP прокси (HTTP proxy) |
Можно указать используемый HTTP прокси в следующем формате:[протокол://][имя_пользователя[:пароль]@]proxy.example.com[:порт] Поддерживаются пользовательские макросы. Необязательный префикс протокол:// можно использовать для указания альтернативных протоколов прокси (поддержка префикса протокола была добавлена в cURL 7.21.7). Без указания протокола прокси будет считаться как HTTP прокси. По умолчанию будет использоваться порт 1080.Если параметр HTTP прокси задан, он перезапишет относящиеся к прокси переменные окружения — такие как http_proxy и HTTPS_PROXY . Если не указан, относящиеся к прокси переменные окружения не будут перезаписаны. Введённое значение передаётся как есть, проверка его на корректность не выполняется.Также можно ввести адрес SOCKS прокси. Если вы укажете ошибочный протокол, соединение завершится неудачей и элемент данных перейдёт в неподдерживаемое состояние. Обратите внимание, что с HTTP прокси поддерживается только простая аутентификация. |
Проверка SSL узла (SSL verify peer) |
Отметьте флажок для проверки SSL сертификата веб-сервера. Сертификат сервера будет автоматически взят из местоположения общесистемного центра сертификации (certificate authority, CA). Вы можете переопределить местоположение файлов CA, используя параметр конфигурации Zabbix сервера или прокси SSLCALocation . |
Проверка SSL хоста (SSL verify host) |
Отметьте флажок для проверки того, что поле Common Name или Subject Alternate Name сертификата веб-сервера соответствует. Это устанавливает опцию cURL CURLOPT_SSL_VERIFYHOST [en]. |
Файл SSL сертификата (SSL certificate file) |
Имя файла SSL сетрификата, используемого для аутентификации клиента. Файл сертификата должен быть в формате PEM1. Поддерживаются пользовательские макросы. Если файл сертификата также содержит закрытый ключ, оставьте поле Файл SSL ключа пустым. Если ключ зашифрован, укажите пароль в поле Пароль к SSL ключу. Папка, содержащая этот файл, задаётся параметром конфигурации Zabbix сервера или прокси SSLCertLocation . |
Файл SSL ключа (SSL key file) |
Имя файла закрытого ключа SSL, используемого для аутентификации клиента. Файл закрытого ключа должен быть в формате PEM1. Поддерживаются пользовательские макросы. Папка, содержащая этот файл, задаётся параметром конфигурации Zabbix сервера или прокси SSLKeyLocation . |
Пароль к SSL ключу (SSL key password) |
Пароль к файлу закрытого ключа SSL. Поддерживаются пользовательские макросы. |
Описание (Description) | Введите описание коннектора. |
Активировано (Enabled) | Отметьте флажок, чтобы коннектор был активирован. |
Обмен данными между сервером и получателем осуществляется по HTTP с использованием REST API, NDJSON, "Content-Type: application/x-ndjson".
Более подробную информацию смотрите в Протоколе экспорта JSON с разделителем в виде перевода строки.
Пример потоковой передачи значений элементов данных:
POST /v1/history HTTP/1.1
Host: localhost:8080
Accept: */*
Accept-Encoding: deflate, gzip, br, zstd
Content-Length: 628
Content-Type: application/x-ndjson
{"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":44457,"name":"foo","clock":1673454303,"ns":800155804,"value":0,"type":3}
{"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":44457,"name":"foo","clock":1673454303,"ns":832290669,"value":1,"type":3}
{"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"bar","value":"test"}],"itemid":44458,"name":"bar","clock":1673454303,"ns":867770366,"value":123,"type":3}
Пример потоковой передачи событий:
POST /v1/events HTTP/1.1
Host: localhost:8080
Accept: */*
Accept-Encoding: deflate, gzip, br, zstd
Content-Length: 333
Content-Type: application/x-ndjson
{"clock":1673454303,"ns":800155804,"value":1,"eventid":5,"name":"trigger for foo being 0","severity":0,"hosts":[{"host":"Zabbix server","name":"Zabbix server"}],"groups":["Zabbix servers"],"tags":[{"tag":"foo_trig","value":"test"},{"tag":"foo","value":"test"}]}
{"clock":1673454303,"ns":832290669,"value":0,"eventid":6,"p_eventid":5}
Ответ состоит из кода состояния ответа HTTP и полезной нагрузки JSON. Код состояния ответа HTTP должен быть «200», «201», «202», «203» или «204» для запросов, которые были обработаны успешно, и другим для невыполненных запросов.
Пример успешного приёма:
Пример с ошибками: