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