1 Protocolo de intercambio de datos servidor-proxy

Descripción general

Servidor - el intercambio de datos proxy se basa en el formato JSON.

Los mensajes de solicitud y respuesta deben comenzar con encabezado y longitud de datos.

Proxy pasivo

Solicitud de configuración de proxy

La solicitud proxy config es enviada por el servidor para proporcionar los datos de configuración del proxy. Esta solicitud se envía cada ProxyConfigFrequency (parámetro de configuración del servidor) segundos.

nombre tipo de valor descripción
servidor→proxy:
request cadena 'proxy config'
<tabla> objeto Uno o más objetos con datos <table>.
fields matriz Matriz de nombres de campos.
- cadena Nombre de campo.
data matriz Matriz de filas.
- array Matriz de columnas.
- cadena,número Valor de columna con tipo que depende del tipo de columna en el esquema de la base de datos.
proxy→servidor:
response cadena Solicitar información de éxito ('éxito' o 'fallido').
version cadena Versión de proxy (<principal>.<menor>.<compilación>).

Ejemplo:

servidor→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→servidor:

{
  "response": "success",
  "version": "6.0.0"
}
Solicitud de proxy

La solicitud de "datos de proxy" se utiliza para obtener la disponibilidad de la interfaz del equipo, datos históricos, de descubrimiento y de autoregistro desde el proxy. Esta petición se envía cada ProxyDataFrequency (parámetro de configuración del servidor) segundos.

nombre tipo de valor descripción
servidor→proxy:
request cadena 'proxy data'
proxy→servidor:
session cadena Token de sesión de datos.
interface availability matriz (opcional) Matriz de objetos de datos de disponibilidad de interfaz.
interfaceid número Identificador de interfaz.
available número Disponibilidad de interfaz:

0, INTERFACE_AVAILABLE_UNKNOWN - desconocido
1, INTERFACE_AVAILABLE _TRUE - disponible
2, INTERFACE_AVAILABLE_FALSE - no disponible
error cadena Mensaje de error de interfaz o cadena vacía.
history data matriz (opcional) Matriz de objetos de datos históricos.
itemid número Identificador de la métrica.
clock número Marca de tiempo del valor de la métrica (segundos).
ns número Marca de tiempo del valor de la métrica (nanosegundos).
value cadena (opcional) Valor de la métrica.
id número Identificador de valor (contador ascendente, único dentro de una sesión de datos).
timestamp número (opcional) Marca de tiempo de las métricas de tipo de registro.
source cadena (opcional) Valor de origen de la métrica de registro de eventos.
severity número (opcional) Valor de gravedad de la métrica del registro de eventos.
eventid número (opcional) Valor de eventid de la métrica de registro de eventos.
state cadena (opcional) Estado de la métrica:
0, ITEM_STATE_NORMAL
1, ITEM_STATE _NOTSAPPORTADO
lastlogsize number (opcional) Último tamaño de registro de los elementos del tipo de registro.
mtime number (opcional) Hora de modificación de los elementos del tipo de registro.
datos de descubrimiento matriz (opcional) Matriz de objetos de datos de descubrimiento.
clock número Marca de tiempo de datos de descubrimiento.
druleid número Identificador de regla de descubrimiento.
dcheckid number Identificador de verificación de descubrimiento o nulo para los datos de la regla de descubrimiento.
type número Tipo de verificación de descubrimiento:

