1 Protokół wymiany danych serwer-proxy

Przegląd

Wymiana danych serwer - proxy opiera się na formacie JSON.

Komunikaty żądania i odpowiedzi muszą zaczynać się od nagłówka i długości danych.

Pasywny proxy

Żądanie konfiguracji

Serwer najpierw wyśle puste żądanie proxy config. To żądanie jest wysyłane co ProxyConfigFrequency (parametr konfiguracji serwera) sekund.

Proxy odpowiada bieżącą wersją proxy, tokenem sesji i rewizją konfiguracji. Serwer odpowiada danymi konfiguracyjnymi, które wymagają aktualizacji.

name value type description
server→proxy:
request string 'proxy config'
proxy→server:
version string Wersja proxy (<major>.<minor>.<build>).
session string Token sesji konfiguracji proxy.
config_revision number Rewizja konfiguracji proxy.
server→proxy:
full_sync number 1 - jeśli wysyłane są pełne dane konfiguracyjne; w przeciwnym razie brak (opcjonalne).
data array Obiekt danych tabeli. Brak, jeśli konfiguracja nie została zmieniona (opcjonalne).
<table> object Jeden lub więcej obiektów z danymi <table> (opcjonalne, zależnie od zmian).
fields array Tablica nazw pól.
- string Nazwa pola.
data array Tablica wierszy.
- array Tablica kolumn.
- string,number Wartość kolumny, której typ zależy od typu kolumny w schemacie bazy danych.
macro.secrets object Informacje o tajnych makrach; brak, jeśli nie ma zmian w makrach vault (opcjonalne).
config_revision number Rewizja pamięci podręcznej konfiguracji - wysyłana wraz z danymi konfiguracyjnymi (opcjonalne).
del_hostids array Tablica usuniętych hostid (opcjonalne).
- number Identyfikator hosta.
del_macro_hostids array Tablica hostid, dla których usunięto wszystkie makra (opcjonalne).
- number Identyfikator hosta.
proxy→server:
response string Informacja o powodzeniu żądania ('success' lub 'failed').
version string Wersja proxy (<major>.<minor>.<build>).

Przykład:

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"
}
Żądanie danych

Żądanie proxy data służy do pobierania z proxy danych o dostępności interfejsów hosta, danych historycznych, danych wykrywania i danych autorejestracji. To żądanie jest wysyłane co ProxyDataFrequency (parametr konfiguracji serwera) sekund.

name value type description
server→proxy:
request string 'proxy data'
proxy→server:
session string Token sesji danych.
interface availability array (opcjonalnie) Tablica obiektów danych dostępności interfejsów.
interfaceid number Identyfikator interfejsu.
available number Dostępność interfejsu:

0, INTERFACE_AVAILABLE_UNKNOWN - nieznana
1, INTERFACE_AVAILABLE_TRUE - dostępny
2, INTERFACE_AVAILABLE_FALSE - niedostępny
error string Komunikat błędu interfejsu lub pusty ciąg.
history data array (opcjonalnie) Tablica obiektów danych historycznych.
itemid number Identyfikator pozycji.
clock number Znacznik czasu wartości pozycji (sekundy).
ns number Znacznik czasu wartości pozycji (nanosekundy).
value string (opcjonalnie) Wartość pozycji.
id number Identyfikator wartości (licznik rosnący, unikalny w obrębie jednej sesji danych).
timestamp number (opcjonalnie) Znacznik czasu pozycji typu log.
source string (opcjonalnie) Wartość źródła pozycji eventlog.
severity number (opcjonalnie) Wartość ważności pozycji eventlog.
eventid number (opcjonalnie) Wartość eventid pozycji eventlog.
state string (opcjonalnie) Stan pozycji:
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize number (opcjonalnie) Ostatni rozmiar logu dla pozycji typu log.
mtime number (opcjonalnie) Czas modyfikacji dla pozycji typu log.
discovery data array (opcjonalnie) Tablica obiektów danych wykrywania.
clock number Znacznik czasu danych wykrywania.
druleid number Identyfikator reguły wykrywania.
dcheckid number Identyfikator kontroli wykrywania lub null dla danych reguły wykrywania.
type number Typ kontroli wykrywania:

-1 dane reguły wykrywania
0, SVC_SSH - kontrola usługi SSH
1, SVC_LDAP - kontrola usługi LDAP
2, SVC_SMTP - kontrola usługi SMTP
3, SVC_FTP - kontrola usługi FTP
4, SVC_HTTP - kontrola usługi HTTP
5, SVC_POP - kontrola usługi POP
6, SVC_NNTP - kontrola usługi NNTP
7, SVC_IMAP - kontrola usługi IMAP
8, SVC_TCP - kontrola dostępności portu TCP
9, SVC_AGENT - agent Zabbix
10, SVC_SNMPv1 - agent SNMPv1
11, SVC_SNMPv2 - agent SNMPv2
12, SVC_ICMPPING - ping ICMP
13, SVC_SNMPv3 - agent SNMPv3
14, SVC_HTTPS - kontrola usługi HTTPS
15, SVC_TELNET - kontrola dostępności Telnet
ip string Adres IP hosta.
dns string Nazwa DNS hosta.
port number (opcjonalnie) Numer portu usługi.
key_ string (opcjonalnie) Klucz pozycji dla kontroli wykrywania typu 9 SVC_AGENT
value string (opcjonalnie) Wartość odebrana z usługi; dla większości usług może być pusta.
status number (opcjonalnie) Stan usługi:

0, DOBJECT_STATUS_UP - usługa działa
1, DOBJECT_STATUS_DOWN - usługa nie działa
auto registration array (opcjonalnie) Tablica obiektów danych autorejestracji.
clock number Znacznik czasu danych autorejestracji.
host string Nazwa hosta.
ip string (opcjonalnie) Adres IP hosta.
dns string (opcjonalnie) Rozwiązana nazwa DNS z adresu IP.
port string (opcjonalnie) Port hosta.
host_metadata string (opcjonalnie) Metadane hosta wysłane przez agent na podstawie parametru konfiguracji agent HostMetadata lub HostMetadataItem.
tasks array (opcjonalnie) Tablica zadań.
type number Typ zadania:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - wynik zdalnego polecenia
status number Stan wykonania zdalnego polecenia:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED - zdalne polecenie zakończone pomyślnie
1, ZBX_TM_REMOTE_COMMAND_FAILED - wykonanie zdalnego polecenia nie powiodło się
error string (opcjonalnie) Komunikat błędu.
parent_taskid number ID zadania nadrzędnego.
more number (opcjonalnie) 1 - jest więcej danych historycznych do wysłania.
clock number (opcjonalnie) Znacznik czasu transferu danych (sekundy).
ns number (opcjonalnie) Znacznik czasu transferu danych (nanosekundy).
version string Wersja proxy (<major>.<minor>.<build>).
server→proxy:
response string Informacja o powodzeniu żądania ('success' lub 'failed').
tasks array (opcjonalnie) Tablica zadań.
type number Typ zadania:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - zdalne polecenie
clock number Czas utworzenia zadania.
ttl number Czas w sekundach, po którym zadanie wygasa.
commandtype number Typ zdalnego polecenia:

0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - użyj niestandardowego skryptu
1, ZBX_SCRIPT_TYPE_IPMI - użyj IPMI
2, ZBX_SCRIPT_TYPE_SSH - użyj SSH
3, ZBX_SCRIPT_TYPE_TELNET - użyj Telnet
4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - użyj skryptu globalnego (obecnie funkcjonalnie równoważnego skryptowi niestandardowemu)
command string Zdalne polecenie do wykonania.
execute_on number Cel wykonania dla skryptów niestandardowych:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - wykonaj skrypt na agent
1, ZBX_SCRIPT_EXECUTE_ON_SERVER - wykonaj skrypt na serwerze
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - wykonaj skrypt na proxy
port number (opcjonalnie) Port dla poleceń Telnet i SSH.
authtype number (opcjonalnie) Typ uwierzytelniania dla poleceń SSH.
username string (opcjonalnie) Nazwa użytkownika dla poleceń Telnet i SSH.
password string (opcjonalnie) Hasło dla poleceń Telnet i SSH.
publickey string (opcjonalnie) Klucz publiczny dla poleceń SSH.
privatekey string (opcjonalnie) Klucz prywatny dla poleceń SSH.
parent_taskid number ID zadania nadrzędnego.
hostid number ID docelowego hosta.

Przykład:

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
      }
  ]
}
Żądanie zadań

Wymiana proxy tasks obsługuje dostarczanie i potwierdzanie zadań zdalnych poleceń między serwerem a pasywnym proxy. Gdy serwer odpytuje proxy o wyniki zadań, wysyła puste żądanie proxy tasks w interwale zdefiniowanym przez ProxyDataFrequency. Proxy odpowiada swoją bieżącą wersją oraz wszystkimi oczekującymi wynikami zadań (w tym znacznikami czasu). Następnie serwer potwierdza odbiór, zwracając response, i może dołączyć nowe zadania do wykonania przez proxy.

