1 Server-Proxy-Datenaustauschprotokoll
Übersicht
Der Datenaustausch zwischen Server und Proxy basiert auf dem JSON-Format.
Anfrage- und Antwortnachrichten müssen mit Header und Datenlänge beginnen.
Passiver Proxy
Konfigurationsanfrage
Der Server sendet zunächst eine leere Anfrage proxy config. Diese Anfrage wird alle ProxyConfigFrequency
(Schritte des Server-Konfigurationsparameters) Sekunden gesendet.
Der Proxy antwortet mit der aktuellen Proxy-Version, dem Sitzungs-Token und der Konfigurationsrevision. Der Server antwortet mit den Konfigurationsdaten, die aktualisiert werden müssen.
| name | value type | description | ||||
|---|---|---|---|---|---|---|
| server→proxy: | ||||||
| request | string | 'proxy config' | ||||
| proxy→server: | ||||||
| version | string | Proxy-Version (<major>.<minor>.<build>). | ||||
| session | string | Sitzungs-Token der Proxy-Konfiguration. | ||||
| config_revision | number | Revisionsnummer der Proxy-Konfiguration. | ||||
| server→proxy: | ||||||
| full_sync | number | 1 - wenn vollständige Konfigurationsdaten gesendet werden; andernfalls nicht vorhanden (optional). | ||||
| data | array | Objekt mit Tabellendaten. Nicht vorhanden, wenn die Konfiguration nicht geändert wurde (optional). | ||||
| <table> | object | Ein oder mehrere Objekte mit <table>-Daten (optional, abhängig von den Änderungen). | ||||
| fields | array | Array von Feldnamen. | ||||
| - | string | Feldname. | ||||
| data | array | Array von Zeilen. | ||||
| - | array | Array von Spalten. | ||||
| - | string,number | Spaltenwert, dessen Typ vom Spaltentyp im Datenbankschema abhängt. | ||||
| macro.secrets | object | Informationen zu geheimen Makros; nicht vorhanden, wenn es keine Änderungen an Vault-Makros gibt (optional). | ||||
| config_revision | number | Revision des Konfigurations-Caches - wird zusammen mit den Konfigurationsdaten gesendet (optional). | ||||
| del_hostids | array | Array entfernter Host-IDs (optional). | ||||
| - | number | Host-Kennung. | ||||
| del_macro_hostids | array | Array von Host-IDs, bei denen alle Makros entfernt wurden (optional). | ||||
| - | number | Host-Kennung. | ||||
| proxy→server: | ||||||
| response | string | Information über den Erfolg der Anfrage ('success' oder 'failed'). | ||||
| version | string | Proxy-Version (<major>.<minor>.<build>). | ||||
Beispiel:
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"
}
Datenanforderung
Die Anfrage proxy data wird verwendet, um Verfügbarkeitsdaten von Host-Schnittstellen sowie Verlaufs-, Discovery- und Autoregistrierungsdaten vom Proxy abzurufen. Diese Anfrage wird alle ProxyDataFrequency Sekunden (Konfigurationsparameter des Servers) gesendet.
| name | value type | description | |
|---|---|---|---|
| server→proxy: | |||
| request | string | 'proxy data' | |
| proxy→server: | |||
| session | string | Token der Datensitzung. | |
| interface availability | array | (optional) Array von Datenobjekten zur Schnittstellenverfügbarkeit. | |
| interfaceid | number | Schnittstellen-ID. | |
| available | number | Schnittstellenverfügbarkeit: 0, INTERFACE_AVAILABLE_UNKNOWN - unbekannt 1, INTERFACE_AVAILABLE_TRUE - verfügbar 2, INTERFACE_AVAILABLE_FALSE - nicht verfügbar |
|
| error | string | Fehlermeldung der Schnittstelle oder leerer String. | |
| history data | array | (optional) Array von Verlaufsdatenobjekten. | |
| itemid | number | Datenpunkt-ID. | |
| clock | number | Zeitstempel des Datenpunktwerts (Sekunden). | |
| ns | number | Zeitstempel des Datenpunktwerts (Nanosekunden). | |
| value | string | (optional) Datenpunktwert. | |
| id | number | Wert-ID (aufsteigender Zähler, eindeutig innerhalb einer Datensitzung). | |
| timestamp | number | (optional) Zeitstempel von Datenpunkten vom Typ Log. | |
| source | string | (optional) Quellwert des Eventlog-Datenpunkts. | |
| severity | number | (optional) Schweregradwert des Eventlog-Datenpunkts. | |
| eventid | number | (optional) eventid-Wert des Eventlog-Datenpunkts. | |
| state | string | (optional) Datenpunktstatus: 0, ITEM_STATE_NORMAL 1, ITEM_STATE_NOTSUPPORTED |
|
| lastlogsize | number | (optional) Letzte Loggröße von Datenpunkten vom Typ Log. | |
| mtime | number | (optional) Änderungszeit von Datenpunkten vom Typ Log. | |
| discovery data | array | (optional) Array von Discovery-Datenobjekten. | |
| clock | number | Zeitstempel der Discovery-Daten. | |
| druleid | number | ID der Discovery-Regel. | |
| dcheckid | number | ID der Discovery-Prüfung oder null für Daten der Discovery-Regel. | |
| type | number | Typ der Discovery-Prüfung: -1 Daten der Discovery-Regel 0, SVC_SSH - SSH-Serviceprüfung 1, SVC_LDAP - LDAP-Serviceprüfung 2, SVC_SMTP - SMTP-Serviceprüfung 3, SVC_FTP - FTP-Serviceprüfung 4, SVC_HTTP - HTTP-Serviceprüfung 5, SVC_POP - POP-Serviceprüfung 6, SVC_NNTP - NNTP-Serviceprüfung 7, SVC_IMAP - IMAP-Serviceprüfung 8, SVC_TCP - TCP-Portverfügbarkeitsprüfung 9, SVC_AGENT - Zabbix Agent 10, SVC_SNMPv1 - SNMPv1-Agent 11, SVC_SNMPv2 - SNMPv2-Agent 12, SVC_ICMPPING - ICMP-Ping 13, SVC_SNMPv3 - SNMPv3-Agent 14, SVC_HTTPS - HTTPS-Serviceprüfung 15, SVC_TELNET - Telnet-Verfügbarkeitsprüfung |
|
| ip | string | IP-Adresse des Hosts. | |
| dns | string | DNS-Name des Hosts. | |
| port | number | (optional) Portnummer des Dienstes. | |
| key_ | string | (optional) Datenpunktschlüssel für Discovery-Prüfungen vom Typ 9 SVC_AGENT | |
| value | string | (optional) Vom Dienst empfangener Wert; kann bei den meisten Diensten leer sein. | |
| status | number | (optional) Dienststatus: 0, DOBJECT_STATUS_UP - Dienst UP 1, DOBJECT_STATUS_DOWN - Dienst DOWN |
|
| auto registration | array | (optional) Array von Autoregistrierungs-Datenobjekten. | |
| clock | number | Zeitstempel der Autoregistrierungsdaten. | |
| host | string | Host-Name. | |
| ip | string | (optional) IP-Adresse des Hosts. | |
| dns | string | (optional) Aus der IP-Adresse aufgelöster DNS-Name. | |
| port | string | (optional) Host-Port. | |
| host_metadata | string | (optional) Vom Agent gesendete Host-Metadaten (basierend auf dem Agent-Konfigurationsparameter HostMetadata oder HostMetadataItem). | |
| tasks | array | (optional) Array von Aufgaben. | |
| type | number | Aufgabentyp: 0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - Ergebnis eines Remote-Befehls |
|
| status | number | Ausführungsstatus des Remote-Befehls: 0, ZBX_TM_REMOTE_COMMAND_COMPLETED - Remote-Befehl erfolgreich abgeschlossen 1, ZBX_TM_REMOTE_COMMAND_FAILED - Remote-Befehl fehlgeschlagen |
|
| error | string | (optional) Fehlermeldung. | |
| parent_taskid | number | ID der übergeordneten Aufgabe. | |
| more | number | (optional) 1 - es sind weitere Verlaufsdaten zu senden. | |
| clock | number | (optional) Zeitstempel der Datenübertragung (Sekunden). | |
| ns | number | (optional) Zeitstempel der Datenübertragung (Nanosekunden). | |
| version | string | Proxy-Version (<major>.<minor>.<build>). | |
| server→proxy: | |||
| response | string | Information über den Erfolg der Anfrage ('success' oder 'failed'). | |
| tasks | array | (optional) Array von Aufgaben. | |
| type | number | Aufgabentyp: 1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - Remote-Befehl |
|
| clock | number | Erstellungszeit der Aufgabe. | |
| ttl | number | Zeit in Sekunden, nach der die Aufgabe abläuft. | |
| commandtype | number | Typ des Remote-Befehls: 0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - benutzerdefiniertes Skript verwenden 1, ZBX_SCRIPT_TYPE_IPMI - IPMI verwenden 2, ZBX_SCRIPT_TYPE_SSH - SSH verwenden 3, ZBX_SCRIPT_TYPE_TELNET - Telnet verwenden 4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - globales Skript verwenden (derzeit funktional gleichwertig mit einem benutzerdefinierten Skript) |
|
| command | string | Auszuführender Remote-Befehl. | |
| execute_on | number | Ausführungsziel für benutzerdefinierte Skripte: 0, ZBX_SCRIPT_EXECUTE_ON_AGENT - Skript auf dem Agent ausführen 1, ZBX_SCRIPT_EXECUTE_ON_SERVER - Skript auf dem Server ausführen 2, ZBX_SCRIPT_EXECUTE_ON_PROXY - Skript auf dem Proxy ausführen |
|
| port | number | (optional) Port für Telnet- und SSH-Befehle. | |
| authtype | number | (optional) Authentifizierungstyp für SSH-Befehle. | |
| username | string | (optional) Benutzername für Telnet- und SSH-Befehle. | |
| password | string | (optional) Passwort für Telnet- und SSH-Befehle. | |
| publickey | string | (optional) Öffentlicher Schlüssel für SSH-Befehle. | |
| privatekey | string | (optional) Privater Schlüssel für SSH-Befehle. | |
| parent_taskid | number | ID der übergeordneten Aufgabe. | |
| hostid | number | ID des Ziel-Hosts. | |
Beispiel:
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
}
]
}
Aufgabenanfrage
Der Austausch proxy tasks verarbeitet die Übermittlung und Bestätigung von Aufgaben für Remote-Befehle zwischen dem Server und einem passiven Proxy. Wenn der Server den Proxy nach Aufgabenergebnissen abfragt, sendet er in dem durch ProxyDataFrequency definierten Intervall eine leere Anfrage proxy tasks. Der Proxy antwortet mit seiner aktuellen Version und allen ausstehenden Aufgabenergebnissen (einschließlich Zeitstempeln). Der Server bestätigt dann den Empfang, indem er ein response zurückgibt, und kann neue Aufgaben einschließen, die der Proxy ausführen soll.
| name | value type | description | |
|---|---|---|---|
| server→proxy: | |||
| request | string | 'proxy tasks' | |
| proxy→server: | |||
| version | string | Proxy-Version (<major>.<minor>.<build>). | |
| clock | number | (optional) Zeitstempel der Datenübertragung (Sekunden). | |
| ns | number | (optional) Zeitstempel der Datenübertragung (Nanosekunden). | |
| server→proxy: | |||
| response | string | Information über den Erfolg der Anfrage ('success' oder 'failed'). | |
Beispiel:
server→proxy:
{
"request":"proxy tasks"
}
proxy→server:
{
"version":"7.0.0",
"clock":1721059872,
"ns":848141522
}
server→proxy:
{
"response":"success"
}
Aktiver Proxy
Konfigurationsanfrage
Die Anfrage proxy config wird von einem aktiven Proxy gesendet, um Proxy-Konfigurationsdaten abzurufen. Diese Anfrage wird alle ProxyConfigFrequency Sekunden gesendet (Proxy-Konfigurationsparameter).
| name | value type | description | ||||
|---|---|---|---|---|---|---|
| proxy→server: | ||||||
| request | string | 'proxy config' | ||||
| host | string |
Proxy-Name. | ||||
| version | string | Proxy-Version (<major>.<minor>.<build>). | ||||
| session | string | Sitzungs-Token der Proxy-Konfiguration. | ||||
| config_revision | number | Revisionsnummer der Proxy-Konfiguration. | ||||
| hostmap_revision | number | Aktuelle Revisionsnummer der Host-zu-Proxy-Zuordnung. | ||||
| server→proxy: | ||||||
| full_sync | number | 1 - wenn vollständige Konfigurationsdaten gesendet werden, andernfalls nicht vorhanden (optional). | ||||
| data | array | Objekt mit Tabellendaten. Nicht vorhanden, wenn die Konfiguration nicht geändert wurde (optional). | ||||
| <table> | object | Ein oder mehrere Objekte mit <table>-Daten (optional, abhängig von Änderungen). | ||||
| fields | array | Array von Feldnamen. | ||||
| - | string | Feldname. | ||||
| data | array | Array von Zeilen. | ||||
| - | array | Array von Spalten. | ||||
| - | string,number | Spaltenwert, dessen Typ vom Spaltentyp im Datenbankschema abhängt. | ||||
| macro.secrets | object | Informationen zu geheimen Makros; nicht vorhanden, wenn es keine Änderungen an Vault-Makros gibt (optional). | ||||
| proxy_group | string | Der Name der Proxy-Gruppe, zu der der Proxy gehört. | ||||
| config_revision | number | Revision des Konfigurations-Caches - wird zusammen mit den Konfigurationsdaten gesendet (optional). | ||||
| del_hostids | array | Array entfernter Host-IDs (optional). | ||||
| - | number | Host-Kennung. | ||||
| del_macro_hostids | array | Array von Host-IDs, bei denen alle Makros entfernt wurden (optional). | ||||
| - | number | Host-Kennung. | ||||
Beispiel:
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
}
Datenanforderung
Die Anfrage proxy data wird vom Proxy gesendet, um die Verfügbarkeit von Host-Schnittstellen sowie Verlaufs-, Discovery- und Autoregistrierungsdaten bereitzustellen.
Diese Anfrage wird alle DataSenderFrequency Sekunden gesendet (Konfigurationsparameter des Proxy).
Beachten Sie, dass ein aktiver Proxy den Zabbix Server weiterhin jede Sekunde auf Remote-Command-Aufgaben abfragt (mit einer leeren Anfrage proxy data).
| name | value type | description | |
|---|---|---|---|
| proxy→server: | |||
| request | string | 'proxy data' | |
| host | string | Proxy-Name. | |
| session | string | Datensitzungs-Token. | |
| interface availability | array | (optional) Array von Datenobjekten zur Schnittstellenverfügbarkeit. | |
| interfaceid | number | Schnittstellen-ID. | |
| available | number | Schnittstellenverfügbarkeit: 0, INTERFACE_AVAILABLE_UNKNOWN - unbekannt 1, INTERFACE_AVAILABLE_TRUE - verfügbar 2, INTERFACE_AVAILABLE_FALSE - nicht verfügbar |
|
| error | string | Fehlermeldung der Schnittstelle oder leerer String. | |
| history data | array | (optional) Array von Verlaufsdatenobjekten. | |
| itemid | number | Datenpunkt-ID. | |
| clock | number | Zeitstempel des Datenpunktwerts (Sekunden). | |
| ns | number | Zeitstempel des Datenpunktwerts (Nanosekunden). | |
| value | string | (optional) Datenpunktwert. | |
| id | number | Wert-ID (aufsteigender Zähler, eindeutig innerhalb einer Datensitzung). | |
| timestamp | number | (optional) Zeitstempel von Datenpunkten vom Typ Log. | |
| source | string | (optional) Quellwert des Eventlog-Datenpunkts. | |
| severity | number | (optional) Schweregradwert des Eventlog-Datenpunkts. | |
| eventid | number | (optional) eventid-Wert des Eventlog-Datenpunkts. | |
| state | string | (optional) Datenpunktstatus: 0, ITEM_STATE_NORMAL 1, ITEM_STATE_NOTSUPPORTED |
|
| lastlogsize | number | (optional) Letzte Log-Größe von Datenpunkten vom Typ Log. | |
| mtime | number | (optional) Änderungszeit von Datenpunkten vom Typ Log. | |
| discovery data | array | (optional) Array von Discovery-Datenobjekten. | |
| clock | number | Zeitstempel der Discovery-Daten. | |
| druleid | number | ID der Discovery-Regel. | |
| dcheckid | number | ID der Discovery-Prüfung oder null für Daten der Discovery-Regel. | |
| type | number | Typ der Discovery-Prüfung: -1 Daten der Discovery-Regel 0, SVC_SSH - SSH-Serviceprüfung 1, SVC_LDAP - LDAP-Serviceprüfung 2, SVC_SMTP - SMTP-Serviceprüfung 3, SVC_FTP - FTP-Serviceprüfung 4, SVC_HTTP - HTTP-Serviceprüfung 5, SVC_POP - POP-Serviceprüfung 6, SVC_NNTP - NNTP-Serviceprüfung 7, SVC_IMAP - IMAP-Serviceprüfung 8, SVC_TCP - Prüfung der TCP-Port-Verfügbarkeit 9, SVC_AGENT - Zabbix Agent 10, SVC_SNMPv1 - SNMPv1-Agent 11, SVC_SNMPv2 - SNMPv2-Agent 12, SVC_ICMPPING - ICMP-Ping 13, SVC_SNMPv3 - SNMPv3-Agent 14, SVC_HTTPS - HTTPS-Serviceprüfung 15, SVC_TELNET - Prüfung der Telnet-Verfügbarkeit |
|
| ip | string | IP-Adresse des Hosts. | |
| dns | string | DNS-Name des Hosts. | |
| port | number | (optional) Portnummer des Dienstes. | |
| key_ | string | (optional) Datenpunktschlüssel für Discovery-Prüfungen vom Typ 9 SVC_AGENT | |
| value | string | (optional) Vom Dienst empfangener Wert; kann bei den meisten Diensten leer sein. | |
| status | number | (optional) Dienststatus: 0, DOBJECT_STATUS_UP - Dienst UP 1, DOBJECT_STATUS_DOWN - Dienst DOWN |
|
| autoregistration | array | (optional) Array von Autoregistrierungs-Datenobjekten. | |
| clock | number | Zeitstempel der Autoregistrierungsdaten. | |
| host | string | Host-Name. | |
| ip | string | (optional) IP-Adresse des Hosts. | |
| dns | string | (optional) Aus der IP-Adresse aufgelöster DNS-Name. | |
| port | string | (optional) Host-Port. | |
| host_metadata | string | (optional) Vom Agent gesendete Host-Metadaten (basierend auf dem Agent-Konfigurationsparameter HostMetadata oder HostMetadataItem). | |
| tasks | array | (optional) Array von Aufgaben. | |
| type | number | Aufgabentyp: 0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - Ergebnis des Remote-Commands |
|
| status | number | Ausführungsstatus des Remote-Commands: 0, ZBX_TM_REMOTE_COMMAND_COMPLETED - Remote-Command erfolgreich abgeschlossen 1, ZBX_TM_REMOTE_COMMAND_FAILED - Remote-Command fehlgeschlagen |
|
| error | string | (optional) Fehlermeldung. | |
| parent_taskid | number | ID der übergeordneten Aufgabe. | |
| more | number | (optional) 1 - es sind weitere Verlaufsdaten zu senden | |
| clock | number | (optional) Zeitstempel der Datenübertragung (Sekunden). | |
| ns | number | (optional) Zeitstempel der Datenübertragung (Nanosekunden). | |
| version | string | Proxy-Version (<major>.<minor>.<build>). | |
| server→proxy: | |||
| response | string | Information über den Erfolg der Anfrage ('success' oder 'failed'). | |
| upload | string | Upload-Steuerung für historische Daten (Verlauf, Autoregistrierung, Host-Verfügbarkeit, Netzwerk-Discovery). Mögliche Werte: enabled - normaler Betrieb disabled - der Server akzeptiert keine Daten (möglicherweise aufgrund eines internen Cache-Limits) |
|
| tasks | array | (optional) Array von Aufgaben. | |
| type | number | Aufgabentyp: 1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - Remote-Command |
|
| clock | number | Zeitpunkt der Aufgabenerstellung. | |
| ttl | number | Zeit in Sekunden, nach der die Aufgabe abläuft. | |
| commandtype | number | Typ des Remote-Commands: 0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - benutzerdefiniertes Skript verwenden 1, ZBX_SCRIPT_TYPE_IPMI - IPMI verwenden 2, ZBX_SCRIPT_TYPE_SSH - SSH verwenden 3, ZBX_SCRIPT_TYPE_TELNET - Telnet verwenden 4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - globales Skript verwenden (derzeit funktional gleichwertig mit einem benutzerdefinierten Skript) |
|
| command | string | Auszuführender Remote-Command. | |
| execute_on | number | Ausführungsziel für benutzerdefinierte Skripte: 0, ZBX_SCRIPT_EXECUTE_ON_AGENT - Skript auf dem Agent ausführen 1, ZBX_SCRIPT_EXECUTE_ON_SERVER - Skript auf dem Server ausführen 2, ZBX_SCRIPT_EXECUTE_ON_PROXY - Skript auf dem Proxy ausführen |
|
| port | number | (optional) Port für Telnet- und SSH-Commands. | |
| authtype | number | (optional) Authentifizierungstyp für SSH-Commands. | |
| username | string | (optional) Benutzername für Telnet- und SSH-Commands. | |
| password | string | (optional) Passwort für Telnet- und SSH-Commands. | |
| publickey | string | (optional) Öffentlicher Schlüssel für SSH-Commands. | |
| privatekey | string | (optional) Privater Schlüssel für SSH-Commands. | |
| parent_taskid | number | ID der übergeordneten Aufgabe. | |
| hostid | number | ID des Ziel-Hosts. | |
Beispiel:
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
}]
}