Протокол плагина Zabbix agent 2

Протокол Zabbix agent 2 основан на коде, размере и модели данных.

Код

Type Size Comments
Byte 4 Тип полезной нагрузки, в настоящее время поддерживается только JSON.

Размер

Type Size Comments
Byte 4 Размер текущей полезной нагрузки в байтах.

Данные полезной нагрузки

Type Size Comments
Byte Определяется полем Size Данные в формате JSON.

Определение данных полезной нагрузки

Общие данные

Эти параметры присутствуют во всех запросах/ответах:

Name Type Comments
id uint32 Для запросов - возрастающий идентификатор, используемый для связывания запросов с ответами. Уникален в пределах одного направления запроса (то есть от агента к плагину или от плагина к агенту).
Для ответов - ID соответствующего запроса.
type uint32 Тип запроса.
Запрос журнала

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

direction plugin → агент
response no

Параметры, специфичные для запросов журнала:

Name Type Comments
severity uint32 Уровень серьезности сообщения (уровень журнала).
message string Сообщение, которое нужно записать в журнал.

Пример:

{"id":0,"type":1,"severity":3,"message":"message"}
Запрос регистрации

Запрос, отправляемый агентом на этапе запуска агента для получения предоставляемых метрик и регистрации плагина.

direction агент → plugin
response yes

Параметры, специфичные для запросов регистрации:

Name Type Comments
version string Версия протокола <major>.<minor>

Пример:

{"id":1,"type":2,"version":"1.0"}
Ответ на register

Ответ плагина на запрос register.

direction plugin → агент
response n/a

Параметры, специфичные для ответов register:

Name Type Comments
name string Имя плагина.
metrics array of strings (optional) Метрики с описаниями, как они используются в плагине. Возвращает RegisterMetrics(). Отсутствует, если возвращается ошибка.
interfaces uint32 (optional) Битовая маска поддерживаемых плагином интерфейсов. Отсутствует, если возвращается ошибка.
error string (optional) Сообщение об ошибке, возвращаемое, если плагин не может быть запущен. Отсутствует, если возвращаются метрики.

Примеры:

{"id":2,"type":3,"metrics":["external.test", "External exporter Test."], "interfaces": 4}

или

{"id":2,"type":3,"error":"error message"}
Запрос Start

Запрос на выполнение функции Start интерфейса Runner.

direction агент → plugin
response no

Запрос не содержит специальных параметров, он включает только параметры общих данных.

Пример:

{"id":3,"type":4}
Завершить запрос

Запрос, отправляемый агентом для завершения работы плагина.

direction агент → plugin
response нет

Запрос не имеет специальных параметров, он содержит только параметры общих данных.

Пример:

{"id":3,"type":5}
Запрос на экспорт

Запрос на выполнение функции Export интерфейса Exporter.

direction агент → plugin
response no

Параметры, специфичные для запросов на экспорт:

Name Type Comments
key string Ключ плагина.
parameters array of strings (optional) Параметры для функции Export.

Пример:

{"id":4,"type":6,"key":"test.key","parameters":["foo","bar"]}
Ответ экспорта

Ответ от функции Export интерфейса Exporter.

direction plugin → agent
response n/a

Параметры, специфичные для ответов экспорта:

Name Type Comments
value string (optional) Значение ответа от функции Export. Отсутствует, если возвращена ошибка.
error string (optional) Сообщение об ошибке, если функция Export не была выполнена успешно. Отсутствует, если возвращено значение.

Примеры:

{"id":5,"type":7,"value":"response"}

или

{"id":5,"type":7,"error":"error message"}
Настройка запроса

Запрос на выполнение функции Configure интерфейса Configurator.

direction агент → plugin
response n/a

Параметры, специфичные для запросов Configure:

Name Type Comments
global_options JSON object JSON object, содержащий глобальные параметры конфигурации агента.
private_options JSON object (optional) JSON object, содержащий частные параметры конфигурации plugin, если они указаны.

Пример:

{"id":6,"type":8,"global_options":{...},"private_options":{...}}
Проверка запроса

Запрос на выполнение функции Validate интерфейса Configurator.

direction агент → plugin
response yes

Параметры, специфичные для запросов Validate:

Name Type Comments
private_options JSON object (optional) JSON object, содержащий приватные параметры конфигурации плагина, если они предоставлены.

Пример:

{"id":7,"type":9,"private_options":{...}}
Проверка ответа

Ответ функции Validate интерфейса Configurator.

direction plugin → агент
response n/a

Параметры, специфичные для ответов Validate:

Name Type Comments
error string (optional) Сообщение об ошибке, возвращаемое, если функция Validate не выполнена успешно. Отсутствует при успешном выполнении.

Пример:

{"id":8,"type":10}

или

{"id":8,"type":10,"error":"error message"}