name value type description
serwer→proxy:
request string 'proxy tasks'
proxy→serwer:
version string Wersja proxy (<major>.<minor>.<build>).
clock number (opcjonalnie) Znacznik czasu transferu danych (sekundy).
ns number (opcjonalnie) Znacznik czasu transferu danych (nanosekundy).
serwer→proxy:
response string Informacja o powodzeniu żądania ('success' lub 'failed').

Przykład:

serwer→proxy:

{
  "request":"proxy tasks"
}

proxy→serwer:

{
  "version":"7.0.0",
  "clock":1721059872,
  "ns":848141522
}

serwer→proxy:

{
  "response":"success"
}

Aktywny proxy

Żądanie konfiguracji

Żądanie proxy config jest wysyłane przez aktywny proxy w celu pobrania danych konfiguracyjnych proxy. To żądanie jest wysyłane co ProxyConfigFrequency (parametr konfiguracyjny proxy) sekund.

name value type description
proxy→server:
request string 'proxy config'
host string
Nazwa proxy.
version string Wersja proxy (<major>.<minor>.<build>).
session string Token sesji konfiguracji proxy.
config_revision number Wersja konfiguracji proxy.
hostmap_revision number Bieżąca wersja mapowania host-proxy.
server→proxy:
full_sync number 1 - jeśli wysyłane są pełne dane konfiguracyjne, w przeciwnym razie pole nie występuje (opcjonalne).
data array Obiekt danych tabeli. Nie występuje, jeśli konfiguracja nie została zmieniona (opcjonalne).
<table> object Jeden lub więcej obiektów z danymi <table> (opcjonalne, zależnie od zmian).
fields array Tablica nazw pól.
- string Nazwa pola.
data array Tablica wierszy.
- array Tablica kolumn.
- string,number Wartość kolumny z typem zależnym od typu kolumny w schemacie bazy danych.
macro.secrets object Informacje o tajnych makrach; pole nie występuje, jeśli nie ma zmian w makrach vault (opcjonalne).
proxy_group string Nazwa grupy proxy, do której należy proxy.
config_revision number Wersja pamięci podręcznej konfiguracji - wysyłana wraz z danymi konfiguracyjnymi (opcjonalne).
del_hostids array Tablica usuniętych hostid (opcjonalne).
- number Identyfikator hosta.
del_macro_hostids array Tablica hostid, dla których usunięto wszystkie makra (opcjonalne).
- number Identyfikator hosta.

Przykład:

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
}
Żądanie danych

Żądanie proxy data jest wysyłane przez proxy w celu przekazania danych o dostępności interfejsów hosta, historii, wykrywaniu i autorejestracji. To żądanie jest wysyłane co DataSenderFrequency sekund (parametr konfiguracji proxy). Należy pamiętać, że aktywny proxy nadal będzie odpytywać serwer Zabbix co sekundę w celu pobrania zadań zdalnych poleceń (z pustym żądaniem proxy data).

name value type description
proxy→server:
request string 'proxy data'
host string Nazwa proxy.
session string Token sesji danych.
interface availability array (optional) Tablica obiektów danych dostępności interfejsu.
interfaceid number Identyfikator interfejsu.
available number Dostępność interfejsu:

0, INTERFACE_AVAILABLE_UNKNOWN - nieznana
1, INTERFACE_AVAILABLE_TRUE - dostępny
2, INTERFACE_AVAILABLE_FALSE - niedostępny
error string Komunikat błędu interfejsu lub pusty ciąg.
history data array (optional) Tablica obiektów danych historycznych.
itemid number Identyfikator pozycji.
clock number Znacznik czasu wartości pozycji (sekundy).
ns number Znacznik czasu wartości pozycji (nanosekundy).
value string (optional) Wartość pozycji.
id number Identyfikator wartości (licznik rosnący, unikalny w obrębie jednej sesji danych).
timestamp number (optional) Znacznik czasu pozycji typu log.
source string (optional) Wartość source pozycji eventlog.
severity number (optional) Wartość severity pozycji eventlog.
eventid number (optional) Wartość eventid pozycji eventlog.
state string (optional) Stan pozycji:
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize number (optional) Ostatni rozmiar logu dla pozycji typu log.
mtime number (optional) Czas modyfikacji dla pozycji typu log.
discovery data array (optional) Tablica obiektów danych wykrywania.
clock number Znacznik czasu danych wykrywania.
druleid number Identyfikator reguły wykrywania.
dcheckid number Identyfikator kontroli wykrywania lub null dla danych reguły wykrywania.
type number Typ kontroli wykrywania:

