1 Protocolo de troca de dados server-proxy

Visão geral

A troca de dados entre server e proxy é baseada no formato JSON.

As mensagens de solicitação e resposta devem começar com cabeçalho e comprimento dos dados.

Proxy passivo

Solicitação de configuração

O server enviará primeiro uma solicitação vazia de proxy config. Essa solicitação é enviada a cada ProxyConfigFrequency (parâmetro de configuração do server) segundos.

O proxy responde com a versão atual do proxy, o token de sessão e a revisão da configuração. O server responde com os dados de configuração que precisam ser atualizados.

name value type description
server→proxy:
request string 'proxy config'
proxy→server:
version string Versão do proxy (<major>.<minor>.<build>).
session string Token da sessão de configuração do proxy.
config_revision number Revisão da configuração do proxy.
server→proxy:
full_sync number 1 - se os dados completos de configuração forem enviados; ausente - caso contrário (opcional).
data array Objeto com dados da tabela. Ausente se a configuração não tiver sido alterada (opcional).
<table> object Um ou mais objetos com dados de <table> (opcional, dependendo das alterações).
fields array Array de nomes de campos.
- string Nome do campo.
data array Array de linhas.
- array Array de colunas.
- string,number Valor da coluna com tipo dependendo do tipo da coluna no esquema do banco de dados.
macro.secrets object Informações de macro secreta, ausente se não houver alterações nas macros do vault (opcional).
config_revision number Revisão do cache de configuração - enviada com os dados de configuração (opcional).
del_hostids array Array de hostids removidos (opcional).
- number Identificador do host.
del_macro_hostids array Array de hostids com todas as macros removidas (opcional).
- number Identificador do host.
proxy→server:
response string Informações de sucesso da solicitação ('success' ou 'failed').
version string Versão do proxy (<major>.<minor>.<build>).

Exemplo:

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"
}
Solicitação de dados

A solicitação proxy data é usada para obter a disponibilidade da interface do host, dados históricos, de descoberta e de autoregistro do proxy. Essa solicitação é enviada a cada ProxyDataFrequency (parâmetro de configuração do server) segundos.

name value type description
server→proxy:
request string 'proxy data'
proxy→server:
session string Token da sessão de dados.
interface availability array (optional) Array de objetos de disponibilidade de interface.
interfaceid number Identificador da interface.
available number Disponibilidade da interface:

0, INTERFACE_AVAILABLE_UNKNOWN - desconhecida
1, INTERFACE_AVAILABLE_TRUE - disponível
2, INTERFACE_AVAILABLE_FALSE - indisponível
error string Mensagem de erro da interface ou string vazia.
history data array (optional) Array de objetos de dados históricos.
itemid number Identificador do item.
clock number Timestamp do valor do item (segundos).
ns number Timestamp do valor do item (nanosegundos).
value string (optional) Valor do item.
id number Identificador do valor (contador crescente, único dentro de uma sessão de dados).
timestamp number (optional) Timestamp de itens do tipo log.
source string (optional) Valor de origem do item eventlog.
severity number (optional) Valor de severidade do item eventlog.
eventid number (optional) Valor de eventid do item eventlog.
state string (optional) Estado do item:
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize number (optional) Último tamanho de log de itens do tipo log.
mtime number (optional) Hora de modificação de itens do tipo log.
discovery data array (optional) Array de objetos de dados de descoberta.
clock number Timestamp dos dados de descoberta.
druleid number Identificador da regra de descoberta.
dcheckid number Identificador da verificação de descoberta ou null para dados da regra de descoberta.
type number Tipo de verificação de descoberta:

-1 dados da regra de descoberta
0, SVC_SSH - verificação de serviço SSH
1, SVC_LDAP - verificação de serviço LDAP
2, SVC_SMTP - verificação de serviço SMTP
3, SVC_FTP - verificação de serviço FTP
4, SVC_HTTP - verificação de serviço HTTP
5, SVC_POP - verificação de serviço POP
6, SVC_NNTP - verificação de serviço NNTP
7, SVC_IMAP - verificação de serviço IMAP
8, SVC_TCP - verificação de disponibilidade da porta TCP
9, SVC_AGENT - agent do Zabbix
10, SVC_SNMPv1 - agent SNMPv1
11, SVC_SNMPv2 - agent SNMPv2
12, SVC_ICMPPING - ping ICMP
13, SVC_SNMPv3 - agent SNMPv3
14, SVC_HTTPS - verificação de serviço HTTPS
15, SVC_TELNET - verificação de disponibilidade do Telnet
ip string Endereço IP do host.
dns string Nome DNS do host.
port number (optional) Número da porta do serviço.
key_ string (optional) Chave do item para verificação de descoberta do tipo 9 SVC_AGENT
value string (optional) Valor recebido do serviço, pode estar vazio para a maioria dos serviços.
status number (optional) Status do serviço:

0, DOBJECT_STATUS_UP - serviço UP
1, DOBJECT_STATUS_DOWN - serviço DOWN
auto registration array (optional) Array de objetos de autoregistro.
clock number Timestamp dos dados de autoregistro.
host string Nome do host.
ip string (optional) Endereço IP do host.
dns string (optional) Nome DNS resolvido a partir do endereço IP.
port string (optional) Porta do host.
host_metadata string (optional) Metadados do host enviados pelo agent (com base no parâmetro de configuração do agent HostMetadata ou HostMetadataItem).
tasks array (optional) Array de tarefas.
type number Tipo de tarefa:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - resultado de comando remoto
status number Status de execução do comando remoto:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED - comando remoto concluído com sucesso
1, ZBX_TM_REMOTE_COMMAND_FAILED - falha no comando remoto
error string (optional) Mensagem de erro.
parent_taskid number ID da tarefa pai.
more number (optional) 1 - há mais dados históricos a enviar.
clock number (optional) Timestamp da transferência de dados (segundos).
ns number (optional) Timestamp da transferência de dados (nanosegundos).
version string Versão do proxy (<major>.<minor>.<build>).
server→proxy:
response string Informação de sucesso da solicitação ('success' ou 'failed').
tasks array (optional) Array de tarefas.
type number Tipo de tarefa:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - comando remoto
clock number Hora de criação da tarefa.
ttl number Tempo em segundos após o qual a tarefa 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 (atualmente funcionalmente equivalente a script personalizado)
command string Comando remoto a ser executado.
execute_on number Destino de execução para scripts personalizados:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - executar o script no agent
1, ZBX_SCRIPT_EXECUTE_ON_SERVER - executar o script no server
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - executar o script no proxy
port number (optional) Porta para comandos Telnet e SSH.
authtype number (optional) Tipo de autenticação para comandos SSH.
username string (optional) Nome de usuário para comandos Telnet e SSH.
password string (optional) Senha para comandos Telnet e SSH.
publickey string (optional) Chave pública para comandos SSH.
privatekey string (optional) Chave privada para comandos SSH.
parent_taskid number ID da tarefa pai.
hostid number ID do host de destino.

Exemplo:

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
      }
  ]
}
Solicitação de tarefas

A troca de proxy tasks lida com a entrega e confirmação de tarefas de comando remoto entre o server e um proxy passivo. Quando o server consulta o proxy para obter os resultados das tarefas, ele envia uma solicitação vazia de proxy tasks no intervalo definido por ProxyDataFrequency. O proxy responde com sua versão atual e quaisquer resultados de tarefas pendentes (incluindo carimbos de data/hora). O server então confirma o recebimento retornando uma response e pode incluir novas tarefas para o proxy executar.

nome tipo de valor descrição
server→proxy:
request string 'proxy tasks'
proxy→server:
version string Versão do proxy (<major>.<minor>.<build>).
clock number (opcional) Carimbo de data/hora da transferência de dados (segundos).
ns number (opcional) Carimbo de data/hora da transferência de dados (nanossegundos).
server→proxy:
response string Informação de sucesso da solicitação ('success' ou 'failed').

Exemplo:

server→proxy:

{
  "request":"proxy tasks"
}

proxy→server:

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

server→proxy:

{
  "response":"success"
}

Proxy ativo

Solicitação de configuração

A solicitação proxy config é enviada pelo proxy ativo para obter dados de configuração do proxy. Essa solicitação é enviada a cada ProxyConfigFrequency (parâmetro de configuração do proxy) segundos.

name value type description
proxy→server:
request string 'proxy config'
host string
Nome do proxy.
version string Versão do proxy (<major>.<minor>.<build>).
session string Token da sessão de configuração do proxy.
config_revision number Revisão da configuração do proxy.
hostmap_revision number Revisão atual do mapeamento host-to-proxy.
server→proxy:
full_sync number 1 - se os dados completos de configuração forem enviados; ausente caso contrário (opcional).
data array Objeto com dados da tabela. Ausente se a configuração não tiver sido alterada (opcional).
<table> object Um ou mais objetos com dados de <table> (opcional, dependendo das alterações).
fields array Array de nomes de campos.
- string Nome do campo.
data array Array de linhas.
- array Array de colunas.
- string,number Valor da coluna com tipo dependente do tipo de coluna no esquema do banco de dados.
macro.secrets object Informações de macro secreta, ausente se não houver alterações nas macros do vault (opcional).
proxy_group string Nome do grupo de proxy ao qual o proxy pertence.
config_revision number Revisão do cache de configuração - enviada com os dados de configuração (opcional).
del_hostids array Array de hostids removidos (opcional).
- number Identificador do host.
del_macro_hostids array Array de hostids com todas as macros removidas (opcional).
- number Identificador do host.

Exemplo:

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
}
Solicitação de dados

A solicitação proxy data é enviada pelo proxy para fornecer disponibilidade de interfaces de host, histórico, descoberta e dados de autorregistro. Essa solicitação é enviada a cada DataSenderFrequency (parâmetro de configuração do proxy) segundos. Observe que o proxy ativo ainda consultará o Zabbix server a cada segundo para tarefas de comando remoto (com uma solicitação proxy data vazia).