-1 datos de regla de descubrimiento
0, SVC_SSH - Verificación del servicio SSH
1, SVC_LDAP - Verificación del servicio LDAP
2, SVC_SMTP - Verificación del servicio SMTP
3, SVC_FTP - Verificación del servicio FTP
4, SVC_HTTP - Verificación del servicio HTTP
5, SVC_POP - Verificación del servicio POP
6, SVC_NNTP - Verificación del servicio NNTP
7, SVC_IMAP - Verificación del servicio IMAP
8, SVC_TCP - Verificación de disponibilidad del puerto TCP
9, SVC_AGENT - Agente Zabbix
10, SVC_SNMPv1 - Agente SNMPv1
11, SVC_SNMPv2 - Agente SNMPv2
12, SVC_ICMPPING - Ping ICMP
13, SVC_SNMPv3 - Agente SNMPv3
14, SVC_HTTPS - Verificación del servicio HTTPS<br >15*, SVC_TELNET* - Verificación de disponibilidad de Telnet
ip cadena Dirección IP del equipo.
dns cadena Nombre DNS del equipo.
port número (opcional) Número de puerto de servicio.
key_ string (opcional) Clave de elemento para verificación de descubrimiento de tipo 9 SVC_AGENT
value cadena (opcional) Valor recibido del servicio, puede estar vacío para la mayoría de los servicios.
status número (opcional) Estado del servicio:

0, DOBJECT_STATUS_UP - Servicio ARRIBA
*1 , DOBJECT_STATUS_DOWN* - Servicio ABAJO
registro automático matriz (opcional) Matriz de objetos de datos de registro automático.
clock número Marca de tiempo de datos de registro automático.
host cadena Nombre de equipo.
ip cadena (opcional) Dirección IP del equipo.
dns cadena (opcional) Nombre DNS resuelto desde la dirección IP.
port cadena (opcional) Puerto de equipo.
host_metadata cadena (opcional) Metadatos del equipo enviados por el agente (según el parámetro de configuración del agente HostMetadata o HostMetadataItem).
tareas matriz (opcional) Matriz de tareas.
type número Tipo de tarea:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - resultado del comando remoto
status number Estado de ejecución del comando remoto:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED - el comando remoto se completó correctamente
1, ZBX_TM_REMOTE_COMMAND_FAILED - error del comando remoto
error cadena (opcional) Mensaje de error.
parent_taskid number ID de tarea principal.
more número (opcional) 1 - hay más datos del historial para enviar.
clock número (opcional) Marca de tiempo de transferencia de datos (segundos).
ns número (opcional) Marca de tiempo de transferencia de datos (nanosegundos).
version cadena Versión de proxy (<principal>.<menor>.<compilación>).
servidor→proxy:
response cadena Solicitud de información de éxito ('éxito' o 'fallido').
tareas matriz (opcional) Matriz de tareas.
type número Tipo de tarea:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - comando remoto
clock número Hora de creación de la tarea.
ttl número Tiempo en segundos después del cual caduca la tarea.
commandtype número Tipo de comando remoto:

0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - usar script personalizado
1, ZBX_SCRIPT_TYPE_IPMI - usar IPMI
2, ZBX_SCRIPT_TYPE_SSH - use SSH
3, ZBX_SCRIPT_TYPE_TELNET - use Telnet
4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - use script global ( actualmente funcionalmente equivalente al script personalizado)
command cadena Comando remoto para ejecutar.
execute_on number Destino de ejecución para scripts personalizados:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - ejecutar script en el agente< br>1, ZBX_SCRIPT_EXECUTE_ON_SERVER - ejecutar script en el servidor
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - ejecutar script en proxy
port número (opcional) Puerto para comandos Telnet y SSH.
authtype number (opcional) Tipo de autenticación para comandos SSH.
username cadena (opcional) Nombre de usuario para comandos Telnet y SSH.
password cadena (opcional) Contraseña para comandos Telnet y SSH.
publickey cadena (opcional) Clave pública para comandos SSH.
privatekey string (opcional) Clave privada para comandos SSH.
parent_taskid number ID de tarea principal.
hostid número ID del equipo de destino.

Ejemplo:

servidor→proxy:

{
   "request": "proxy data"
}

proxy→servidor:

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

servidor→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 activo

Solicitud de latido de proxy

La solicitud "proxy heartbeat" es enviada por el proxy para informar que el proxy está ejecutándose. Esta solicitud se envía cada HeartbeatFrequency ( parámetro de configuración del proxy) segundos.

nombre tipo de valor descripción
proxy→servidor:
request cadena 'latido del proxy'
host cadena Nombre de proxy.
version cadena Versión de proxy (<principal>.<menor>.<compilación>).
servidor→proxy:
response cadena Solicitud de información de éxito ('éxito' o 'fallido').

