1 Protocolo de intercambio de datos entre servidor y proxy

Descripción general

El intercambio de datos entre servidor y proxy se basa en el formato JSON.

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

Proxy pasivo

Solicitud de configuración

El server enviará primero una solicitud vacía proxy config. Esta solicitud se envía cada ProxyConfigFrequency (parámetro de configuración del server) segundos.

El proxy responde con la versión actual del proxy, el token de sesión y la revisión de la configuración. El server responde con los datos de configuración que deben actualizarse.

name value type description
server→proxy:
request string 'proxy config'
proxy→server:
version string Versión del proxy (<major>.<minor>.<build>).
session string Token de sesión de configuración del proxy.
config_revision number Revisión de la configuración del proxy.
server→proxy:
full_sync number 1 - si se envían todos los datos de configuración; ausente - en caso contrario (opcional).
data array Objeto de datos de la tabla. Ausente si la configuración no ha cambiado (opcional).
<table> object Uno o más objetos con datos de <table> (opcional, según los cambios).
fields array Matriz de nombres de campos.
- string Nombre del campo.
data array Matriz de filas.
- array Matriz de columnas.
- string,number Valor de la columna con tipo según el tipo de columna en el esquema de la base de datos.
macro.secrets object Información de macros secretas, ausente si no hay cambios en las macros de vault (opcional).
config_revision number Revisión de la caché de configuración - enviada con los datos de configuración (opcional).
del_hostids array Matriz de hostids eliminados (opcional).
- number Identificador del host.
del_macro_hostids array Matriz de hostids con todas las macros eliminadas (opcional).
- number Identificador del host.
proxy→server:
response string Información de éxito de la solicitud ('success' o 'failed').
version string Versión del proxy (<major>.<minor>.<build>).

Ejemplo:

server→proxy:

{
  "request":"proxy config"
} 

proxy→server:

{
  "version": "7.4.0",
  "session": "0033124949800811e5686dbfd9bcea98",
  "config_revision": 0
}

server→proxy:

