1 Protocol de bescanvi de dades servidor-proxy

Vista general

El bescanvi de dades servidor - proxy es basa en el format JSON.

Els missatges de petició de resposta han de començar amb una capçalera i longitud de les dades.

Proxy passiu

Petició de configuració del proxy

La petició proxy config s'envia per el servidor per proveir les dades de configuració del proxy. Aquesta petició s'envia cada ProxyConfigFrequency (paràmetre de configuració del servidor) segons.

nom tipus de valor descripció
server→proxy:
request string 'proxy config'
<table> object Un o més objectes amb dades <taula>.
fields array Matriu de noms de camps.
- string Nom del camp.
data array Matriu de fileres.
- array Matriu de columnes.
- string,number Valor de columna amb tipus en funció del tipus de columna a l'esquema de la base de dades.
proxy→server:
response string Petició d'informació ('èxit' o 'error').
version string Versió del proxy (<major>.<minor>.<build>).

Exemple:

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"
       }
Petició del proxy

La petició de proxy data s'empra per obtindre dades de disponibilitat de la interfície d'equip, dades històriques, de descobriment i registre automàtic del proxy. Aquesta petició s'envia cada ProxyDataFrequency segons (paràmetre de configuració del servidor).

|nom|<|tipus de valor|descripció| |-|-----------|-----------|--------------------------- ----------------| |server→proxy:|<|<|<| |sol·licitud|<|string|'informació del proxy'| |proxy→server:|<|<|<| |session|<|string|Fitxa de sessió de dades.| |interface availability|<|array|(opcional) Matriu d'objectes de dades de disponibilitat de la interfície.| | |interfaceid|number|Identificador de la interfície.| |^|available|number|Disponibilitat de la interfície:

0, INTERFACE_AVAILABLE- desconegut
1,
INTERFACE_AVAILABLE _TRUE* - disponible
2, INTERFACE_AVAILABLE_FALSE - no disponible| |^|error|string|Missatge d'error de la interfície o cadena buida.| |history data|<|array|(opcional) Matriu d'objectes de dades de l'historial.| | |itemid|number|Identificador de l'element.| |^|clock|number|Marca de temps del valor de l'element (segons).| |^|ns|number|Marca de temps del valor de l'element (nanosegons).| |^|value|string|(opcional) Valor de l'element.| |^|id|number|Identificador del valor (comptador ascendent, únic en una sessió de dades).| |^|timestamp|number|(opcional) Marca de temps dels elements del tipus de registre.| |^|source|string|(opcional) Valor font de l'element del registre d'esdeveniments.| |^|severity|number|(opcional) Valor de gravetat de l'element del registre d'esdeveniments.| |^|eventid|number|(opcional) Valor d'event de l'element del registre d'esdeveniments.| |^|status|string|(opcional) Estat de l'element:
0, ITEM_STATE_NORMAL
1, ITEM_STATE _NO SUPORT| |^|lastlogsize|number|(opcional) Mida del darrer registre dels elements del tipus de registre.| |^|mtime|number|(opcional) Hora de modificació dels elements del tipus de registre.| |discovery data|<|array|(opcional) Matriu d'objectes de dades de descoberta.| | |clock|number|Marca de temps de les dades de descoberta.| |^|druleid|number|Identificador de la regla de descoberta.| |^|dcheckid|number|Identificador de comprovació de descoberta o res per a les dades de la regla de descoberta.| |^|type|number|Tipus de comprovació de descoberta:

-1 dades de la regla de descoberta
0, SVC_SSH - Comprovació del servei SSH
1, SVC_LDAP - Comprovació del servei LDAP
2, SVC_SMTP - Comprovació del servei SMTP
3, SVC_FTP - Comprovació del servei FTP
4, SVC_HTTP - Comprovació del servei HTTP
5, SVC_POP - Comprovació del servei POP
6, * SVC_NNTP* - Comprovació del servei NNTP
7, SVC_IMAP - Comprovació del servei IMAP
8, SVC_TCP - Comprovació de la disponibilitat del port TCP
** 9, SVC_AGENT - agent Zabbix
10, SVC_SNMPv1 - agent SNMPv1
11, SVC_SNMPv2 - agent SNMPv2
* 12, SVC_ICMPPING - Ping ICMP
13, SVC_SNMPv3 - Agent SNMPv3
14, SVC_HTTPS - Comprovació del servei HTTPS<br >15, SVC_TELNET - Comprovació de disponibilitat de Telnet| |^|ip|string|Adreça IP de l'equip.| |^|dns|string|Nom DNS de l'equip.| |^|port|number|(opcional) Nombre de port de servei.| |^|key_|string|(opcional) Clau d'element per a la comprovació de descoberta de tipus 9 SVC_AGENT| |^|value|string|(opcional) Valor rebut del servei, pot estar buit per a la majoria de serveis.| |^|status|number|(opcional) Estat del servei:

0, DOBJECT_STATUS_UP - Servei UP
1
, DOBJECT_STATUS_DOWN* - Servei DOWN| |
auto registration|<|array|(opcional) Matriu d'objectes de dades de registre automàtic.| | |clock|number|Marca de temps de dades de registre automàtic.| |^|host|string|Nom de l'equip.| |^|ip|string|(opcional) Adreça IP de l'equip.| |^|dns|string|(opcional) S'ha resolt el nom DNS des de l'adreça IP.| |^|port|string|(opcional) Port de l'equip.| |^|host_metadata|string|(opcional) Metadades de l'equip enviades per l'agent (basades en el paràmetre de configuració de l'agent HostMetadata o HostMetadataItem).| |tasks|<|array|(opcional) Matriu de tasques.| | |type|number|Tipus de tasca:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - resultat de la comanda remota| |^|status|number|Estat d'execució de l'ordre remota:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED: l'ordre remota s'ha completat correctament
1, ZBX_TM_REMOTE_COMMAND_FAILED - l'ordre remota ha fallat| |^|error|string|(opcional) Missatge d'error.| |^|parent_taskid|number|ID de la tasca principal.| |more|<|number|(opcional) 1 - hi ha més dades de l'historial per enviar.| |clock|<|number|(opcional) Marca de temps de transferència de dades (segons).| |ns|<|number|(opcional) Marca de temps de transferència de dades (nanosegons).| |version|<|string|Versió del proxy (<major>.<menor>.<build>).| |server→proxy:|<|<|<| |response|<|string|Demanar informació sobre l'èxit ('èxit' o 'error').| |task|<|array|(opcional) Matriu de tasques.| | |type|number|Tipus de tasca:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - comanda remota| |^|clock|number|Hora de creació de la tasca.| |^|ttl|number|Temps en segons després del qual caduca la tasca.| |^|commandtype|number|Tipus de comanda remota:

0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT: empreu un script personalitzat
1, ZBX_SCRIPT_TYPE_IPMI - emprar IPMI
2, ZBX_SCRIPT_TYPE_SSH - emprar SSH
3, ZBX_SCRIPT _TYPE_TELNET: empra Telnet
4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT: empra un script lobal (actualment equivalent funcionalment a script personalitzat)| |^|command|string|Ordre remota per executar.| |^|execute_on|number|Destí d'execució per a scripts personalitzats:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - executa l'script a l'agent< br>1, ZBX_SCRIPT_EXECUTE_ON_SERVER - executa l'script al servidor
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - executa l'script al proxy| |^|port|number|(opcional) Port per a ordres Telnet i SSH.| |^|authtype|number|(opcional) Tipus d'autenticació per a ordres SSH.| |^|username|string|(opcional) Nom d'usuari per a ordres Telnet i SSH.| |^|password|string|(opcional) Mot de pas per a ordres Telnet i SSH.| |^|publickey|string|(opcional) Clau pública per a ordres SSH.| |^|privatekey|string|(opcional) Clau privada per a ordres SSH.| |^|parent_taskid|number|ID de la tasca principal.| |^|hostid**|number|ID de l'equip objectiu.|

Exemple:

server→proxy:

{
         "request": "proxy data"
       }

proxy→server:

{
           "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"
       }

server→proxy:

{
         "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 actiu

Petició de heartbeat proxy

La petició proxy heartbeat s'envia per proxy per assenyala que el proxy s'executa. Aquesta petició s'envia cada HeartbeatFrequency (paràmetre de configuració del proxy) segons.

nom vtipus de valor descripció
proxy→servidor:
request string 'proxy heartbeat'
host string Nom del proxy.
version string Versió del proxy (<major>.<minor>.<build>).
servidor→proxy:
response string Informació sobre el resultat de la petició ('success' o 'failed').

proxy→servidor:

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

servidor→proxy:

{
         "response": "success"
       }
Petició de configuració proxy

La petició proxy config és enviada per el proxy per obtindre les dades de configuració del proxy. Aquesta petició s'envia cada ConfigFrequency segons (paràmetre de confuguració del proxy).

|nom|<|<|<|tipus de valor|descripció| |-|-|-|----------|----------|--------------------- -------------------| |proxy→server :|<|<|<|<|<| |request|<|<|<|string|'proxy config'| |host|<|<|<|string|Nom del proxy.| |version|<|<|<|string|Versió del proxy (<major>.<menor>.<build>).| |server→proxy :|<|<|<|<|<| |request|<|<|<|string|'proxy config'| |<table>|<|<|<|object|Un o diversos objectes amb les dade <taula>.| | |fields|<|<|array|Taula de noms dels camps.| |^| |-|<|string|Nom del camp.| |^|data|<|<|array|Taula de línies.| |^| |-|<|array|Taula de columnes.| ||| |-|string,number|Valor de columna d'on depèn el tipus del tipus de columna a l'esquema de la base de dades.| |proxy→server :|<|<|<|<|<| |response|<|<|<|string|Petició d'informació sobre l'èxit ('èxit' o 'fallit').|

Exemple:

proxy→server :

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

server→proxy :

{
           "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"
       }
Petició de dades del proxy

Les peticions proxy data s'envien per el proxy per proporcionar dades de disponibilitat, històric, descoberta i autoregistre de la interfície de l'equip. Aquesta patició s'envia cada DataSenderFrequency segons (paràmetre de configuració del proxy). Veieu que el proxy actiu anirà informant al servidor Zabbix cada segon de tasques de comandes remotes (amb una petició proxy data buida).

nom tipus de valor descripció
proxy→server:
request string 'proxy data'
host string Nom del proxy.
session string Fitxa de sessió de dades.
interface availability array (opcional) Matriu d'objectes de dades de disponibilitat de la interfície.
interfaceid number Identificador de la interfície.
available number Disponibilitat de la interfície:

0, INTERFACE_AVAILABLE_UNKNOWN - desconegut
1, INTERFACE_AVAILABLE _TRUE - disponible
2, INTERFACE_AVAILABLE_FALSE - no disponible
error string Missatge d'error de la interfície o cadena buida.
history data array (opcional) Matriu d'objectes de dades de l'historial.
itemid number Identificador de l'element.
clock number Marca de temps del valor de l'element (segons).
ns number Marca de temps del valor de l'element (nanosegons).
value string (opcional) Valor de l'element.
id number Identificador del valor (comptador ascendent, únic en una sessió de dades).
timestamp number (opcional) Marca de temps dels elements del tipus de registre.
source string (opcional) Valor font de l'element del registre d'esdeveniments.
severity number (opcional) Valor de gravetat de l'element del registre d'esdeveniments.
eventid number (opcional) Valor d'event de l'element del registre d'esdeveniments.
status string (opcional) Estat de l'element:
0, ITEM_STATE_NORMAL
1, ITEM_STATE _NO SUPORT
lastlogsize number (opcional) Mida del darrer registre dels elements del tipus de registre.
mtime number (opcional) Hora de modificació dels elements del tipus de registre.
discovery data array (opcional) Matriu d'objectes de dades de descoberta.
clock number Marca de temps de les dades de descoberta.
druleid number Identificador de la regla de descoberta.
dcheckid number Identificador de comprovació de descoberta o nul per a les dades de la regla de descoberta.
type number Tipus de comprovació de descoberta:

-1 dades de la regla de descoberta
0, SVC_SSH - Comprovació del servei SSH
1, SVC_LDAP - Comprovació del servei LDAP
2, SVC_SMTP - Comprovació del servei SMTP
3, SVC_FTP - Comprovació del servei FTP
4, SVC_HTTP - Comprovació del servei HTTP
5, SVC_POP - Comprovació del servei POP
6, * SVC_NNTP* - Comprovació del servei NNTP
7, SVC_IMAP - Comprovació del servei IMAP
8, SVC_TCP - Comprovació de la disponibilitat del port TCP
** 9, SVC_AGENT - agent Zabbix
10, SVC_SNMPv1 - agent SNMPv1
11**, SVC_SNMPv2 - agent SNMPv2
* *12, SVC_ICMPPING - Ping ICMP
13, SVC_SNMPv3 - Agent SNMPv3
14, SVC_HTTPS - Comprovació del servei HTTPS<br >15**, SVC_TELNET - Comprovació de disponibilitat de Telnet
ip string Adreça IP de l'equip.
dns string Nom DNS de l'equip.
port number (opcional) Número de port de servei.
key_ string (opcional) Clau d'element per a la comprovació de descoberta de tipus 9 SVC_AGENT
value string (opcional) Valor rebut del servei, pot estar buit per a la majoria de serveis.
status number (opcional) Estat del servei:

0, DOBJECT_STATUS_UP - Servei UP
**1* , DOBJECT_STATUS_DOWN* - Servei DOWN
autoregistration array (opcional) Matriu d'objectes de dades d'autoregistre.
clock number Marca de temps de dades de registre automàtic.
host string Nom de l'equip.
ip string (opcional) Adreça IP de l'equip.
dns string (opcional) S'ha resolt el nom DNS des de l'adreça IP.
port string (opcional) Port equip.
host_metadata string (opcional) Metadades de l'equip enviades per l'agent (segons el paràmetre de configuració de l'agent HostMetadata o HostMetadataItem).
tasks array (opcional) Matriu de tasques.
type number Tipus de tasca:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - resultat de la comanda remota
status number Estat d'execució de l'ordre remot:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED: l'ordre remota s'ha completat correctament
1, ZBX_TM_REMOTE_COMMAND_FAILED - l'ordre remota ha fallat
error string (opcional) Missatge d'error.
parent_taskid number ID de la tasca principal.
more number (opcional) 1 - hi ha més dades de l'historial per enviar.
clock number (opcional) Marca de temps de transferència de dades (segons).
ns number (opcional) Marca de temps de transferència de dades (nanosegons).
version string Versió del proxy (<major>.<menor>.<build>).
servidor→proxy:
response string Demanar informació sobre l'èxit ('èxit' o 'error').
upload string Control de càrrega de dades històriques (historial, registre automàtic, disponibilitat de l'equip, descoberta de xarxa).

Valors possibles:
activat - funcionament normal
desactivat: el servidor no admet dades (possiblement a causa del límit de la memòria cau interna)
tasks array (opcional) Matriu de tasques.
type number Tipus de tasca:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - comanda remota
clock number Hora de creació de la tasca.
ttl number Temps en segons després del qual caduca la tasca.
commandtype number Tipus de comanda remota:

0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT: utilitzeu un script personalitzat
** 1, ZBX_SCRIPT_TIP_IPMI: utilitza IPMI
2, ZBX_SCRIPT_TYPE_SSH: utilitza SSH
3, ZBX_SCRIPT_TYPE_TELNET: utilitza Telnet
4**, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - utilitza script global (actualment equival a un script personalitzat)
ordre string Ordre remota per executar.
execute_on number Destí d'execució per a scripts personalitzats:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - executa l'script a l'agent< br>1, ZBX_SCRIPT_EXECUTE_ON_SERVER - executa l'script al servidor
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - executa l'script al proxy
port number (opcional) Port per a ordres Telnet i SSH.
authtype number (opcional) Tipus d'autenticació per a ordres SSH.
username string (opcional) Nom d'usuari per a ordres Telnet i SSH.
password string (opcional) Mot de pas per a ordres Telnet i SSH.
publickey string (opcional) Clau pública per a ordres SSH.
privatekey string (opcional) Clau privada per a ordres SSH.
parent_taskid number ID de la tasca principal.
hostid number ID de l'equip objectiu.

Exemple:

proxy→server:

{
           "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"
       }

server→proxy:

{
         "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
             }
         ]
       }