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":"сообщение об ошибке"}