Протокол плагина 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"}