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 proxy config-Anfrage. Diese Anfrage wird alle ProxyConfigFrequency (SERVER-Konfigurationsparameter) Sekunden 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 Proxy-Konfigurationssitzungstoken.
config_revision number Proxy-Konfigurationsrevision.
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 mit einem vom Spaltentyp im Datenbankschema abhängigen Typ.
macro.secrets object Informationen zu geheimen Makros, nicht vorhanden, wenn es keine Änderungen bei Vault-Makros gibt (optional).
config_revision number Konfigurations-Cache-Revision - zusammen mit den Konfigurationsdaten gesendet (optional).
del_hostids array Array der entfernten Host-IDs (optional).
- number Host-ID.
del_macro_hostids array Array von Host-IDs, bei denen alle Makros entfernt wurden (optional).
- number Host-ID.
proxy→server:
response string Erfolgsinformation der Anfrage ('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, "Dateisysteme für die Erkennung"],
                [2, "Netzwerkschnittstellen für die Erkennung"],
                [3, "Speichergeräte für die SNMP-Erkennung"],
                [4, "Windows-Dienstnamen für die Erkennung"],
                [5, "Windows-Dienststartzustände für die Erkennung"]
            ]
        },
        "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

Konfigurationsanfrage

Die Anfrage proxy config wird von einem aktiven Proxy gesendet, um Konfigurationsdaten des Proxys abzurufen. Diese Anfrage wird alle ProxyConfigFrequency Sekunden (Konfigurationsparameter des Proxys) 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 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 den Änderungen).
fields array Array von Feldnamen.
- string Feldname.
data array Array von Zeilen.
- array Array von Spalten.
- string,number Spaltenwert mit Typ abhängig vom Spaltentyp im Datenbankschema.
macro.secrets object Informationen zu geheimen Makros, nicht vorhanden, wenn es keine Änderungen bei Vault-Makros gibt (optional).
proxy_group string Der Name der Proxy-Gruppe, zu der der Proxy gehört.
config_revision number Revision des Konfigurationscaches - wird mit den Konfigurationsdaten gesendet (optional).
del_hostids array Array der entfernten 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":"7.4.0",
  "session": "fd59a09ff4e9d1fb447de1f04599bcf6",
  "config_revision": 0
}

server→proxy:

{
    "full_sync": 1,
    "data": {
        "hosts": {
            "fields": ["hostid", "host", "status", "ipmi_authtype", "ipmi_privilege", "ipmi_username", "ipmi_password", "name", "tls_connect", "tls_accept", "tls_issuer", "tls_subject", "tls_psk_identity", "tls_psk"],
            "data": [
                [10084, "Zabbix server", 0, -1, 2, "", "", "Zabbix server", 1, 1, "", "", "", ""]
            ]
        },
        "interface": {
            "fields": ["interfaceid", "hostid", "main", "type", "useip", "ip", "dns", "port", "available"],
            "data": [
                [1, 10084, 1, 1, 1, "127.0.0.1", "", "10053", 1]
            ]
        },
        "interface_snmp": {
            "fields": ["interfaceid", "version", "bulk", "community", "securityname", "securitylevel", "authpassphrase", "privpassphrase", "authprotocol", "privprotocol", "contextname"],
            "data": []
        },
        "host_inventory": {
            "fields": ["hostid", "type", "type_full", "name", "alias", "os", "os_full", "os_short", "serialno_a", "serialno_b", "tag", "asset_tag", "macaddress_a", "macaddress_b", "hardware", "hardware_full", "software", "software_full", "software_app_a", "software_app_b", "software_app_c", "software_app_d", "software_app_e", "contact", "location", "location_lat", "location_lon", "notes", "chassis", "model", "hw_arch", "vendor", "contract_number", "installer_name", "deployment_status", "url_a", "url_b", "url_c", "host_networks", "host_netmask", "host_router", "oob_ip", "oob_netmask", "oob_router", "date_hw_purchase", "date_hw_install", "date_hw_expiry", "date_hw_decomm", "site_address_a", "site_address_b", "site_address_c", "site_city", "site_state", "site_country", "site_zip", "site_rack", "site_notes", "poc_1_name", "poc_1_email", "poc_1_phone_a", "poc_1_phone_b", "poc_1_cell", "poc_1_screen", "poc_1_notes", "poc_2_name", "poc_2_email", "poc_2_phone_a", "poc_2_phone_b", "poc_2_cell", "poc_2_screen", "poc_2_notes"],
            "data": [
                [10084, "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "56.95387", "24.22067", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
            ]
        },
        "items": {
            "fields": ["itemid", "type", "snmp_oid", "hostid", "key_", "delay", "history", "status", "value_type", "trapper_hosts", "logtimefmt", "params", "ipmi_sensor", "authtype", "username", "password", "publickey", "privatekey", "flags", "interfaceid", "inventory_link", "jmx_endpoint", "master_itemid", "timeout", "url", "query_fields", "posts", "status_codes", "follow_redirects", "post_type", "http_proxy", "headers", "retrieve_mode", "request_method", "output_format", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host", "allow_traps"],
            "data": [
                [44161, 7, "", 10084, "agent.hostmetadata", "10s", "90d", 0, 1, "", "", "", "", 0, "", "", "", "", 0, null, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0],
                [44162, 0, "", 10084, "agent.ping", "10s", "90d", 0, 3, "", "", "", "", 0, "", "", "", "", 0, 1, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0]
            ]
        },
        "item_rtdata": {
            "fields": ["itemid", "lastlogsize", "mtime"],
            "data": [
                [44161, 0, 0],
                [44162, 0, 0]
            ]
        },
        "item_preproc": {
            "fields": ["item_preprocid", "itemid", "step", "type", "params", "error_handler", "error_handler_params"],
            "data": []
        },
        "item_parameter": {
            "fields": ["item_parameterid", "itemid", "name", "value"],
            "data": []
        },
        "globalmacro": {
            "fields": ["globalmacroid", "macro", "value", "type"],
            "data": [
                [2, "{$SNMP_COMMUNITY}", "public", 0]
            ]
        },
        "hosts_templates": {
            "fields": ["hosttemplateid", "hostid", "templateid", "link_type"],
            "data": []
        },
        "hostmacro": {
            "fields": ["hostmacroid", "hostid", "macro", "value", "type", "automatic"],
            "data": [
                [5676, 10084, "{$M}", "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix:Content", 2, 0]
            ]
        },
        "drules": {
            "fields": ["druleid", "name", "iprange", "delay"],
            "data": [
                [2, "Local network", "127.0.0.1", "10s"]
            ]
        },
        "dchecks": {
            "fields": ["dcheckid", "druleid", "type", "key_", "snmp_community", "ports", "snmpv3_securityname", "snmpv3_securitylevel", "snmpv3_authpassphrase", "snmpv3_privpassphrase", "uniq", "snmpv3_authprotocol", "snmpv3_privprotocol", "snmpv3_contextname", "host_source", "name_source"],
            "data": [
                [2, 2, 9, "system.uname", "", "10052", "", 0, "", "", 0, 0, 0, "", 1, 0]
            ]
        },
        "regexps": {
            "fields": ["regexpid", "name"],
            "data": [
                [1, "Dateisysteme für die Erkennung"],
                [2, "Netzwerkschnittstellen für die Erkennung"],
                [3, "Speichergeräte für die SNMP-Erkennung"],
                [4, "Windows-Dienstnamen für die Erkennung"],
                [5, "Startzustände von Windows-Diensten für die Erkennung"]
            ]
        },
        "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
    }]
}