{
    "full_sync": 1,
    "data": {
        "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": [
                [10084, "Zabbix server", 0, -1, 2, "", "", "Zabbix server", 1, 1, "", "", "", ""]
            ]
        },
        "interface": {
            "fields": ["interfaceid", "hostid", "main", "type", "useip", "ip", "dns", "port", "available"],
            "data": [
                [1, 10084, 1, 1, 1, "127.0.0.1", "", "10053", 1]
            ]
        },
        "interface_snmp": {
            "fields": ["interfaceid", "version", "bulk", "community", "securityname", "securitylevel", "authpassphrase", "privpassphrase", "authprotocol", "privprotocol", "contextname"],
            "data": []
        },
        "host_inventory": {
            "fields": ["hostid", "type", "type_full", "name", "alias", "os", "os_full", "os_short", "serialno_a", "serialno_b", "tag", "asset_tag", "macaddress_a", "macaddress_b", "hardware", "hardware_full", "software", "software_full", "software_app_a", "software_app_b", "software_app_c", "software_app_d", "software_app_e", "contact", "location", "location_lat", "location_lon", "notes", "chassis", "model", "hw_arch", "vendor", "contract_number", "installer_name", "deployment_status", "url_a", "url_b", "url_c", "host_networks", "host_netmask", "host_router", "oob_ip", "oob_netmask", "oob_router", "date_hw_purchase", "date_hw_install", "date_hw_expiry", "date_hw_decomm", "site_address_a", "site_address_b", "site_address_c", "site_city", "site_state", "site_country", "site_zip", "site_rack", "site_notes", "poc_1_name", "poc_1_email", "poc_1_phone_a", "poc_1_phone_b", "poc_1_cell", "poc_1_screen", "poc_1_notes", "poc_2_name", "poc_2_email", "poc_2_phone_a", "poc_2_phone_b", "poc_2_cell", "poc_2_screen", "poc_2_notes"],
            "data": [
                [10084, "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "56.95387", "24.22067", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
            ]
        },
        "items": {
            "fields": ["itemid", "type", "snmp_oid", "hostid", "key_", "delay", "history", "status", "value_type", "trapper_hosts", "logtimefmt", "params", "ipmi_sensor", "authtype", "username", "password", "publickey", "privatekey", "flags", "interfaceid", "inventory_link", "jmx_endpoint", "master_itemid", "timeout", "url", "query_fields", "posts", "status_codes", "follow_redirects", "post_type", "http_proxy", "headers", "retrieve_mode", "request_method", "output_format", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host", "allow_traps"],
            "data": [
                [44161, 7, "", 10084, "agent.hostmetadata", "10s", "90d", 0, 1, "", "", "", "", 0, "", "", "", "", 0, null, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0],
                [44162, 0, "", 10084, "agent.ping", "10s", "90d", 0, 3, "", "", "", "", 0, "", "", "", "", 0, 1, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0]
            ]
        },
        "item_rtdata": {
            "fields": ["itemid", "lastlogsize", "mtime"],
            "data": [
                [44161, 0, 0],
                [44162, 0, 0]
            ]
        },
        "item_preproc": {
            "fields": ["item_preprocid", "itemid", "step", "type", "params", "error_handler", "error_handler_params"],
            "data": []
        },
        "item_parameter": {
            "fields": ["item_parameterid", "itemid", "name", "value"],
            "data": []
        },
        "globalmacro": {
            "fields": ["globalmacroid", "macro", "value", "type"],
            "data": [
                [2, "{$SNMP_COMMUNITY}", "public", 0]
            ]
        },
        "hosts_templates": {
            "fields": ["hosttemplateid", "hostid", "templateid", "link_type"],
            "data": []
        },
        "hostmacro": {
            "fields": ["hostmacroid", "hostid", "macro", "value", "type", "automatic"],
            "data": [
                [5676, 10084, "{$M}", "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix:Content", 2, 0]
            ]
        },
        "drules": {
            "fields": ["druleid", "name", "iprange", "delay"],
            "data": [
                [2, "Local network", "127.0.0.1", "10s"]
            ]
        },
        "dchecks": {
            "fields": ["dcheckid", "druleid", "type", "key_", "snmp_community", "ports", "snmpv3_securityname", "snmpv3_securitylevel", "snmpv3_authpassphrase", "snmpv3_privpassphrase", "uniq", "snmpv3_authprotocol", "snmpv3_privprotocol", "snmpv3_contextname", "host_source", "name_source"],
            "data": [
                [2, 2, 9, "system.uname", "", "10052", "", 0, "", "", 0, 0, 0, "", 1, 0]
            ]
        },
        "regexps": {
            "fields": ["regexpid", "name"],
            "data": [
                [1, "File systems for discovery"],
                [2, "Network interfaces for discovery"],
                [3, "Storage devices for SNMP discovery"],
                [4, "Windows service names for discovery"],
                [5, "Windows service startup states for discovery"]
            ]
        },
        "expressions": {
            "fields": ["expressionid", "regexpid", "expression", "expression_type", "exp_delimiter", "case_sensitive"],
            "data": [
                [1, 1, "^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$", 3, ",", 0],
                [3, 3, "^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$", 4, ",", 1],
                [5, 4, "^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$", 4, ",", 1],
                [6, 5, "^(automatic|automatic delayed)$", 3, ",", 1],
                [7, 2, "^Software Loopback Interface", 4, ",", 1],
                [8, 2, "^(In)?[Ll]oop[Bb]ack[0-9._]*$", 4, ",", 1],
                [9, 2, "^NULL[0-9.]*$", 4, ",", 1],
                [10, 2, "^[Ll]o[0-9.]*$", 4, ",", 1],
                [11, 2, "^[Ss]ystem$", 4, ",", 1],
                [12, 2, "^Nu[0-9.]*$", 4, ",", 1]
            ]
        },
        "settings": {
            "fields": ["name", "type", "value_str", "value_int"],
            "data": [
                ["autoreg_tls_accept", 2, "", 1],
                ["hk_history_global", 2, "", 0],
                ["snmptrap_logging", 2, "", 1],
                ["proxy_secrets_provider", 2, "", 0],
                ["hk_history", 1, "31d", 0],
                ["timeout_db_monitor", 1, "3s", 0],
                ["timeout_external_check", 1, "3s", 0],
                ["timeout_http_agent", 1, "3s", 0],
                ["timeout_simple_check", 1, "3s", 0],
                ["timeout_snmp_agent", 1, "3s", 0],
                ["timeout_ssh_agent", 1, "3s", 0],
                ["timeout_telnet_agent", 1, "3s", 0],
                ["timeout_zabbix_agent", 1, "3s", 0],
                ["timeout_browser", 1, "30s", 0]
            ]
        },
        "httptest": {
            "fields": ["httptestid", "name", "delay", "agent", "authentication", "http_user", "http_password", "hostid", "http_proxy", "retries", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host"],
            "data": []
        },
        "httptestitem": {
            "fields": ["httptestitemid", "httptestid", "itemid", "type"],
            "data": []
        },
        "httptest_field": {
            "fields": ["httptest_fieldid", "httptestid", "type", "name", "value"],
            "data": []
        },
        "httpstep": {
            "fields": ["httpstepid", "httptestid", "name", "no", "url", "timeout", "posts", "required", "status_codes", "follow_redirects", "retrieve_mode", "post_type"],
            "data": []
        },
        "httpstepitem": {
            "fields": ["httpstepitemid", "httpstepid", "itemid", "type"],
            "data": []
        },
        "httpstep_field": {
            "fields": ["httpstep_fieldid", "httpstepid", "type", "name", "value"],
            "data": []
        },
        "config_autoreg_tls": {
            "fields": ["autoreg_tlsid", "tls_psk_identity", "tls_psk"],
            "data": [
                [1, "", ""]
            ]
        }
    },
    "macro.secrets": {
        "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix": {
            "Content": "738"
        }
    },
    "config_revision": 2
}

proxy→server:

{
  "response": "success",
  "version": "7.4.0"
}
Solicitud de datos

La solicitud proxy data se usa para obtener la disponibilidad de la interfaz del host, así como datos históricos, de descubrimiento y de autoregistro desde el proxy. Esta solicitud se envía cada ProxyDataFrequency (parámetro de configuración del server) segundos.

name value type description
server→proxy:
request string 'proxy data'
proxy→server:
session string Token de sesión de datos.
interface availability array (optional) Array de objetos de disponibilidad de interfaz.
interfaceid number Identificador de la interfaz.
available number Disponibilidad de la interfaz:

0, INTERFACE_AVAILABLE_UNKNOWN - desconocida
1, INTERFACE_AVAILABLE_TRUE - disponible
2, INTERFACE_AVAILABLE_FALSE - no disponible
error string Mensaje de error de la interfaz o cadena vacía.
history data array (optional) Array de objetos de datos históricos.
itemid number Identificador del item.
clock number Marca de tiempo del valor del item (segundos).
ns number Marca de tiempo del valor del item (nanosegundos).
value string (optional) Valor del item.
id number Identificador del valor (contador ascendente, único dentro de una sesión de datos).
timestamp number (optional) Marca de tiempo de los items de tipo log.
source string (optional) Valor de origen del item eventlog.
severity number (optional) Valor de severidad del item eventlog.
eventid number (optional) Valor eventid del item eventlog.
state string (optional) Estado del item:
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize number (optional) Último tamaño de log de los items de tipo log.
mtime number (optional) Hora de modificación de los items de tipo log.
discovery data array (optional) Array de objetos de datos de descubrimiento.
clock number Marca de tiempo de los datos de descubrimiento.
druleid number Identificador de la regla de descubrimiento.
dcheckid number Identificador de la comprobación de descubrimiento o null para datos de la regla de descubrimiento.
type number Tipo de comprobación de descubrimiento:

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

0, DOBJECT_STATUS_UP - servicio UP
1, DOBJECT_STATUS_DOWN - servicio DOWN
auto registration array (optional) Array de objetos de datos de autoregistro.
clock number Marca de tiempo de los datos de autoregistro.
host string Nombre del host.
ip string (optional) Dirección IP del host.
dns string (optional) Nombre DNS resuelto a partir de la dirección IP.
port string (optional) Puerto del host.
host_metadata string (optional) Metadatos del host enviados por agent (según el parámetro de configuración de agent HostMetadata o HostMetadataItem).
tasks array (optional) Array de tareas.
type number Tipo de tarea:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - resultado de 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 - el comando remoto falló
error string (optional) Mensaje de error.
parent_taskid number ID de la tarea principal.
more number (optional) 1 - hay más datos históricos por enviar.
clock number (optional) Marca de tiempo de la transferencia de datos (segundos).
ns number (optional) Marca de tiempo de la transferencia de datos (nanosegundos).
version string Versión del proxy (<major>.<minor>.<build>).
server→proxy:
response string Información de éxito de la solicitud ('success' o 'failed').
tasks array (optional) Array de tareas.
type number Tipo de tarea:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - comando remoto
clock number Hora de creación de la tarea.
ttl number Tiempo en segundos tras el cual la tarea expira.
commandtype number 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 equivalente funcionalmente a un script personalizado)
command string Comando remoto a ejecutar.
execute_on number Destino de ejecución para scripts personalizados:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - ejecutar el script en el agent
1, ZBX_SCRIPT_EXECUTE_ON_SERVER - ejecutar el script en el server
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - ejecutar el script en el proxy
port number (optional) Puerto para comandos Telnet y SSH.
authtype number (optional) Tipo de autenticación para comandos SSH.
username string (optional) Nombre de usuario para comandos Telnet y SSH.
password string (optional) Contraseña para comandos Telnet y SSH.
publickey string (optional) Clave pública para comandos SSH.
privatekey string (optional) Clave privada para comandos SSH.
parent_taskid number ID de la tarea principal.
hostid number ID del host de destino.

Ejemplo:

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":"7.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
      }
  ]
}
Solicitud de tareas