-1 dane reguły wykrywania
0, SVC_SSH - kontrola usługi SSH
1, SVC_LDAP - kontrola usługi LDAP
2, SVC_SMTP - kontrola usługi SMTP
3, SVC_FTP - kontrola usługi FTP
4, SVC_HTTP - kontrola usługi HTTP
5, SVC_POP - kontrola usługi POP
6, SVC_NNTP - kontrola usługi NNTP
7, SVC_IMAP - kontrola usługi IMAP
8, SVC_TCP - kontrola dostępności portu TCP
9, SVC_AGENT - agent Zabbix
10, SVC_SNMPv1 - agent SNMPv1
11, SVC_SNMPv2 - agent SNMPv2
12, SVC_ICMPPING - ping ICMP
13, SVC_SNMPv3 - agent SNMPv3
14, SVC_HTTPS - kontrola usługi HTTPS
15, SVC_TELNET - kontrola dostępności Telnet
ip string Adres IP hosta.
dns string Nazwa DNS hosta.
port number (optional) Numer portu usługi.
key_ string (optional) Klucz pozycji dla kontroli wykrywania typu 9 SVC_AGENT
value string (optional) Wartość odebrana z usługi; dla większości usług może być pusta.
status number (optional) Stan usługi:

0, DOBJECT_STATUS_UP - usługa działa
1, DOBJECT_STATUS_DOWN - usługa nie działa
autoregistration array (optional) Tablica obiektów danych autorejestracji.
clock number Znacznik czasu danych autorejestracji.
host string Nazwa hosta.
ip string (optional) Adres IP hosta.
dns string (optional) Rozwiązana nazwa DNS z adresu IP.
port string (optional) Port hosta.
host_metadata string (optional) Metadane hosta wysłane przez agent (na podstawie parametru konfiguracji agenta HostMetadata lub HostMetadataItem).
tasks array (optional) Tablica zadań.
type number Typ zadania:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - wynik zdalnego polecenia
status number Stan wykonania zdalnego polecenia:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED - zdalne polecenie zakończone pomyślnie
1, ZBX_TM_REMOTE_COMMAND_FAILED - zdalne polecenie nie powiodło się
error string (optional) Komunikat błędu.
parent_taskid number ID zadania nadrzędnego.
more number (optional) 1 - jest więcej danych historycznych do wysłania
clock number (optional) Znacznik czasu przesyłania danych (sekundy).
ns number (optional) Znacznik czasu przesyłania danych (nanosekundy).
version string Wersja proxy (<major>.<minor>.<build>).
server→proxy:
response string Informacja o powodzeniu żądania ('success' lub 'failed').
upload string Kontrola wysyłania danych historycznych (historia, autorejestracja, dostępność hosta, wykrywanie sieci).

Możliwe wartości:
enabled - normalne działanie
disabled - serwer nie przyjmuje danych (prawdopodobnie z powodu przekroczenia limitu pamięci podręcznej wewnętrznej)
tasks array (optional) Tablica zadań.
type number Typ zadania:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - zdalne polecenie
clock number Czas utworzenia zadania.
ttl number Czas w sekundach, po którym zadanie wygasa.
commandtype number Typ zdalnego polecenia:

0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - użyj skryptu niestandardowego
1, ZBX_SCRIPT_TYPE_IPMI - użyj IPMI
2, ZBX_SCRIPT_TYPE_SSH - użyj SSH
3, ZBX_SCRIPT_TYPE_TELNET - użyj Telnet
4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - użyj skryptu globalnego (obecnie funkcjonalnie równoważnego skryptowi niestandardowemu)
command string Zdalne polecenie do wykonania.
execute_on number Cel wykonania dla skryptów niestandardowych:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - wykonaj skrypt na agent
1, ZBX_SCRIPT_EXECUTE_ON_SERVER - wykonaj skrypt na serwerze
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - wykonaj skrypt na proxy
port number (optional) Port dla poleceń Telnet i SSH.
authtype number (optional) Typ uwierzytelniania dla poleceń SSH.
username string (optional) Nazwa użytkownika dla poleceń Telnet i SSH.
password string (optional) Hasło dla poleceń Telnet i SSH.
publickey string (optional) Klucz publiczny dla poleceń SSH.
privatekey string (optional) Klucz prywatny dla poleceń SSH.
parent_taskid number ID zadania nadrzędnego.
hostid number ID docelowego hosta.

Przykład:

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
    }]
}