1 Протокол обмена данными сервер-прокси

Обзор

Обмен данными сервер - прокси основывается на JSON формате.

Сообщения запроса и ответа должны начинаться с длины заголовка и данных.

Пассивный прокси

Запрос конфигурации прокси

Запрос proxy config отправляется сервером, чтобы обеспечить прокси данными конфигурации. Этот запрос отправляется каждые ProxyConfigFrequency (параметр конфигурации сервера) секунд.

имя тип значения описание
сервер→прокси:
request строка 'proxy config'
<таблица> объект один или несколько объектов с <таблица> данными
поля массив массив имен полей
- строка имя поля
данные массив массив строк
- массив массив колонок
- строка,число значение колонки с типом, зависящим от типа колонки в схеме базы данных
прокси→сервер:
response строка информация об успешности запроса ('success' или 'failed')
version строка версия прокси (<мажорная>.<минорная>.<номер сборки>)

Пример:

сервер→прокси:

{
           "request": "proxy config",
           "globalmacro":{
               "fields":[
                   "globalmacroid",
                   "macro",
                   "value"
               ],
               "data":[
                   [
                       2,
                       "{$SNMP_COMMUNITY}",
                       "public"
                   ]
               ]
           },
           "hosts":{
               "fields":[
                   "hostid",
                   "host",
                   "status",
                   "ipmi_authtype",
                   "ipmi_privilege",
                   "ipmi_username",
                   "ipmi_password",
                   "name",
                   "tls_connect",
                   "tls_accept",
                   "tls_issuer",
                   "tls_subject",
                   "tls_psk_identity",
                   "tls_psk"
               ],
               "data":[
                   [
                       10001,
                       "Template OS Linux",
                       3,
                       -1,
                       2,
                       "",
                       "",
                       "Template OS Linux",
                       1,
                       1,
                       "",
                       "",
                       "",
                       ""
                   ],
                   [
                       10050,
                       "Template App Zabbix Agent",
                       3,
                       -1,
                       2,
                       "",
                       "",
                       "Template App Zabbix Agent",
                       1,
                       1,
                       "",
                       "",
                       "",
                       ""
                   ],
                   [
                       10105,
                       "Logger",
                       0,
                       -1,
                       2,
                       "",
                       "",
                       "Logger",
                       1,
                       1,
                       "",
                       "",
                       "",
                       ""
                   ]
               ]
           },
           "interface":{
               "fields":[
                   "interfaceid",
                   "hostid",
                   "main",
                   "type",
                   "useip",
                   "ip",
                   "dns",
                   "port",
                   "bulk"
               ],
               "data":[
                   [
                       2,
                       10105,
                       1,
                       1,
                       1,
                       "127.0.0.1",
                       "",
                       "10050",
                       1
                   ]
               ]
           },
           ...
       }

прокси→сервер:

{
         "response": "success",
         "version": "3.4.0"
       }
Запрос прокси

Запрос proxy data используется для получения данных доступности узлов сети, истории, обнаружения и авторегистрации с прокси. Этот запрос отправляется каждые ProxyDataFrequency (параметр конфигурации сервера) секунд.

имя тип значения описание
сервер→прокси:
request строка 'proxy data'
прокси→сервер:
host availability массив (опционально) массив объектов с данными о доступности узлов сети
hostid число идентификатор узла сети
available число доступность Zabbix агента

0, HOST_AVAILABLE_UNKNOWN - неизвестно
1, HOST_AVAILABLE_TRUE - доступен
2, HOST_AVAILABLE_FALSE - недоступен
error строка сообщение об ошибке Zabbix агента или пустая строка
snmp_available число доступность SNMP агента

0, HOST_AVAILABLE_UNKNOWN - неизвестно
1, HOST_AVAILABLE_TRUE - доступен
2, HOST_AVAILABLE_FALSE - недоступен
snmp_error строка сообщение об ошибке SNMP агента или пустая строка
ipmi_available число доступность IPMI агента

0, HOST_AVAILABLE_UNKNOWN - неизвестно
1, HOST_AVAILABLE_TRUE - доступен
2, HOST_AVAILABLE_FALSE - недоступен
ipmi_error строка сообщение об ошибке IPMI агента или пустая строка
jmx_available число доступность JMX агента

