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
Configuration request
The server will first send an empty proxy config request.
This request is sent every ProxyConfigFrequency (server configuration parameter) seconds.
The proxy responds with the current proxy version, session token and configuration revision. The server responds with the configuration data that need to be updated.
| name | value type | description | ||||
|---|---|---|---|---|---|---|
| server→proxy: | ||||||
| request | string | 'proxy config' | ||||
| proxy→server: | ||||||
| version | string | Proxy version (<major>.<minor>.<build>). | ||||
| session | string | Proxy configuration session token. | ||||
| config_revision | number | Proxy configuration revision. | ||||
| server→proxy: | ||||||
| full_sync | number | 1 - if full configuration data is sent; absent otherwise (optional). | ||||
| data | array | Object of table data. Absent if configuration has not been changed (optional). | ||||
| <table> | object | One or more objects with <table> data (optional, depending on changes). | ||||
| fields | array | Array of field names. | ||||
| - | string | Field name. | ||||
| data | array | Array of rows. | ||||
| - | array | Array of columns. | ||||
| - | string,number | Column value with type depending on column type in database schema. | ||||
| macro.secrets | object | Secret macro information, absent if there are no changes in vault macros (optional). | ||||
| config_revision | number | Configuration cache revision - sent with configuration data (optional). | ||||
| del_hostids | array | Array of removed hostids (optional). | ||||
| - | number | Host identifier. | ||||
| del_macro_hostids | array | Array of hostids with all macros removed (optional). | ||||
| - | number | Host identifier. | ||||
| proxy→server: | ||||||
| response | string | Request success information ('success' or 'failed'). | ||||
| version | string | Proxy version (<major>.<minor>.<build>). | ||||
Example:
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
}]
}