El intercambio de proxy tasks gestiona la entrega y el reconocimiento de tareas de comandos remotos entre el server y un proxy pasivo. Cuando el server consulta al proxy por los resultados de las tareas, envía una solicitud vacía de proxy tasks en el intervalo definido por ProxyDataFrequency. El proxy responde con su versión actual y cualquier resultado de tarea pendiente (incluidos los sellos de tiempo). El server luego reconoce la recepción devolviendo una response y puede incluir nuevas tareas para que el proxy las ejecute.

nombre tipo de valor descripción
server→proxy:
request string 'proxy tasks'
proxy→server:
version string Versión del proxy (<major>.<minor>.<build>).
clock number (opcional) Sello de tiempo de transferencia de datos (segundos).
ns number (opcional) Sello de tiempo de transferencia de datos (nanosegundos).
server→proxy:
response string Información de éxito de la solicitud ('success' o 'failed').

Ejemplo:

server→proxy:

{
  "request":"proxy tasks"
}

proxy→server:

{
  "version":"7.0.0",
  "clock":1721059872,
  "ns":848141522
}

server→proxy:

{
  "response":"success"
}

Proxy activo

Solicitud de configuración

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

name value type description
proxy→server:
request string 'proxy config'
host string
Nombre del proxy.
version string Versión del proxy (<major>.<minor>.<build>).
session string Token de sesión de configuración del proxy.
config_revision number Revisión de la configuración del proxy.
hostmap_revision number Revisión actual del mapeo host-a-proxy.
server→proxy:
full_sync number 1 - si se envían todos los datos de configuración, ausente en caso contrario (opcional).
data array Objeto con datos de tabla. Ausente si la configuración no ha cambiado (opcional).
<table> object Uno o más objetos con datos de <table> (opcional, según los cambios).
fields array Matriz de nombres de campos.
- string Nombre del campo.
data array Matriz de filas.
- array Matriz de columnas.
- string,number Valor de columna con tipo según el tipo de columna en el esquema de la base de datos.
macro.secrets object Información de macros secretas, ausente si no hay cambios en las macros de vault (opcional).
proxy_group string Nombre del grupo de proxy al que pertenece el proxy.
config_revision number Revisión de la caché de configuración - enviada con los datos de configuración (opcional).
del_hostids array Matriz de hostids eliminados (opcional).
- number Identificador del host.
del_macro_hostids array Matriz de hostids con todas las macros eliminadas (opcional).
- number Identificador del host.