0, HOST_AVAILABLE_UNKNOWN - неизвестно
1, HOST_AVAILABLE_TRUE - доступен
2, HOST_AVAILABLE_FALSE - недоступен
jmx_error строка сообщение об ошибке JMX агента или пустая строка
history data массив (опционально) массив объектов с данными истории
itemid число идентификатор элемента данных
clock число штамп времени значения элемента данных (секунды)
ns число штамп времени значения элемента данных (наносекунды)
value строка (опционально) значение элемента данных
timestamp число (опционально) штамп времени у элементов данных с типом журнал (лог)
source строка (опционально) значение источника элемента данных журнала событий
severity число (опционально) значение важности элемента данных журнала событий
eventid число (опционально) значение eventid элемента данных журнала событий
state строка (опционально) статус элемента данных
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize число (опционально) последний размер журнала у элементов данных с типом журнал (лог)
mtime число (опционально) время модификации журнала у элементов данных с типом журнал (лог)
discovery data массив (опционально) массив объектов с данными обнаружения
clock число штамп времени данных обнаружения
druleid число идентификатор правила обнаружения
dcheckid число идентификатор проверки обнаружения или null для данных правила обнаружения
type число тип проверки обнаружения:

-1 данные правила обнаружения
0, SVC_SSH - проверка SSH сервиса
1, SVC_LDAP - проверка LDAP сервиса
2, SVC_SMTP - проверка SMTP сервиса
3, SVC_FTP - проверка FTP сервиса
4, SVC_HTTP - проверка HTTP сервиса
5, SVC_POP - проверка POP сервиса
6, SVC_NNTP - проверка NNTP сервиса
7, SVC_IMAP - проверка IMAP сервиса
8, SVC_TCP - проверка доступности TCP порта
9, SVC_AGENT - Zabbix агент
10, SVC_SNMPv1 - SNMPv1 агент
11, SVC_SNMPv2 - SNMPv2 агент
12, SVC_ICMPPING - ICMP пинг
13, SVC_SNMPv3 - SNMPv3 агент
14, SVC_HTTPS - проверка HTTPS сервиса
15, SVC_TELNET - проверка доступности Telnet
ip строка IP адрес хоста
dns строка DNS имя хоста
port число (опционально) номер порта сервиса
key_ строка (опционально) ключ элемента данных для проверки обнаружения с типом 9 SVC_AGENT
value строка (опционально) полученное значение от сервиса, может быть пустым по большинству сервисов
status число (опционально) состояние сервиса:

0, DOBJECT_STATUS_UP - Сервис ДОСТУПЕН
1, DOBJECT_STATUS_DOWN - Сервис НЕДОСТУПЕН
auto registration массив (опционально) массив объектов с данными авторегистрации
clock число штамп времени данных авторегистрации
host строка имя хоста
ip строка (опционально) IP адрес хоста
dns строка (опционально) разрешенный DNS имя с IP адреса
port строка (опционально) порт хоста
host_metadata строка (опционально) метаданные хоста, которые отправил агент (на основе параметров конфигурации агента HostMetadata или HostMetadataItem)
tasks массив (опционально) массив задач
type число тип задачи:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - результат удаленной команды
status число состояние выполнения удаленной команды:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED - удаленная команда завершена успешно
1, ZBX_TM_REMOTE_COMMAND_FAILED - удаленная команда завершилась с ошибкой
error строка (опционально) сообщение об ошибке
parent_taskid число id родительской задачи
more число (опционально) 1 - имеются еще данные истории к отправке
clock число штамп времени передачи данных (секунды)
ns число штамп времени передачи данных (наносекунды)
version строка версия прокси (<мажорная>.<минорная>.<номер сборки>)
сервер→прокси:
response строка информация об успешности запроса ('success' или 'failed')
tasks массив (опционально) array of tasks
type число тип задачи:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - удаленная команда
clock число время создания задачи
ttl число время в секундах после которого срок задачи истекает
commandtype число тип удаленной команды:

0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - использование пользовательского скрипта
1, ZBX_SCRIPT_TYPE_IPMI - использование IPMI
2, ZBX_SCRIPT_TYPE_SSH - использование SSH
3, ZBX_SCRIPT_TYPE_TELNET - использование Telnet
4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - использование глобального скрипта (в настоящее время возможности эквивалентны пользовательской команде)
command строка выполняемая удаленная команда
execute_on число цель выполнения для пользовательских скриптов:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - выполнение скрипта на стороне агента
1, ZBX_SCRIPT_EXECUTE_ON_SERVER - выполнение скрипта на стороне сервера
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - выполнение скрипта на стороне прокси
port число (опционально) порт для telnet и ssh команд
authtype число (опционально) тип аутентификации для ssh команд
username строка (опционально) имя пользователя для telnet и ssh команд
password строка (опционально) пароль для telnet и ssh команд
publickey строка (опционально) публичный ключ для ssh команд
privatekey строка (опционально) приватный ключ для ssh команд
parent_taskid число id родительской задачи
hostid число hostid цели