name value type description
proxy→server:
request string 'proxy data'
host string Nome do proxy.
session string Token da sessão de dados.
interface availability array (optional) Array de objetos de disponibilidade de interface.
interfaceid number Identificador da interface.
available number Disponibilidade da interface:

0, INTERFACE_AVAILABLE_UNKNOWN - desconhecida
1, INTERFACE_AVAILABLE_TRUE - disponível
2, INTERFACE_AVAILABLE_FALSE - indisponível
error string Mensagem de erro da interface ou string vazia.
history data array (optional) Array de objetos de dados históricos.
itemid number Identificador do item.
clock number Timestamp do valor do item (segundos).
ns number Timestamp do valor do item (nanosegundos).
value string (optional) Valor do item.
id number Identificador do valor (contador crescente, exclusivo dentro de uma sessão de dados).
timestamp number (optional) Timestamp de itens do tipo log.
source string (optional) Valor de origem do item eventlog.
severity number (optional) Valor de severidade do item eventlog.
eventid number (optional) Valor de eventid do item eventlog.
state string (optional) Estado do item:
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize number (optional) Último tamanho de log de itens do tipo log.
mtime number (optional) Hora da modificação de itens do tipo log.
discovery data array (optional) Array de objetos de dados de descoberta.
clock number Timestamp dos dados de descoberta.
druleid number Identificador da regra de descoberta.
dcheckid number Identificador da verificação de descoberta ou null para dados da regra de descoberta.
type number Tipo de verificação de descoberta:

-1 dados da regra de descoberta
0, SVC_SSH - verificação de serviço SSH
1, SVC_LDAP - verificação de serviço LDAP
2, SVC_SMTP - verificação de serviço SMTP
3, SVC_FTP - verificação de serviço FTP
4, SVC_HTTP - verificação de serviço HTTP
5, SVC_POP - verificação de serviço POP
6, SVC_NNTP - verificação de serviço NNTP
7, SVC_IMAP - verificação de serviço IMAP
8, SVC_TCP - verificação de disponibilidade de porta TCP
9, SVC_AGENT - agent do Zabbix
10, SVC_SNMPv1 - agent SNMPv1
11, SVC_SNMPv2 - agent SNMPv2
12, SVC_ICMPPING - ping ICMP
13, SVC_SNMPv3 - agent SNMPv3
14, SVC_HTTPS - verificação de serviço HTTPS
15, SVC_TELNET - verificação de disponibilidade de Telnet
ip string Endereço IP do host.
dns string Nome DNS do host.
port number (optional) Número da porta do serviço.
key_ string (optional) Chave do item para verificação de descoberta do tipo 9 SVC_AGENT
value string (optional) Valor recebido do serviço, pode estar vazio para a maioria dos serviços.
status number (optional) Status do serviço:

0, DOBJECT_STATUS_UP - serviço UP
1, DOBJECT_STATUS_DOWN - serviço DOWN
autoregistration array (optional) Array de objetos de dados de autorregistro.
clock number Timestamp dos dados de autorregistro.
host string Nome do host.
ip string (optional) Endereço IP do host.
dns string (optional) Nome DNS resolvido a partir do endereço IP.
port string (optional) Porta do host.
host_metadata string (optional) Metadados do host enviados pelo agent (com base no parâmetro de configuração do agent HostMetadata ou HostMetadataItem).
tasks array (optional) Array de tarefas.
type number Tipo de tarefa:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - resultado de comando remoto
status number Status de execução do comando remoto:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED - comando remoto concluído com sucesso
1, ZBX_TM_REMOTE_COMMAND_FAILED - comando remoto falhou
error string (optional) Mensagem de erro.
parent_taskid number ID da tarefa pai.
more number (optional) 1 - há mais dados históricos para enviar
clock number (optional) Timestamp da transferência de dados (segundos).
ns number (optional) Timestamp da transferência de dados (nanosegundos).
version string Versão do proxy (<major>.<minor>.<build>).
server→proxy:
response string Informação de sucesso da solicitação ('success' ou 'failed').
upload string Controle de envio para dados históricos (history, autoregistration, disponibilidade de host, descoberta de rede).

Valores possíveis:
enabled - operação normal
disabled - o server não está aceitando dados (possivelmente devido ao limite interno de cache)
tasks array (optional) Array de tarefas.
type number Tipo de tarefa:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - comando remoto
clock number Hora de criação da tarefa.
ttl number Tempo em segundos após o qual a tarefa 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 (atualmente funcionalmente equivalente a script personalizado)
command string Comando remoto a executar.
execute_on number Destino de execução para scripts personalizados:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - executar script no agent
1, ZBX_SCRIPT_EXECUTE_ON_SERVER - executar script no server
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - executar script no proxy
port number (optional) Porta para comandos Telnet e SSH.
authtype number (optional) Tipo de autenticação para comandos SSH.
username string (optional) Nome de usuário para comandos Telnet e SSH.
password string (optional) Senha para comandos Telnet e SSH.
publickey string (optional) Chave pública para comandos SSH.
privatekey string (optional) Chave privada para comandos SSH.
parent_taskid number ID da tarefa pai.
hostid number ID do host de destino.

Exemplo:

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