4. Протокол плагина Zabbix Агента 2

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

Код

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

Размер

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

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

Тип Размер Комментарии
Byte Определяется полем Размер Данные в формате JSON.
Определение данных полезной нагрузки
Общие данные

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

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

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

направление плагин → агент
ответ нет

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

Имя Тип Комментарии
severity uint32 Важность сообщения (уровень журналирования).
message string Сообщение для журнала.

Пример:

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

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

направление агент → плагин
ответ да

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

Имя Тип Комментарии
version string Версия протокола <major>.<minor>

Пример:

{"id":1,"type":2,"version":"1.0"}
Ответ на регистрацию

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

направление плагин → агент
ответ неприменимо

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

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

Примеры:

{"id":2,"type":3,"metrics":["external.test", "Тестирование внешнего экпортера."], "interfaces": 4}

или

{"id":2,"type":3,"error":"сообщение об ошибке"}
Запрос на запуск

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

направление агент → плагин
ответ нет

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

Пример:

{"id":3,"type":4}
Запрос на останов

Запрос отсылается агентом, чтобы остановить плагин.

направление агент → плагин
ответ нет

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

Пример:

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

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

направление агент → плагин
ответ нет

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

Имя Тип Комментарии
key string Ключ плагина.
parameters array of strings (опционально) Параметры для функции Export.

Пример:

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

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

направление плагин → агент
ответ неприменимо

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

Имя Тип Комментарии
value string (опционально) Значение ответа из функции Export. Отсутствует, если возвращается ошибка.
error string (опционально) Сообщение об ошибке, если функция Export не была выполнена успешно. Отсутствует, если возвращается значение (value).

Примеры:

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

или

{"id":5,"type":7,"error":"сообщение об ошибке"}
Запрос на конфигурацию

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

направление агент → плагин
ответ неприменимо

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

Имя Тип Комментарии
global_options объект JSON Объект JSON, содержащий глобальные опции конфигурации агента.
private_options объект JSON (опционально) Объект JSON, содержащий персональные опции конфигурации плагина, если есть.

Пример:

{"id":6,"type":8,"global_options":{...},"private_options":{...}}
Запрос на валидацию

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

направление агент → плагин
ответ да

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

Имя Тип Комментарии
private_options объект JSON (опционально) Объект JSON, содержащий персональные опции конфигурации плагина, если есть.

Пример:

{"id":7,"type":9,"private_options":{...}}
Ответ на валидацию

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

направление плагин → агент
ответ неприменимо

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

Имя Тип Комментарии
error string (опционально) Сообщение об ошибке, возвращаемое, если функция Validate не была выполнена успешно. Отсутствует при успешном завершении.

Примеры:

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

или

{"id":8,"type":10,"error":"сообщение об ошибке"}