Пример:

сервер→прокси:

{
         "request": "proxy data"
       }

прокси→сервер:

{
           "host availability":[
               {
                   "hostid":10106,
                   "available":1,
                   "error":"",
                   "snmp_available":0,
                   "snmp_error":"",
                   "ipmi_available":0,
                   "ipmi_error":"",
                   "jmx_available":0,
                   "jmx_error":""
               },
               {
                   "hostid":10107,
                   "available":1,
                   "error":"",
                   "snmp_available":0,
                   "snmp_error":"",
                   "ipmi_available":0,
                   "ipmi_error":"",
                   "jmx_available":0,
                   "jmx_error":""
               }
           ],
           "history data":[
               {
                   "itemid":"12345",
                   "clock":1478609647,
                   "ns":332510044,
                   "value":"52956612"
               },
               {
                   "itemid":"12346",
                   "clock":1478609647,
                   "ns":330690279,
                   "state":1,
                   "value":"Cannot find information for this network interface in /proc/net/dev."
               }
           ],
           "discovery data":[
               {
                   "clock":1478608764,
                   "drule":2,
                   "dcheck":3,
                   "type":12,
                   "ip":"10.3.0.10",
                   "dns":"vdebian",
                   "status":1
               },
               {
                   "clock":1478608764,
                   "drule":2,
                   "dcheck":null,
                   "type":-1,
                   "ip":"10.3.0.10",
                   "dns":"vdebian",
                   "status":1
               }
           ],
           "auto registration":[
               {
                   "clock":1478608371,
                   "host":"Logger1",
                   "ip":"10.3.0.1",
                   "dns":"localhost",
                   "port":"10050"
               },
               {
                   "clock":1478608381,
                   "host":"Logger2",
                   "ip":"10.3.0.2",
                   "dns":"localhost",
                   "port":"10050"
               }
           ],
           "tasks":[
               {
                   "type": 0,
                   "status": 0,
                   "parent_taskid": 10
               },
               {
                   "type": 0,
                   "status": 1,
                   "error": "No permissions to execute task.",
                   "parent_taskid": 20
               }
           ],    
           "clock":1478609648,
           "ns":157729208,
           "version":"3.4.0"
       }

сервер→прокси:

{
         "response": "success",
         "tasks":[
             {
                "type": 1,
                "clock": 1478608371,
                "ttl": 600,
                "commandtype": 2,
                "command": "restart_service1.sh",
                "execute_on": 2,
                "port": 80,
                "authtype": 0,
                "username": "userA",
                "password": "password1",
                "publickey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe",
                "privatekey": "lsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5QCqGKukO1De7zhd",
                "parent_taskid": 10,
                "hostid": 10070
             },
             {
                "type": 1,
                "clock": 1478608381,
                "ttl": 600,
                "commandtype": 1,
                "command": "restart_service2.sh",
                "execute_on": 0,
                "authtype": 0,
                "username": "",
                "password": "",
                "publickey": "",
                "privatekey": "",
                "parent_taskid": 20,
                "hostid": 10084
             }
         ]
       }

Активный прокси

Запрос контрольного сообщения

Запрос proxy heartbeat отправляется прокси, чтобы сообщить, что прокси запущен. Этот запрос отправляется каждые HeartbeatFrequency (параметр конфигурации прокси) секунд.

имя тип значения описание
прокси→сервер:
request строка 'proxy heartbeat'
host строка имя прокси
version строка версия прокси (<мажорная>.<минорная>.<номер сборки>)
сервер→прокси:
response строка информация об успешности запроса ('success' или 'failed')

прокси→сервер:

{
          "request": "proxy heartbeat",
          "host": "Proxy #12",
          "version": "3.4.0"
       }

сервер→прокси:

{
         "response": "success"
       }
Запрос конфигурации прокси