proxy→servidor:

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

servidor→proxy:

{
  "response": "success"
}
Solicitud de configuración de proxy

La solicitud proxy config se envía al proxy para obtener los datos de configuración del proxy. Esta solicitud se envía cada ConfigFrequency ( parámetro de configuración del proxy) segundos.

nombre tipo de valor descripción
proxy→servidor:
request cadena 'proxy config'
host cadena Nombre de proxy.
version cadena Versión de proxy (<principal>.<menor>.<compilación>).
servidor→proxy:
request cadena 'proxy config'
<tabla> objeto Uno o más objetos con datos <tabla>.
fields matriz Matriz de nombres de campos.
- cadena Nombre de campo.
data matriz Matriz de filas.
- array Matriz de columnas.
- cadena,número Valor de columna con tipo que depende del tipo de columna en el esquema de la base de datos.
proxy→servidor:
response cadena Solicitar información de éxito ('success' o 'failed').

Ejemplo:

proxy→servidor:

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

servidor→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→servidor:

{
  "response": "success"
}
Solicitud de datos de proxy

La solicitud de "proxy data" se envía mediante proxy para proporcionar datos de disponibilidad, historial, descubrimiento y registro automático de la interfaz del equipo. Esta solicitud se envía cada segundos de DataSenderFrequency (parámetro de configuración de proxy). Tenga en cuenta que el proxy activo seguirá sondeando el servidor Zabbix cada segundo en busca de tareas de comando remotas (con una solicitud de "proxy data" vacía).

nombre tipo de valor descripción
proxy→servidor:
request cadena 'proxy data'
host cadena Nombre de proxy.
session cadena Token de sesión de datos.
disponibilidad de interfaz matriz (opcional) Matriz de objetos de datos de disponibilidad de interfaz.
interfaceid número Identificador de interfaz.
available número Disponibilidad de interfaz:

0, INTERFACE_AVAILABLE_UNKNOWN - desconocido
1, INTERFACE_AVAILABLE _TRUE - disponible
2, INTERFACE_AVAILABLE_FALSE - no disponible
error cadena Mensaje de error de interfaz o cadena vacía.
datos históricos matriz (opcional) Matriz de objetos de datos históricos.
itemid número Identificador de artículo.
clock número Marca de tiempo del valor de la métrica (segundos).
ns número Marca de tiempo del valor de la métrica (nanosegundos).
value cadena (opcional) Valor del artículo.
id número Identificador de valor (contador ascendente, único dentro de una sesión de datos).
timestamp número (opcional) Marca de tiempo de las métricas de tipo de registro.
source cadena (opcional) Valor de origen de la métrica de registro de eventos.
severity número (opcional) Valor de gravedad de la métrica del registro de eventos.
eventid número (opcional) Valor de eventid de la métrica de registro de eventos.
state cadena (opcional) Estado del artículo:
0, ITEM_STATE_NORMAL
1, ITEM_STATE _NOTSAPPORTADO
lastlogsize number (opcional) Último tamaño de registro de las métricas del tipo de registro.
mtime number (opcional) Hora de modificación de las métricas del tipo de registro.
datos de descubrimiento matriz (opcional) Matriz de objetos de datos de descubrimiento.
clock número Marca de tiempo de datos de descubrimiento.
druleid número Identificador de regla de descubrimiento.
dcheckid number Identificador de verificación de descubrimiento o nulo para los datos de la regla de descubrimiento.
type número Tipo de verificación de descubrimiento:

