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

Обзор

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

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

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

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

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

имя тип значения описание
сервер→прокси:
request строка «proxy config»
<таблица> объект Один или более объектов с данными <таблицы>.
fields массив Массив имён полей.
- строка Имя поля.
data массив Массив строк.
- массив Массив столбцов.
- строка,число Значение столбца с типом, зависящим от типа столбца в схеме базы данных.
прокси→сервер:
response строка Информация об успешности запроса («success» или «failed»).
version строка Версия прокси (<major>.<minor>.<build>).

Пример:

server→proxy:

{
           "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,
                       "Linux",
                       3,
                       -1,
                       2,
                       "",
                       "",
                       "Linux",
                       1,
                       1,
                       "",
                       "",
                       "",
                       ""
                   ],
                   [
                       10050,
                       "Zabbix Agent",
                       3,
                       -1,
                       2,
                       "",
                       "",
                       "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
                   ]
               ]
           },
           ...
       }

proxy→server:

{
         "response": "success",
         "version": "6.0.0"
       }
Запрос данных пассивного прокси

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

имя тип значения описание
сервер→прокси:
request строка «proxy data»
прокси→сервер:
session строка Токен сессии данных.
interface availability массив (опционально) Массив объектов данных о доступности интерфейсов.
interfaceid число Идентификатор интерфейса.
available число Доступность интерфейса:

0, INTERFACE_AVAILABLE_UNKNOWN - неизвестно
1, INTERFACE_AVAILABLE_TRUE - доступен
2, INTERFACE_AVAILABLE_FALSE - недоступен
error строка Сообщение об ошибке интерфейса либо пустая строка.
history data массив (опционально) Массив объектов данных истории.
itemid число Идентификатор элемента данных.
clock число Отметка времени элемента данных (секунды).
ns число Отметка времени элемента данных (наносекунды).
value строка (опционально) Значение элемента данных.
id число Идентификатор значения (возрастающий счётчик, уникальный в пределах одной сессии данных).
timestamp число (опционально) Отметка времени (timestamp) элементов данных журнального типа.
source строка (опционально) Источник (source) элемента данных журнального типа.
severity число (опционально) Важность (severity) элемента данных журнального типа.
eventid число (опционально) Идентификатор (eventid) элемента данных журнального типа.
state строка (опционально) Состояние элемента данных:
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize число (опционально) Последний размер файла журнала (lastlogsize) элемента данных журнального типа.
mtime число (опционально) Отметка времени последнего обновления (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 - Сервис работает (UP)
1, DOBJECT_STATUS_DOWN - Сервис не работает (DOWN)
auto registration массив (опционально) Массив объектов данных авторегистрации.
clock число Отметка времени данных авторегистрации.
host строка Имя узла сети.
ip строка (опционально) IP адрес узла сети.
dns строка (опционально) DNS имя, отрезолвенное из IP адреса.
port строка (опционально) Порт узла сети.
host_metadata строка (optional) Метаданные узла сети, отосланные агентом (на основе параметров конфигурации агента 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 число Идентификатор родительской задачи.
more число (опционально) 1 - имеются дополнительные данные истории для отправки.
clock число (опционально) Отметка времени обмена данными (секунды).
ns число (опционально) Отметка времени обмена данными (наносекунды).
version строка Версия прокси (<major>.<minor>.<build>).
сервер→прокси:
response строка Информация об успешности запороса («success» или «failed»).
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 строка (опционально) Открытый ключ (public key) для команд SSH.
privatekey строка (опционально) Закрытый ключ (private key) для команд SSH.
parent_taskid число Идентификатор родительской задачи.
hostid число Идентификатор целевого узла сети.

Пример:

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

{
         "request": "proxy data"
       }

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

{
           "session": "12345678901234567890123456789012"
           "interface availability": [
               {
                   "interfaceid": 1,
                   "available": 1,
                   "error": ""
           },
               {
                   "interfaceid": 2,
                   "available": 2,
                   "error": "Get value from agent failed: cannot connect to [[127.0.0.1]:10049]: [111] Connection refused"
           },
               {
                   "interfaceid": 3,
                   "available": 1,
                   "error": ""
           },
               {
                   "interfaceid": 4,
                   "available": 1,
                   "error": ""
           }
           ],
           "history data":[
               {
                   "itemid":"12345",
                   "clock":1478609647,
                   "ns":332510044,
                   "value":"52956612",
                   "id": 1
               },
               {
                   "itemid":"12346",
                   "clock":1478609647,
                   "ns":330690279,
                   "state":1,
                   "value":"Cannot find information for this network interface in /proc/net/dev.",
                   "id": 2
               }
           ],
           "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
               }
           ],    
           "version":"5.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 строка Версия прокси сервера (<major>.<minor>.<build>).
сервер→прокси:
response строка Информация об успешности запроса («success» или «failed»).

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

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

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

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

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

имя тип значения описание
прокси→сервер:
request строка «proxy config»
host строка Имя прокси сервера.
version строка Версия прокси сервера (<major>.<minor>.<build>).
сервер→прокси:
request строка «proxy config»
<таблица> объект Один или более объектов с данными <таблицы>.
fields массив Массив имён полей.
- строка Имя поля.
data массив Массив строк.
- массив Массив столбцов.
- строка,число Значение столбца с типом, зависящим от типа столбца в схеме базы данных.
прокси→сервер:
response строка Информация об успешности запроса («success» или «failed»).

Пример:

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

{
         "request": "proxy config",
         "host": "Proxy #12",
         "version":"5.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,
                       "Linux",
                       3,
                       -1,
                       2,
                       "",
                       "",
                       "Linux",
                       1,
                       1,
                       "",
                       "",
                       "",
                       ""
                   ],
                   [
                       10050,
                       "Zabbix Agent",
                       3,
                       -1,
                       2,
                       "",
                       "",
                       "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 секунд (параметр конфигурации прокси). Обратите внимание, что активный прокси всё ещё будет опрашивать Zabbix сервер каждую секунду относительно задач на удалённое выполнение (с пустым запросом proxy data).

имя тип значения описание
прокси→сервер:
request строка «proxy data»
host строка Имя прокси сервера.
session строка Токен сессии данных.
interface availability массив (опционально) Массив объектов данных о доступности интерфейсов.
interfaceid число Идентификатор интерфейса.
available число Доступность интерфейса:

0, INTERFACE_AVAILABLE_UNKNOWN - неизвестно
1, INTERFACE_AVAILABLE_TRUE - доступен
2, INTERFACE_AVAILABLE_FALSE - недоступен
error строка Сообщение об ошибке интерфейса либо пустая строка.
history data массив (опционально) Массив объектов данных истории.
itemid число Идентификатор элемента данных.
clock число Отметка времени элемента данных (секунды).
ns число Отметка времени элемента данных (наносекунды).
value строка (опционально) Значение элемента данных.
id число Идентификатор значения (возрастающий счётчик, уникальный в пределах одной сессии данных).
timestamp число (опционально) Отметка времени (timestamp) элементов данных журнального типа.
source строка (опционально) Источник (source) элемента данных журнального типа.
severity число (опционально) Важность (severity) элемента данных журнального типа.
eventid число (опционально) Идентификатор (eventid) элемента данных журнального типа.
state строка (опционально) Состояние элемента данных:
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize число (опционально) Последний размер файла журнала (lastlogsize) элемента данных журнального типа.
mtime число (опционально) Отметка времени последнего обновления (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 - Сервис работает (UP)
1, DOBJECT_STATUS_DOWN - Сервис не работает (DOWN)
autoregistration массив (опционально) Массив объектов данных авторегистрации.
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 число Идентификатор родительской задачи.
more число (опционально) 1 - имеются дополнительные данные истории для отправки.
clock число (опционально) Отметка времени обмена данными (секунды).
ns число (опционально) Отметка времени обмена данными (наносекунды).
version строка Версия прокси сервера (<major>.<minor>.<build>).
сервер→прокси:
response строка Информация об успешности запороса («success» или «failed»).
upload строка Управление загрузкой для исторических данных (история, авторегистрация, доступность узлов сети, сетевое обнаружение).

Возможные значения:
enabled - нормальная работа
disabled - сервер не принимает данные (возможно, из-за превышения ограничения внутреннего кэша)
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 строка (опционально) Открытый ключ (public key) для команд SSH.
privatekey строка (опционально) Закрытый ключ (private key) для команд SSH.
parent_taskid число Идентификатор родительской задачи.
hostid число Идентификатор целевого узла сети.

Пример:

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

{
           "request": "proxy data",
           "host": "Proxy #12", 
           "session": "12345678901234567890123456789012",
           "interface availability": [
               {
                   "interfaceid": 1,
                   "available": 1,
                   "error": ""
           },
               {
                   "interfaceid": 2,
                   "available": 2,
                   "error": "Get value from agent failed: cannot connect to [[127.0.0.1]:10049]: [111] Connection refused"
           },
               {
                   "interfaceid": 3,
                   "available": 1,
                   "error": ""
           },
               {
                   "interfaceid": 4,
                   "available": 1,
                   "error": ""
           }
           ],
           "history data":[
               {
                   "itemid":"12345",
                   "clock":1478609647,
                   "ns":332510044,
                   "value":"52956612",
                   "id": 1
               },
               {
                   "itemid":"12346",
                   "clock":1478609647,
                   "ns":330690279,
                   "state":1,
                   "value":"Cannot find information for this network interface in /proc/net/dev.",
                   "id": 2
               }
           ],
           "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
               }
           ], 
           "version":"5.4.0"
       }

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

{
         "response": "success",
         "upload": "enabled",
         "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
             }
         ]
       }