Запрос proxy config отправляется прокси, чтобы получить данные конфигурации прокси. Запрос отправляется каждые ConfigFrequency (параметр конфигурации прокси) секунд.

имя тип значения описание
прокси→сервер:
request строка 'proxy config'
host строка имя прокси
version строка версия прокси (<мажорная>.<минорная>.<номер сборки>)
сервер→прокси:
request строка 'proxy config'
<table> объект один или несколько объектов с <таблица> данными
fields массив массив имен полей
- строка имя поля
data массив массив строк
- массив массив колонок
- строка,число значение колонки с типом, зависящим от типа колонки в схеме базы данных
прокси→сервер:
response строка информация об успешности запроса ('success' или 'failed')

Пример:

прокси→сервер:

{
         "request": "proxy config",
         "host": "Proxy #12",
         "version":"3.4.0"
       }

сервер→прокси:

{
           "globalmacro":{
               "fields":[
                   "globalmacroid",
                   "macro",
                   "value"
               ],
               "data":[
                   [
                       2,
                       "{$SNMP_COMMUNITY}",
                       "public"
                   ]
               ]
           },
           "hosts":{
               "fields":[
                   "hostid",
                   "host",
                   "status",
                   "ipmi_authtype",
                   "ipmi_privilege",
                   "ipmi_username",
                   "ipmi_password",
                   "name",
                   "tls_connect",
                   "tls_accept",
                   "tls_issuer",
                   "tls_subject",
                   "tls_psk_identity",
                   "tls_psk"
               ],
               "data":[
                   [
                       10001,
                       "Template OS Linux",
                       3,
                       -1,
                       2,
                       "",
                       "",
                       "Template OS Linux",
                       1,
                       1,
                       "",
                       "",
                       "",
                       ""
                   ],
                   [
                       10050,
                       "Template App Zabbix Agent",
                       3,
                       -1,
                       2,
                       "",
                       "",
                       "Template App Zabbix Agent",
                       1,
                       1,
                       "",
                       "",
                       "",
                       ""
                   ],
                   [
                       10105,
                       "Logger",
                       0,
                       -1,
                       2,
                       "",
                       "",
                       "Logger",
                       1,
                       1,
                       "",
                       "",
                       "",
                       ""
                   ]
               ]
           },
           "interface":{
               "fields":[
                   "interfaceid",
                   "hostid",
                   "main",
                   "type",
                   "useip",
                   "ip",
                   "dns",
                   "port",
                   "bulk"
               ],
               "data":[
                   [
                       2,
                       10105,
                       1,
                       1,
                       1,
                       "127.0.0.1",
                       "",
                       "10050",
                       1
                   ]
               ]
           },
           ...
       }

прокси→сервер:

{
         "response": "success"
       }
Запрос данных прокси

Запрос proxy data отправляется прокси, чтобы предоставить данные доступности узлов сети, истории, обнаружения и авторегистрации. Этот запрос отправляется каждые DataSenderFrequency (параметр конфигурации прокси) секунд.

имя тип значения описание
прокси→сервер:
request строка 'proxy data'
host строка имя прокси
host availability массив (опционально) массив объектов с данными о доступности узлов сети
hostid число идентификатор узла сети
available число доступность Zabbix агента

0, HOST_AVAILABLE_UNKNOWN - неизвестно
1, HOST_AVAILABLE_TRUE - доступен
2, HOST_AVAILABLE_FALSE - недоступен
error строка сообщение об ошибке Zabbix агента или пустая строка
snmp_available число доступность SNMP агента

0, HOST_AVAILABLE_UNKNOWN - неизвестно
1, HOST_AVAILABLE_TRUE - доступен
2, HOST_AVAILABLE_FALSE - недоступен
snmp_error строка сообщение об ошибке SNMP агента или пустая строка
ipmi_available число доступность IPMI агента

0, HOST_AVAILABLE_UNKNOWN - неизвестно
1, HOST_AVAILABLE_TRUE - доступен
2, HOST_AVAILABLE_FALSE - недоступен
ipmi_error строка сообщение об ошибке IPMI агента или пустая строка
jmx_available число доступность JMX агента