Ejemplo:

proxy→server:

{
  "request": "proxy config",
  "host": "Zabbix proxy",
  "version":"7.4.0",
  "session": "fd59a09ff4e9d1fb447de1f04599bcf6",
  "config_revision": 0
}

server→proxy:

{
    "full_sync": 1,
    "data": {
        "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": [
                [10084, "Zabbix server", 0, -1, 2, "", "", "Zabbix server", 1, 1, "", "", "", ""]
            ]
        },
        "interface": {
            "fields": ["interfaceid", "hostid", "main", "type", "useip", "ip", "dns", "port", "available"],
            "data": [
                [1, 10084, 1, 1, 1, "127.0.0.1", "", "10053", 1]
            ]
        },
        "interface_snmp": {
            "fields": ["interfaceid", "version", "bulk", "community", "securityname", "securitylevel", "authpassphrase", "privpassphrase", "authprotocol", "privprotocol", "contextname"],
            "data": []
        },
        "host_inventory": {
            "fields": ["hostid", "type", "type_full", "name", "alias", "os", "os_full", "os_short", "serialno_a", "serialno_b", "tag", "asset_tag", "macaddress_a", "macaddress_b", "hardware", "hardware_full", "software", "software_full", "software_app_a", "software_app_b", "software_app_c", "software_app_d", "software_app_e", "contact", "location", "location_lat", "location_lon", "notes", "chassis", "model", "hw_arch", "vendor", "contract_number", "installer_name", "deployment_status", "url_a", "url_b", "url_c", "host_networks", "host_netmask", "host_router", "oob_ip", "oob_netmask", "oob_router", "date_hw_purchase", "date_hw_install", "date_hw_expiry", "date_hw_decomm", "site_address_a", "site_address_b", "site_address_c", "site_city", "site_state", "site_country", "site_zip", "site_rack", "site_notes", "poc_1_name", "poc_1_email", "poc_1_phone_a", "poc_1_phone_b", "poc_1_cell", "poc_1_screen", "poc_1_notes", "poc_2_name", "poc_2_email", "poc_2_phone_a", "poc_2_phone_b", "poc_2_cell", "poc_2_screen", "poc_2_notes"],
            "data": [
                [10084, "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "56.95387", "24.22067", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
            ]
        },
        "items": {
            "fields": ["itemid", "type", "snmp_oid", "hostid", "key_", "delay", "history", "status", "value_type", "trapper_hosts", "logtimefmt", "params", "ipmi_sensor", "authtype", "username", "password", "publickey", "privatekey", "flags", "interfaceid", "inventory_link", "jmx_endpoint", "master_itemid", "timeout", "url", "query_fields", "posts", "status_codes", "follow_redirects", "post_type", "http_proxy", "headers", "retrieve_mode", "request_method", "output_format", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host", "allow_traps"],
            "data": [
                [44161, 7, "", 10084, "agent.hostmetadata", "10s", "90d", 0, 1, "", "", "", "", 0, "", "", "", "", 0, null, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0],
                [44162, 0, "", 10084, "agent.ping", "10s", "90d", 0, 3, "", "", "", "", 0, "", "", "", "", 0, 1, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0]
            ]
        },
        "item_rtdata": {
            "fields": ["itemid", "lastlogsize", "mtime"],
            "data": [
                [44161, 0, 0],
                [44162, 0, 0]
            ]
        },
        "item_preproc": {
            "fields": ["item_preprocid", "itemid", "step", "type", "params", "error_handler", "error_handler_params"],
            "data": []
        },
        "item_parameter": {
            "fields": ["item_parameterid", "itemid", "name", "value"],
            "data": []
        },
        "globalmacro": {
            "fields": ["globalmacroid", "macro", "value", "type"],
            "data": [
                [2, "{$SNMP_COMMUNITY}", "public", 0]
            ]
        },
        "hosts_templates": {
            "fields": ["hosttemplateid", "hostid", "templateid", "link_type"],
            "data": []
        },
        "hostmacro": {
            "fields": ["hostmacroid", "hostid", "macro", "value", "type", "automatic"],
            "data": [
                [5676, 10084, "{$M}", "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix:Content", 2, 0]
            ]
        },
        "drules": {
            "fields": ["druleid", "name", "iprange", "delay"],
            "data": [
                [2, "Local network", "127.0.0.1", "10s"]
            ]
        },
        "dchecks": {
            "fields": ["dcheckid", "druleid", "type", "key_", "snmp_community", "ports", "snmpv3_securityname", "snmpv3_securitylevel", "snmpv3_authpassphrase", "snmpv3_privpassphrase", "uniq", "snmpv3_authprotocol", "snmpv3_privprotocol", "snmpv3_contextname", "host_source", "name_source"],
            "data": [
                [2, 2, 9, "system.uname", "", "10052", "", 0, "", "", 0, 0, 0, "", 1, 0]
            ]
        },
        "regexps": {
            "fields": ["regexpid", "name"],
            "data": [
                [1, "File systems for discovery"],
                [2, "Network interfaces for discovery"],
                [3, "Storage devices for SNMP discovery"],
                [4, "Windows service names for discovery"],
                [5, "Windows service startup states for discovery"]
            ]
        },
        "expressions": {
            "fields": ["expressionid", "regexpid", "expression", "expression_type", "exp_delimiter", "case_sensitive"],
            "data": [
                [1, 1, "^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$", 3, ",", 0],
                [3, 3, "^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$", 4, ",", 1],
                [5, 4, "^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$", 4, ",", 1],
                [6, 5, "^(automatic|automatic delayed)$", 3, ",", 1],
                [7, 2, "^Software Loopback Interface", 4, ",", 1],
                [8, 2, "^(In)?[Ll]oop[Bb]ack[0-9._]*$", 4, ",", 1],
                [9, 2, "^NULL[0-9.]*$", 4, ",", 1],
                [10, 2, "^[Ll]o[0-9.]*$", 4, ",", 1],
                [11, 2, "^[Ss]ystem$", 4, ",", 1],
                [12, 2, "^Nu[0-9.]*$", 4, ",", 1]
            ]
        },
        "settings": {
            "fields": ["name", "type", "value_str", "value_int"],
            "data": [
                ["autoreg_tls_accept", 2, "", 1],
                ["hk_history_global", 2, "", 0],
                ["snmptrap_logging", 2, "", 1],
                ["proxy_secrets_provider", 2, "", 0],
                ["hk_history", 1, "31d", 0],
                ["timeout_db_monitor", 1, "3s", 0],
                ["timeout_external_check", 1, "3s", 0],
                ["timeout_http_agent", 1, "3s", 0],
                ["timeout_simple_check", 1, "3s", 0],
                ["timeout_snmp_agent", 1, "3s", 0],
                ["timeout_ssh_agent", 1, "3s", 0],
                ["timeout_telnet_agent", 1, "3s", 0],
                ["timeout_zabbix_agent", 1, "3s", 0],
                ["timeout_browser", 1, "30s", 0]
            ]
        },
        "httptest": {
            "fields": ["httptestid", "name", "delay", "agent", "authentication", "http_user", "http_password", "hostid", "http_proxy", "retries", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host"],
            "data": []
        },
        "httptestitem": {
            "fields": ["httptestitemid", "httptestid", "itemid", "type"],
            "data": []
        },
        "httptest_field": {
            "fields": ["httptest_fieldid", "httptestid", "type", "name", "value"],
            "data": []
        },
        "httpstep": {
            "fields": ["httpstepid", "httptestid", "name", "no", "url", "timeout", "posts", "required", "status_codes", "follow_redirects", "retrieve_mode", "post_type"],
            "data": []
        },
        "httpstepitem": {
            "fields": ["httpstepitemid", "httpstepid", "itemid", "type"],
            "data": []
        },
        "httpstep_field": {
            "fields": ["httpstep_fieldid", "httpstepid", "type", "name", "value"],
            "data": []
        },
        "config_autoreg_tls": {
            "fields": ["autoreg_tlsid", "tls_psk_identity", "tls_psk"],
            "data": [
                [1, "", ""]
            ]
        }
    },
    "macro.secrets": {
        "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix": {
            "Content": "738"
        }
    },
    "config_revision": 2
}
Solicitud de datos

La solicitud proxy data se envía desde el proxy para proporcionar disponibilidad de interfaces de host, datos de historial, descubrimiento y autoregistro. Esta solicitud se envía cada DataSenderFrequency segundos (parámetro de configuración del proxy). Tenga en cuenta que el proxy activo seguirá consultando al server de Zabbix cada segundo para tareas de comandos remotos (con una solicitud proxy data vacía).

name value type description
proxy→server:
request string 'proxy data'
host string Nombre del proxy.
session string Token de sesión de datos.
interface availability array (optional) Matriz de objetos de disponibilidad de interfaces.
interfaceid number Identificador de la interfaz.
available number Disponibilidad de la interfaz:

0, INTERFACE_AVAILABLE_UNKNOWN - desconocida
1, INTERFACE_AVAILABLE_TRUE - disponible
2, INTERFACE_AVAILABLE_FALSE - no disponible
error string Mensaje de error de la interfaz o cadena vacía.
history data array (optional) Matriz de objetos de datos de historial.
itemid number Identificador del item.
clock number Marca de tiempo del valor del item (segundos).
ns number Marca de tiempo del valor del item (nanosegundos).
value string (optional) Valor del item.
id number Identificador del valor (contador ascendente, único dentro de una sesión de datos).
timestamp number (optional) Marca de tiempo de los items de tipo log.
source string (optional) Valor de origen del item eventlog.
severity number (optional) Valor de severidad del item eventlog.
eventid number (optional) Valor eventid del item eventlog.
state string (optional) Estado del item:
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize number (optional) Último tamaño de log de los items de tipo log.
mtime number (optional) Hora de modificación de los items de tipo log.
discovery data array (optional) Matriz de objetos de datos de descubrimiento.
clock number Marca de tiempo de los datos de descubrimiento.
druleid number Identificador de la regla de descubrimiento.
dcheckid number Identificador de la comprobación de descubrimiento o null para datos de la regla de descubrimiento.
type number Tipo de comprobación de descubrimiento:

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

0, DOBJECT_STATUS_UP - Servicio UP
1, DOBJECT_STATUS_DOWN - Servicio DOWN
autoregistration array (optional) Matriz de objetos de datos de autoregistro.
clock number Marca de tiempo de los datos de autoregistro.
host string Nombre del host.
ip string (optional) Dirección IP del host.
dns string (optional) Nombre DNS resuelto a partir de la dirección IP.
port string (optional) Puerto del host.
host_metadata string (optional) Metadatos del host enviados por el agent (basados en el parámetro de configuración del agent HostMetadata o HostMetadataItem).
tasks array (optional) Matriz de tareas.
type number Tipo de tarea:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - resultado de 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 - el comando remoto falló
error string (optional) Mensaje de error.
parent_taskid number ID de la tarea principal.
more number (optional) 1 - hay más datos de historial para enviar
clock number (optional) Marca de tiempo de la transferencia de datos (segundos).
ns number (optional) Marca de tiempo de la transferencia de datos (nanosegundos).
version string Versión del proxy (<major>.<minor>.<build>).
server→proxy:
response string Información de éxito de la solicitud ('success' o 'failed').
upload string Control de carga para datos históricos (historial, autoregistro, disponibilidad de host, descubrimiento de red).

Valores posibles:
enabled - funcionamiento normal
disabled - el server no acepta datos (posiblemente debido a que la caché interna ha superado el límite)
tasks array (optional) Matriz de tareas.
type number Tipo de tarea:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - comando remoto
clock number Hora de creación de la tarea.
ttl number Tiempo en segundos tras el cual la tarea expira.
commandtype number 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 string Comando remoto a ejecutar.
execute_on number Destino de ejecución para scripts personalizados:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - ejecutar el script en el agent
1, ZBX_SCRIPT_EXECUTE_ON_SERVER - ejecutar el script en el server
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - ejecutar el script en el proxy
port number (optional) Puerto para comandos Telnet y SSH.
authtype number (optional) Tipo de autenticación para comandos SSH.
username string (optional) Nombre de usuario para comandos Telnet y SSH.
password string (optional) Contraseña para comandos Telnet y SSH.
publickey string (optional) Clave pública para comandos SSH.
privatekey string (optional) Clave privada para comandos SSH.
parent_taskid number ID de la tarea principal.
hostid number ID del host de destino.

Ejemplo:

proxy→server:

{
    "request": "proxy data",
    "host": "Zabbix proxy",
    "session": "818cdd1b537bdc5e50c09ed4969235b6",
    "interface availability": [{
        "interfaceid": 1,
        "available": 1,
        "error": ""
    }],
    "history data": [{
        "id": 1114,
        "itemid": 44162,
        "clock": 1665730632,
        "ns": 798953105,
        "value": "1"
    }, {
        "id": 1115,
        "itemid": 44161,
        "clock": 1665730633,
        "ns": 811684663,
        "value": "58"
    }],
    "auto registration": [{
        "clock": 1665730633,
        "host": "Zabbix server",
        "ip": "127.0.0.1",
        "dns": "localhost",
        "port": "10053",
        "host_metadata": "58",
        "tls_accepted": 1
    }],
    "discovery data": [{
        "clock": 1665732232,
        "drule": 2,
        "dcheck": 2,
        "ip": "127.0.0.1",
        "dns": "localhost",
        "port": 10052,
        "status": 1
    }, {
        "clock": 1665732232,
        "drule": 2,
        "dcheck": null,
        "ip": "127.0.0.1",
        "dns": "localhost",
        "status": 1
    }],
    "host data": [{
        "hostid": 10084,
        "active_status": 1
    }],
    "tasks": [{
        "type": 3,
        "clock": 1665730985,
        "ttl": 0,
        "status": -1,
        "info": "Remote commands are not enabled",
        "parent_taskid": 3
    }],
    "version": "7.4.0",
    "clock": 1665730643,
    "ns": 65389964
}

server→proxy:

{
    "upload": "enabled",
    "response": "success",
    "tasks": [{
        "type": 2,
        "clock": 1665730986,
        "ttl": 600,
        "commandtype": 0,
        "command": "ping -c 3 127.0.0.1; case $? in [01]) true;; *) false;; esac",
        "execute_on": 2,
        "port": 0,
        "authtype": 0,
        "username": "",
        "password": "",
        "publickey": "",
        "privatekey": "",
        "alertid": 0,
        "parent_taskid": 4,
        "hostid": 10084
    }]
}