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
Konfigurationsanforderung
Der Server sendet zunächst eine leere proxy config-Anforderung. Diese Anforderung wird alle ProxyConfigFrequency
(Sekunden; Server-Konfigurationsparameter) gesendet.
Der Proxy antwortet mit der aktuellen Proxy-Version, dem Sitzungstoken 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 | Sitzungstoken der Proxy-Konfiguration. | ||||
| config_revision | number | Revision 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 mit Feldnamen. | ||||
| - | string | Feldname. | ||||
| data | array | Array mit Zeilen. | ||||
| - | array | Array mit Spalten. | ||||
| - | string,number | Spaltenwert mit einem Typ, der vom Spaltentyp im Datenbankschema abhängt. | ||||
| macro.secrets | object | Informationen zu geheimen Makros; nicht vorhanden, wenn keine Änderungen an Tresormakros vorliegen (optional). | ||||
| config_revision | number | Revision des Konfigurations-Caches - wird mit den Konfigurationsdaten gesendet (optional). | ||||
| del_hostids | array | Array mit entfernten Host-IDs (optional). | ||||
| - | number | Host-Kennung. | ||||
| del_macro_hostids | array | Array mit Host-IDs, bei denen alle Makros entfernt wurden (optional). | ||||
| - | number | Host-Kennung. | ||||
| proxy→server: | ||||||
| response | string | Information zum Erfolg der Anforderung ('success' oder 'failed'). | ||||
| version | string | Proxy-Version (<major>.<minor>.<build>). | ||||
Beispiel:
server→proxy:
{
"request":"proxy config"
}
proxy→server:
{
"version": "7.4.0",
"session": "0033124949800811e5686dbfd9bcea98",
"config_revision": 0
}
server→proxy:
{
"full_sync": 1,
"data": {
"hosts": {
"fields": ["hostid", "host", "status", "ipmi_authtype", "ipmi_privilege", "ipmi_username", "ipmi_password", "name", "tls_connect", "tls_accept", "tls_issuer", "tls_subject", "tls_psk_identity", "tls_psk"],
"data": [
[10084, "Zabbix server", 0, -1, 2, "", "", "Zabbix server", 1, 1, "", "", "", ""]
]
},
"interface": {
"fields": ["interfaceid", "hostid", "main", "type", "useip", "ip", "dns", "port", "available"],
"data": [
[1, 10084, 1, 1, 1, "127.0.0.1", "", "10053", 1]
]
},
"interface_snmp": {
"fields": ["interfaceid", "version", "bulk", "community", "securityname", "securitylevel", "authpassphrase", "privpassphrase", "authprotocol", "privprotocol", "contextname"],
"data": []
},
"host_inventory": {
"fields": ["hostid", "type", "type_full", "name", "alias", "os", "os_full", "os_short", "serialno_a", "serialno_b", "tag", "asset_tag", "macaddress_a", "macaddress_b", "hardware", "hardware_full", "software", "software_full", "software_app_a", "software_app_b", "software_app_c", "software_app_d", "software_app_e", "contact", "location", "location_lat", "location_lon", "notes", "chassis", "model", "hw_arch", "vendor", "contract_number", "installer_name", "deployment_status", "url_a", "url_b", "url_c", "host_networks", "host_netmask", "host_router", "oob_ip", "oob_netmask", "oob_router", "date_hw_purchase", "date_hw_install", "date_hw_expiry", "date_hw_decomm", "site_address_a", "site_address_b", "site_address_c", "site_city", "site_state", "site_country", "site_zip", "site_rack", "site_notes", "poc_1_name", "poc_1_email", "poc_1_phone_a", "poc_1_phone_b", "poc_1_cell", "poc_1_screen", "poc_1_notes", "poc_2_name", "poc_2_email", "poc_2_phone_a", "poc_2_phone_b", "poc_2_cell", "poc_2_screen", "poc_2_notes"],
"data": [
[10084, "", "", ..., "56.95387", "24.22067", ..., ""]
]
},
"items": {
"fields": ["itemid", "type", "snmp_oid", "hostid", "key_", "delay", "history", "status", "value_type", "trapper_hosts", "logtimefmt", "params", "ipmi_sensor", "authtype", "username", "password", "publickey", "privatekey", "flags", "interfaceid", "inventory_link", "jmx_endpoint", "master_itemid", "timeout", "url", "query_fields", "posts", "status_codes", "follow_redirects", "post_type", "http_proxy", "headers", "retrieve_mode", "request_method", "output_format", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host", "allow_traps"],
"data": [
[44161, 7, "", 10084, "agent.hostmetadata", "10s", "90d", 0, 1, "", "", "", "", 0, "", "", "", "", 0, null, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0],
[44162, 0, "", 10084, "agent.ping", "10s", "90d", 0, 3, "", "", "", "", 0, "", "", "", "", 0, 1, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0]
]
},
"item_rtdata": {
"fields": ["itemid", "lastlogsize", "mtime"],
"data": [
[44161, 0, 0],
[44162, 0, 0]
]
},
"item_preproc": {
"fields": ["item_preprocid", "itemid", "step", "type", "params", "error_handler", "error_handler_params"],
"data": []
},
"item_parameter": {
"fields": ["item_parameterid", "itemid", "name", "value"],
"data": []
},
"globalmacro": {
"fields": ["globalmacroid", "macro", "value", "type"],
"data": [
[2, "{$SNMP_COMMUNITY}", "public", 0]
]
},
"hosts_templates": {
"fields": ["hosttemplateid", "hostid", "templateid", "link_type"],
"data": []
},
"hostmacro": {
"fields": ["hostmacroid", "hostid", "macro", "value", "type", "automatic"],
"data": [
[5676, 10084, "{$M}", "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix:Content", 2, 0]
]
},
"drules": {
"fields": ["druleid", "name", "iprange", "delay"],
"data": [
[2, "Local network", "127.0.0.1", "10s"]
]
},
"dchecks": {
"fields": ["dcheckid", "druleid", "type", "key_", "snmp_community", "ports", "snmpv3_securityname", "snmpv3_securitylevel", "snmpv3_authpassphrase", "snmpv3_privpassphrase", "uniq", "snmpv3_authprotocol", "snmpv3_privprotocol", "snmpv3_contextname", "host_source", "name_source"],
"data": [
[2, 2, 9, "system.uname", "", "10052", "", 0, "", "", 0, 0, 0, "", 1, 0]
]
},
"regexps": {
"fields": ["regexpid", "name"],
"data": [
[1, "File systems for discovery"],
[2, "Network interfaces for discovery"],
[3, "Storage devices for SNMP discovery"],
[4, "Windows service names for discovery"],
[5, "Windows service startup states for discovery"]
]
},
"expressions": {
"fields": ["expressionid", "regexpid", "expression", "expression_type", "exp_delimiter", "case_sensitive"],
"data": [
[1, 1, "^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$", 3, ",", 0],
[3, 3, "^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$", 4, ",", 1],
[5, 4, "^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$", 4, ",", 1],
[6, 5, "^(automatic|automatic delayed)$", 3, ",", 1],
[7, 2, "^Software Loopback Interface", 4, ",", 1],
[8, 2, "^(In)?[Ll]oop[Bb]ack[0-9._]*$", 4, ",", 1],
[9, 2, "^NULL[0-9.]*$", 4, ",", 1],
[10, 2, "^[Ll]o[0-9.]*$", 4, ",", 1],
[11, 2, "^[Ss]ystem$", 4, ",", 1],
[12, 2, "^Nu[0-9.]*$", 4, ",", 1]
]
},
"settings": {
"fields": ["name", "type", "value_str", "value_int"],
"data": [
["autoreg_tls_accept", 2, "", 1],
["hk_history_global", 2, "", 0],
["snmptrap_logging", 2, "", 1],
["proxy_secrets_provider", 2, "", 0],
["hk_history", 1, "31d", 0],
["timeout_db_monitor", 1, "3s", 0],
["timeout_external_check", 1, "3s", 0],
["timeout_http_agent", 1, "3s", 0],
["timeout_simple_check", 1, "3s", 0],
["timeout_snmp_agent", 1, "3s", 0],
["timeout_ssh_agent", 1, "3s", 0],
["timeout_telnet_agent", 1, "3s", 0],
["timeout_zabbix_agent", 1, "3s", 0],
["timeout_browser", 1, "30s", 0]
]
},
"httptest": {
"fields": ["httptestid", "name", "delay", "agent", "authentication", "http_user", "http_password", "hostid", "http_proxy", "retries", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host"],
"data": []
},
"httptestitem": {
"fields": ["httptestitemid", "httptestid", "itemid", "type"],
"data": []
},
"httptest_field": {
"fields": ["httptest_fieldid", "httptestid", "type", "name", "value"],
"data": []
},
"httpstep": {
"fields": ["httpstepid", "httptestid", "name", "no", "url", "timeout", "posts", "required", "status_codes", "follow_redirects", "retrieve_mode", "post_type"],
"data": []
},
"httpstepitem": {
"fields": ["httpstepitemid", "httpstepid", "itemid", "type"],
"data": []
},
"httpstep_field": {
"fields": ["httpstep_fieldid", "httpstepid", "type", "name", "value"],
"data": []
},
"config_autoreg_tls": {
"fields": ["autoreg_tlsid", "tls_psk_identity", "tls_psk"],
"data": [
[1, "", ""]
]
}
},
"macro.secrets": {
"AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix": {
"Content": "738"
}
},
"config_revision": 2
}
proxy→server:
{
"response": "success",
"version": "7.4.0"
}
Datenanforderung
Die Anforderung proxy data wird verwendet, um Verfügbarkeit von Host-Schnittstellen sowie historische, Discovery- und Autoregistrierungsdaten vom Proxy abzurufen. Diese Anforderung wird alle ProxyDataFrequency Sekunden (Server-Konfigurationsparameter) gesendet.
| name | value type | description | |
|---|---|---|---|
| server→proxy: | |||
| request | string | 'proxy data' | |
| proxy→server: | |||
| session | string | Daten-Sitzungstoken. | |
| interface availability | array | (optional) Array von Objekten mit Daten 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 Objekten mit Verlaufsdaten. | |
| 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, innerhalb einer Daten-Sitzung eindeutig). | |
| timestamp | number | (optional) Zeitstempel von Datenpunkten des Log-Typs. | |
| 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 des Log-Typs. | |
| mtime | number | (optional) Änderungszeit von Datenpunkten des Log-Typs. | |
| discovery data | array | (optional) Array von Objekten mit Discovery-Daten. | |
| 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-Dienstprüfung 1, SVC_LDAP - LDAP-Dienstprüfung 2, SVC_SMTP - SMTP-Dienstprüfung 3, SVC_FTP - FTP-Dienstprüfung 4, SVC_HTTP - HTTP-Dienstprüfung 5, SVC_POP - POP-Dienstprüfung 6, SVC_NNTP - NNTP-Dienstprüfung 7, SVC_IMAP - IMAP-Dienstprü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-Dienstprüfung 15, SVC_TELNET - Telnet-Verfügbarkeitsprüfung |
|
| ip | string | IP-Adresse des Host. | |
| dns | string | DNS-Name des Host. | |
| port | number | (optional) Dienstportnummer. | |
| key_ | string | (optional) Datenpunkt-Schlüssel für Discovery-Prüfung 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 Objekten mit Autoregistrierungsdaten. | |
| clock | number | Zeitstempel der Autoregistrierungsdaten. | |
| host | string | Host-Name. | |
| ip | string | (optional) IP-Adresse des Host. | |
| 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 zum Erfolg der Anforderung ('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 benutzerdefiniertem 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-Host. | |
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":"7.4.0"
}
server→proxy:
{
"response": "success",
"tasks":[
{
"type": 1,
"clock": 1478608371,
"ttl": 600,
"commandtype": 2,
"command": "restart_service1.sh",
"execute_on": 2,
"port": 80,
"authtype": 0,
"username": "userA",
"password": "password1",
"publickey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe",
"privatekey": "lsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5QCqGKukO1De7zhd",
"parent_taskid": 10,
"hostid": 10070
},
{
"type": 1,
"clock": 1478608381,
"ttl": 600,
"commandtype": 1,
"command": "restart_service2.sh",
"execute_on": 0,
"authtype": 0,
"username": "",
"password": "",
"publickey": "",
"privatekey": "",
"parent_taskid": 20,
"hostid": 10084
}
]
}
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
Konfigurationsanforderung
Die Anforderung proxy config wird vom aktiven Proxy gesendet, um Konfigurationsdaten des Proxy abzurufen. Diese Anforderung wird alle ProxyConfigFrequency (Proxy-Konfigurationsparameter) Sekunden gesendet.
| name | value type | description | ||||
|---|---|---|---|---|---|---|
| proxy→server: | ||||||
| request | string | 'proxy config' | ||||
| host | string |
Proxy-Name. | ||||
| version | string | Proxy-Version (<major>.<minor>.<build>). | ||||
| session | string | Sitzungstoken der Proxy-Konfiguration. | ||||
| config_revision | number | Revision der Proxy-Konfiguration. | ||||
| hostmap_revision | number | Aktuelle Revision der Zuordnung von Hosts zu Proxys. | ||||
| 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 mit Feldnamen. | ||||
| - | string | Feldname. | ||||
| data | array | Array mit Zeilen. | ||||
| - | array | Array mit Spalten. | ||||
| - | string,number | Spaltenwert mit einem Typ, der vom Spaltentyp im Datenbankschema abhängt. | ||||
| macro.secrets | object | Informationen zu geheimen Makros; nicht vorhanden, wenn keine Änderungen an Tresormakros vorliegen (optional). | ||||
| proxy_group | string | Der Name der Proxy-Gruppe, zu der der Proxy gehört. | ||||
| config_revision | number | Revision des Konfigurations-Caches - wird mit den Konfigurationsdaten gesendet (optional). | ||||
| del_hostids | array | Array der entfernten Host-IDs (optional). | ||||
| - | number | Host-Kennung. | ||||
| del_macro_hostids | array | Array der Host-IDs, bei denen alle Makros entfernt wurden (optional). | ||||
| - | number | Host-Kennung. | ||||
Beispiel:
proxy→server:
{
"request": "proxy config",
"host": "Zabbix proxy",
"version":"7.4.0",
"session": "fd59a09ff4e9d1fb447de1f04599bcf6",
"config_revision": 0
}
server→proxy:
{
"full_sync": 1,
"data": {
"hosts": {
"fields": ["hostid", "host", "status", "ipmi_authtype", "ipmi_privilege", "ipmi_username", "ipmi_password", "name", "tls_connect", "tls_accept", "tls_issuer", "tls_subject", "tls_psk_identity", "tls_psk"],
"data": [
[10084, "Zabbix server", 0, -1, 2, "", "", "Zabbix server", 1, 1, "", "", "", ""]
]
},
"interface": {
"fields": ["interfaceid", "hostid", "main", "type", "useip", "ip", "dns", "port", "available"],
"data": [
[1, 10084, 1, 1, 1, "127.0.0.1", "", "10053", 1]
]
},
"interface_snmp": {
"fields": ["interfaceid", "version", "bulk", "community", "securityname", "securitylevel", "authpassphrase", "privpassphrase", "authprotocol", "privprotocol", "contextname"],
"data": []
},
"host_inventory": {
"fields": ["hostid", "type", "type_full", "name", "alias", "os", "os_full", "os_short", "serialno_a", "serialno_b", "tag", "asset_tag", "macaddress_a", "macaddress_b", "hardware", "hardware_full", "software", "software_full", "software_app_a", "software_app_b", "software_app_c", "software_app_d", "software_app_e", "contact", "location", "location_lat", "location_lon", "notes", "chassis", "model", "hw_arch", "vendor", "contract_number", "installer_name", "deployment_status", "url_a", "url_b", "url_c", "host_networks", "host_netmask", "host_router", "oob_ip", "oob_netmask", "oob_router", "date_hw_purchase", "date_hw_install", "date_hw_expiry", "date_hw_decomm", "site_address_a", "site_address_b", "site_address_c", "site_city", "site_state", "site_country", "site_zip", "site_rack", "site_notes", "poc_1_name", "poc_1_email", "poc_1_phone_a", "poc_1_phone_b", "poc_1_cell", "poc_1_screen", "poc_1_notes", "poc_2_name", "poc_2_email", "poc_2_phone_a", "poc_2_phone_b", "poc_2_cell", "poc_2_screen", "poc_2_notes"],
"data": [
[10084, "", "", ..., "56.95387", "24.22067", ..., ""]
]
},
"items": {
"fields": ["itemid", "type", "snmp_oid", "hostid", "key_", "delay", "history", "status", "value_type", "trapper_hosts", "logtimefmt", "params", "ipmi_sensor", "authtype", "username", "password", "publickey", "privatekey", "flags", "interfaceid", "inventory_link", "jmx_endpoint", "master_itemid", "timeout", "url", "query_fields", "posts", "status_codes", "follow_redirects", "post_type", "http_proxy", "headers", "retrieve_mode", "request_method", "output_format", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host", "allow_traps"],
"data": [
[44161, 7, "", 10084, "agent.hostmetadata", "10s", "90d", 0, 1, "", "", "", "", 0, "", "", "", "", 0, null, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0],
[44162, 0, "", 10084, "agent.ping", "10s", "90d", 0, 3, "", "", "", "", 0, "", "", "", "", 0, 1, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0]
]
},
"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 Anforderung proxy data wird vom Proxy gesendet, um Verfügbarkeitsdaten der Host-Schnittstellen, Verlaufsdaten, Erkennungsdaten und Daten zur automatischen Registrierung bereitzustellen.
Diese Anforderung wird alle DataSenderFrequency Sekunden gesendet (Proxy-Konfigurationsparameter).
Beachten Sie, dass ein aktiver Proxy den Zabbix Server weiterhin jede Sekunde nach Aufgaben für Remote-Befehle abfragt (mit einer leeren Anforderung proxy data).
| name | value type | description | |
|---|---|---|---|
| proxy→server: | |||
| request | string | 'proxy data' | |
| host | string | Proxy-Name. | |
| session | string | Daten-Sitzungstoken. | |
| interface availability | array | (optional) Array von Objekten mit Verfügbarkeitsdaten der Schnittstellen. | |
| interfaceid | number | Schnittstellen-ID. | |
| available | number | Verfügbarkeit der Schnittstelle: 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 Objekten mit Verlaufsdaten. | |
| 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, innerhalb einer Daten-Sitzung eindeutig). | |
| timestamp | number | (optional) Zeitstempel von Datenpunkten des Log-Typs. | |
| 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 des Log-Typs. | |
| mtime | number | (optional) Änderungszeit von Datenpunkten des Log-Typs. | |
| discovery data | array | (optional) Array von Objekten mit Erkennungsdaten. | |
| clock | number | Zeitstempel der Erkennungsdaten. | |
| druleid | number | ID der Erkennungsregel. | |
| dcheckid | number | ID der Erkennungsprüfung oder null für Daten der Erkennungsregel. | |
| type | number | Typ der Erkennungsprüfung: -1 Daten der Erkennungsregel 0, SVC_SSH - SSH-Dienstprüfung 1, SVC_LDAP - LDAP-Dienstprüfung 2, SVC_SMTP - SMTP-Dienstprüfung 3, SVC_FTP - FTP-Dienstprüfung 4, SVC_HTTP - HTTP-Dienstprüfung 5, SVC_POP - POP-Dienstprüfung 6, SVC_NNTP - NNTP-Dienstprüfung 7, SVC_IMAP - IMAP-Dienstprüfung 8, SVC_TCP - Verfügbarkeitsprüfung eines TCP-Ports 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-Dienstprü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) Datenpunkt-Schlüssel für Erkennungsprüfung 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 Objekten mit Daten zur automatischen Registrierung. | |
| clock | number | Zeitstempel der Daten zur automatischen Registrierung. | |
| 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 Anforderung ('success' oder 'failed'). | |
| upload | string | Steuerung des Uploads für historische Daten (Verlauf, automatische Registrierung, Host-Verfügbarkeit, Netzwerkerkennung). Mögliche Werte: enabled - normaler Betrieb disabled - der Server akzeptiert keine Daten (möglicherweise aufgrund eines internen Cache-Überlaufs) |
|
| 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 benutzerdefiniertem 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:
proxy→server:
{
"request": "proxy data",
"host": "Zabbix proxy",
"session": "818cdd1b537bdc5e50c09ed4969235b6",
"interface availability": [{
"interfaceid": 1,
"available": 1,
"error": ""
}],
"history data": [{
"id": 1114,
"itemid": 44162,
"clock": 1665730632,
"ns": 798953105,
"value": "1"
}, {
"id": 1115,
"itemid": 44161,
"clock": 1665730633,
"ns": 811684663,
"value": "58"
}],
"auto registration": [{
"clock": 1665730633,
"host": "Zabbix server",
"ip": "127.0.0.1",
"dns": "localhost",
"port": "10053",
"host_metadata": "58",
"tls_accepted": 1
}],
"discovery data": [{
"clock": 1665732232,
"drule": 2,
"dcheck": 2,
"ip": "127.0.0.1",
"dns": "localhost",
"port": 10052,
"status": 1
}, {
"clock": 1665732232,
"drule": 2,
"dcheck": null,
"ip": "127.0.0.1",
"dns": "localhost",
"status": 1
}],
"host data": [{
"hostid": 10084,
"active_status": 1
}],
"tasks": [{
"type": 3,
"clock": 1665730985,
"ttl": 0,
"status": -1,
"info": "Remote commands are not enabled",
"parent_taskid": 3
}],
"version": "7.4.0",
"clock": 1665730643,
"ns": 65389964
}
server→proxy:
{
"upload": "enabled",
"response": "success",
"tasks": [{
"type": 2,
"clock": 1665730986,
"ttl": 600,
"commandtype": 0,
"command": "ping -c 3 127.0.0.1; case $? in [01]) true;; *) false;; esac",
"execute_on": 2,
"port": 0,
"authtype": 0,
"username": "",
"password": "",
"publickey": "",
"privatekey": "",
"alertid": 0,
"parent_taskid": 4,
"hostid": 10084
}]
}