0, HOST_AVAILABLE_UNKNOWN - неизвестно
1, HOST_AVAILABLE_TRUE - доступен
2, HOST_AVAILABLE_FALSE - недоступен
jmx_error строка сообщение об ошибке JMX агента или пустая строка
history data массив (опционально) массив объектов с данными истории
itemid число идентификатор элемента данных
clock число штамп времени значения элемента данных (секунды)
ns число штамп времени значения элемента данных (наносекунды)
value строка (опционально) значение элемента данных
timestamp число (опционально) штамп времени у элементов данных с типом журнал (лог)
source строка (опционально) значение источника элемента данных журнала событий
severity число (опционально) значение важности элемента данных журнала событий
eventid число (опционально) значение eventid элемента данных журнала событий
state строка (опционально) статус элемента данных
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize число (опционально) последний размер журнала у элементов данных с типом журнал (лог)
mtime число (опционально) время модификации журнала у элементов данных с типом журнал (лог)
discovery data массив (опционально) массив объектов с данными обнаружения
clock число штамп времени данных обнаружения
druleid число идентификатор правила обнаружения
dcheckid число идентификатор проверки обнаружения или null для данных правила обнаружения
type число тип проверки обнаружения:

-1 данные правила обнаружения
0, SVC_SSH - проверка SSH сервиса
1, SVC_LDAP - проверка LDAP сервиса
2, SVC_SMTP - проверка SMTP сервиса
3, SVC_FTP - проверка FTP сервиса
4, SVC_HTTP - проверка HTTP сервиса
5, SVC_POP - проверка POP сервиса
6, SVC_NNTP - проверка NNTP сервиса
7, SVC_IMAP - проверка IMAP сервиса
8, SVC_TCP - проверка доступности TCP порта
9, SVC_AGENT - Zabbix агент
10, SVC_SNMPv1 - SNMPv1 агент
11, SVC_SNMPv2 - SNMPv2 агент
12, SVC_ICMPPING - ICMP пинг
13, SVC_SNMPv3 - SNMPv3 агент
14, SVC_HTTPS - проверка HTTPS сервиса
15, SVC_TELNET - проверка доступности Telnet
ip строка IP адрес хоста
dns строка DNS имя хоста
port число (опционально) номер порта сервиса
key_ строка (опционально) ключ элемента данных для проверки обнаружения с типом 9 SVC_AGENT
value строка (опционально) полученное значение от сервиса, может быть пустым по большинству сервисов
status число (опционально) состояние сервиса:

0, DOBJECT_STATUS_UP - Сервис ДОСТУПЕН
1, DOBJECT_STATUS_DOWN - Сервис НЕДОСТУПЕН
auto registration массив (опционально) массив объектов с данными авторегистрации
clock число штамп времени данных авторегистрации
host строка имя хоста
ip строка (опционально) IP адрес хоста
dns строка (опционально) разрешенный DNS имя с IP адреса
port строка (опционально) порт хоста
host_metadata строка (опционально) метаданные хоста, которые отправил агент (на основе параметров конфигурации агента HostMetadata или HostMetadataItem)
tasks массив (опционально) массив задач
type число тип задачи:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - результат удаленной команды
status число состояние выполнения удаленной команды:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED - удаленная команда завершена успешно
1, ZBX_TM_REMOTE_COMMAND_FAILED - удаленная команда завершилась с ошибкой
error строка (опционально) сообщение об ошибке
parent_taskid число id родительской задачи
more число (опционально) 1 - имеются еще данные истории к отправке
clock число штамп времени передачи данных (секунды)
ns число штамп времени передачи данных (наносекунды)
version строка версия прокси (<мажорная>.<минорная>.<номер сборки>)
сервер→прокси:
response строка информация об успешности запроса ('success' или 'failed')
tasks массив (опционально) array of tasks
type число тип задачи:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - удаленная команда
clock число время создания задачи
ttl число время в секундах после которого срок задачи истекает
commandtype число тип удаленной команды:

0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - использование пользовательского скрипта
1, ZBX_SCRIPT_TYPE_IPMI - использование IPMI
2, ZBX_SCRIPT_TYPE_SSH - использование SSH
3, ZBX_SCRIPT_TYPE_TELNET - использование Telnet
4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - использование глобального скрипта (в настоящее время возможности эквивалентны пользовательской команде)
command строка выполняемая удаленная команда
execute_on число цель выполнения для пользовательских скриптов:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - выполнение скрипта на стороне агента
1, ZBX_SCRIPT_EXECUTE_ON_SERVER - выполнение скрипта на стороне сервера
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - выполнение скрипта на стороне прокси
port число (опционально) порт для telnet и ssh команд
authtype число (опционально) тип аутентификации для ssh команд
username строка (опционально) имя пользователя для telnet и ssh команд
password строка (опционально) пароль для telnet и ssh команд
publickey строка (опционально) публичный ключ для ssh команд
privatekey строка (опционально) приватный ключ для ssh команд
parent_taskid число id родительской задачи
hostid число hostid цели

