Protocolo de troca de dados entre server e proxy

Server - a troca de dados com o proxy é baseada no formato JSON.

As mensagens de solicitação e resposta devem começar com header and data length.

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 de sessão da configuração do proxy.
config_revision number Revisão da configuração do proxy.
server→proxy:
full_sync number 1 - se os dados completos da configuração forem enviados; ausente - caso contrário (opcional).
data array Objeto com os 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": "8.0.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": "8.0.0"
}
Solicitação de dados

A solicitação proxy data é usada para obter 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, 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 dos itens do tipo log.
mtime number (optional) Hora de modificação dos 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
auto registration array (optional) Array de objetos de dados 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 serem enviados.
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 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:

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":"8.0.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 tasks

A troca de proxy tasks trata da entrega e do reconhecimento de tasks de comandos remotos entre o server e um proxy passivo. Quando o server consulta o proxy por resultados de tasks, 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 tasks pendentes (incluindo timestamps). Em seguida, o server confirma o recebimento retornando uma response e pode incluir novas tasks para o proxy executar.

name value type description
server→proxy:
request string 'proxy tasks'
proxy→server:
version string Versão do proxy (<major>.<minor>.<build>).
clock number (optional) Timestamp da transferência de dados (segundos).
ns number (optional) Timestamp da transferência de dados (nanosegundos).
server→proxy:
response string Informações 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-para-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 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).
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":"8.0.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 dados de disponibilidade de interface do host, histórico, descoberta e autoregistro. Essa solicitação é enviada a cada DataSenderFrequency (parâmetro de configuração do proxy) segundos. Observe que o proxy ativo ainda consultará o server do Zabbix 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 de histórico.
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 dos itens do tipo log.
mtime number (optional) Hora de modificação dos 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 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 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 - comando remoto falhou
error string (optional) Mensagem de erro.
parent_taskid number ID da tarefa pai.
more number (optional) 1 - há mais dados de histórico 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 do host, descoberta de rede).

Valores possíveis:
enabled - operação normal
disabled - o server não está aceitando dados (possivelmente devido ao cache interno acima do limite)
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 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": "8.0.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
    }]
}