-1 datos de regla de descubrimiento
0, SVC_SSH - Verificación del servicio SSH
1, SVC_LDAP - Verificación del servicio LDAP
2, SVC_SMTP - Verificación del servicio SMTP
3, SVC_FTP - Verificación del servicio FTP
4, SVC_HTTP - Verificación del servicio HTTP
5, SVC_POP - Verificación del servicio POP
6, SVC_NNTP - Verificación del servicio NNTP
7, SVC_IMAP - Verificación del servicio IMAP
8, SVC_TCP - Verificación de disponibilidad del puerto TCP
9, SVC_AGENT - Agente Zabbix
10, SVC_SNMPv1 - Agente SNMPv1
11, SVC_SNMPv2 - Agente SNMPv2
12, SVC_ICMPPING - Ping ICMP
13, SVC_SNMPv3 - Agente SNMPv3
14, SVC_HTTPS - Verificación del servicio HTTPS<br >15*, SVC_TELNET* - Verificación de disponibilidad de Telnet
ip cadena Dirección IP del equipo.
dns cadena Nombre DNS del equipo.
port número (opcional) Número de puerto de servicio.
key_ string (opcional) Clave de elemento para verificación de descubrimiento de tipo 9 SVC_AGENT
value cadena (opcional) Valor recibido del servicio, puede estar vacío para la mayoría de los servicios.
status número (opcional) Estado del servicio:

0, DOBJECT_STATUS_UP - Servicio ARRIBA
1, DOBJECT_STATUS_DOWN - Servicio ABAJO
autorregistro matriz (opcional) Matriz de objetos de datos de autoregistro.
clock número Marca de tiempo de datos de registro automático.
host cadena Nombre de host.
ip cadena (opcional) Dirección IP del equipo.
dns cadena (opcional) Nombre DNS resuelto desde la dirección IP.
port cadena (opcional) Puerto de host.
host_metadata cadena (opcional) Metadatos del equipo enviados por el agente (según el parámetro de configuración del agente HostMetadata o HostMetadataItem).
tareas matriz (opcional) Matriz de tareas.
type número Tipo de tarea:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - resultado del comando remoto
status number Estado de ejecución del comando remoto:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED - el comando remoto se completó correctamente
1, ZBX_TM_REMOTE_COMMAND_FAILED - error del comando remoto
error cadena (opcional) Mensaje de error.
parent_taskid number ID de tarea principal.
more número (opcional) 1 - hay más datos del historial para enviar.
clock número (opcional) Marca de tiempo de transferencia de datos (segundos).
ns número (opcional) Marca de tiempo de transferencia de datos (nanosegundos).
version cadena Versión de proxy (<principal>.<menor>.<compilación>).
servidor→proxy:
response cadena Solicitud de información de éxito ('success' o 'failed').
upload string Control de carga para datos históricos (historial, registro automático, disponibilidad de host, descubrimiento de red).

Valores posibles:
enabled - funcionamiento normal
deshabilitado - el servidor no acepta datos (posiblemente debido a que el caché interno excede el límite)
tasks matriz (opcional) Matriz de tareas.
type número Tipo de tarea:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - comando remoto
clock número Hora de creación de la tarea.
ttl número Tiempo en segundos después del cual caduca la tarea.
commandtype número Tipo de comando remoto:

0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - usar script personalizado
1, ZBX_SCRIPT_TYPE_IPMI - usar IPMI
2, ZBX_SCRIPT_TYPE_SSH - usar SSH
3, ZBX_SCRIPT _TYPE_TELNET - usar Telnet
4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - usar script global (actualmente funcionalmente equivalente a un script personalizado)
command cadena Comando remoto para ejecutar.
execute_on number Destino de ejecución para scripts personalizados:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - ejecutar script en el agente< br>1, ZBX_SCRIPT_EXECUTE_ON_SERVER - ejecutar script en el servidor
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - ejecutar script en proxy
port número (opcional) Puerto para comandos Telnet y SSH.
authtype number (opcional) Tipo de autenticación para comandos SSH.
username cadena (opcional) Nombre de usuario para comandos Telnet y SSH.
password cadena (opcional) Contraseña para comandos Telnet y SSH.
publickey cadena (opcional) Clave pública para comandos SSH.
privatekey string (opcional) Clave privada para comandos SSH.
parent_taskid number ID de tarea principal.
hostid número ID del equipo de destino.

Ejemplo:

proxy→servidor:

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

servidor→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
      }
  ]
}