Пример:

пркси→сервер:

{
         "request": "proxy data",
         "host": "Proxy #12", 
           "host availability":[
               {
                   "hostid":10106,
                   "available":1,
                   "error":"",
                   "snmp_available":0,
                   "snmp_error":"",
                   "ipmi_available":0,
                   "ipmi_error":"",
                   "jmx_available":0,
                   "jmx_error":""
               },
               {
                   "hostid":10107,
                   "available":1,
                   "error":"",
                   "snmp_available":0,
                   "snmp_error":"",
                   "ipmi_available":0,
                   "ipmi_error":"",
                   "jmx_available":0,
                   "jmx_error":""
               }
           ],
           "history data":[
               {
                   "itemid":"12345",
                   "clock":1478609647,
                   "ns":332510044,
                   "value":"52956612"
               },
               {
                   "itemid":"12346",
                   "clock":1478609647,
                   "ns":330690279,
                   "state":1,
                   "value":"Cannot find information for this network interface in /proc/net/dev."
               }
           ],
           "discovery data":[
               {
                   "clock":1478608764,
                   "drule":2,
                   "dcheck":3,
                   "type":12,
                   "ip":"10.3.0.10",
                   "dns":"vdebian",
                   "status":1
               },
               {
                   "clock":1478608764,
                   "drule":2,
                   "dcheck":null,
                   "type":-1,
                   "ip":"10.3.0.10",
                   "dns":"vdebian",
                   "status":1
               }
           ],
           "auto registration":[
               {
                   "clock":1478608371,
                   "host":"Logger1",
                   "ip":"10.3.0.1",
                   "dns":"localhost",
                   "port":"10050"
               },
               {
                   "clock":1478608381,
                   "host":"Logger2",
                   "ip":"10.3.0.2",
                   "dns":"localhost",
                   "port":"10050"
               }
           ],
           "tasks":[
               {
                   "type": 2,
                   "clock":1478608371,
                   "ttl": 600,
                   "commandtype": 2,
                   "command": "restart_service1.sh",
                   "execute_on": 2,
                   "port": 80,
                   "authtype": 0,
                   "username": "userA",
                   "password": "password1",
                   "publickey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe",
                   "privatekey": "lsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5QCqGKukO1De7zhd",
                   "parent_taskid": 10,
                   "hostid": 10070
               },
               {
                   "type": 2,
                   "clock":1478608381,
                   "ttl": 600,
                   "commandtype": 1,
                   "command": "restart_service2.sh",
                   "execute_on": 0,
                   "authtype": 0,
                   "username": "",
                   "password": "",
                   "publickey": "",
                   "privatekey": "",
                   "parent_taskid": 20,
                   "hostid": 10084
               }
           ],
           "tasks":[
               {
                   "type": 0,
                   "status": 0,
                   "parent_taskid": 10
               },
               {
                   "type": 0,
                   "status": 1,
                   "error": "No permissions to execute task.",
                   "parent_taskid": 20
               }
           ], 
           "clock":1478609648,
           "ns":157729208,
           "version":"3.4.0"
       }

сервер→прокси:

{
         "response": "success",
         "tasks":[
             {
                "type": 1,
                "clock": 1478608371,
                "ttl": 600,
                "commandtype": 2,
                "command": "restart_service1.sh",
                "execute_on": 2,
                "port": 80,
                "authtype": 0,
                "username": "userA",
                "password": "password1",
                "publickey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe",
                "privatekey": "lsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5QCqGKukO1De7zhd",
                "parent_taskid": 10,
                "hostid": 10070
             },
             {
                "type": 1,
                "clock": 1478608381,
                "ttl": 600,
                "commandtype": 1,
                "command": "restart_service2.sh",
                "execute_on": 0,
                "authtype": 0,
                "username": "",
                "password": "",
                "publickey": "",
                "privatekey": "",
                "parent_taskid": 20,
                "hostid": 10084
             }
         ]
       }

Обратная совместимость

Сервер поддерживает частичную обратную совместимость, принимая старые запросы host availability, history data, discovery data и auto registration.