[comment]: # ({f372a49b-bdae00e2})
# 4. Протокол плагина Zabbix Агента 2

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

[comment]: # ({/f372a49b-bdae00e2})

[comment]: # ({b65bf947-a102065d})
### Код

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

[comment]: # ({/b65bf947-a102065d})

[comment]: # ({8edb0275-6f328f94})
### Размер

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

[comment]: # ({/8edb0275-6f328f94})

[comment]: # ({0351e98f-e3974519})
### Данные полезной нагрузки

|Тип|Размер|Комментарии|
|-----|-----|----------|
|Byte|Определяется полем *Размер*|Данные в формате JSON.|

[comment]: # ({/0351e98f-e3974519})

[comment]: # ({60a41fe8-265b88ca})
##### Определение данных полезной нагрузки

###### Общие данные

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

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

[comment]: # ({/60a41fe8-265b88ca})

[comment]: # ({3cf942f4-6bdfbea5})
###### Запрос журналирования

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

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

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

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

*Пример:*

    {"id":0,"type":1,"severity":3,"message":"сообщение"}

[comment]: # ({/3cf942f4-6bdfbea5})

[comment]: # ({3640b089-38f1c088})
###### Запрос регистрации

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

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

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

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

*Пример:*

    {"id":1,"type":2,"version":"1.0"}

[comment]: # ({/3640b089-38f1c088})

[comment]: # ({92946a86-d8c62312})
###### Ответ на регистрацию

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

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

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

|Имя|Тип|Комментарии|
|---------|--------|----------|
|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":"сообщение об ошибке"}

[comment]: # ({/92946a86-d8c62312})

[comment]: # ({f190dd1a-0b67f229})
###### Запрос на запуск

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

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

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

*Пример:*

    {"id":3,"type":4}

[comment]: # ({/f190dd1a-0b67f229})

[comment]: # ({fce4bba2-f3c8d489})
###### Запрос на останов

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

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

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

*Пример:*

    {"id":3,"type":5}

[comment]: # ({/fce4bba2-f3c8d489})

[comment]: # ({43e9416d-b2754963})
###### Запрос экспорта

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

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

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

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

*Пример:*

    {"id":4,"type":6,"key":"test.key","parameters":["foo","bar"]}

[comment]: # ({/43e9416d-b2754963})

[comment]: # ({33f976c2-27e2bd0c})
###### Ответ экспорта

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

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

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

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

*Примеры:*

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

или

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

[comment]: # ({/33f976c2-27e2bd0c})

[comment]: # ({96eb71cf-15a7dce0})
###### Запрос на конфигурацию

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

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

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

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

*Пример:*

    {"id":6,"type":8,"global_options":{...},"private_options":{...}}

[comment]: # ({/96eb71cf-15a7dce0})

[comment]: # ({99291487-14b279bc})
###### Запрос на валидацию

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

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

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

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

*Пример:*

    {"id":7,"type":9,"private_options":{...}}

[comment]: # ({/99291487-14b279bc})

[comment]: # ({3b19fa95-9a73001b})
###### Ответ на валидацию

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

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

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

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

*Примеры:*

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

или

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

[comment]: # ({/3b19fa95-9a73001b})

[comment]: # translation:outdated

