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 (sekunda parametru konfiguracji serwera).

Proxy odpowiada bieżącą wersją proxy, tokenem sesji i rewizją konfiguracji. Serwer odpowiada danymi konfiguracji, 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 pamięci podręcznej konfiguracji proxy.
server→proxy:
full_sync number 1 - jeśli wysyłane są pełne dane konfiguracji; 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 konfiguracji (opcjonalne).
del_hostids array Tablica usuniętych hostidów (opcjonalne).
- number Identyfikator hosta.
del_macro_hostids array Tablica hostidów, z 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": "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"
}
Żądanie danych proxy

Żądanie proxy data służy do pobierania dostępności interfejsów hosta, danych historycznych, danych wykrywania oraz danych autorejestracji z proxy. 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 (optional) Tablica obiektów 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 znaków.
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 (rosnący licznik, unikalny w ramach jednej sesji danych).
timestamp number (optional) Znacznik czasu dla pozycji typu log.
source string (optional) Wartość źródła pozycji eventlog.
severity number (optional) Wartość ważności 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 sprawdzenia wykrywania lub null dla danych reguły wykrywania.
type number Typ sprawdzenia wykrywania:

-1 dane reguły wykrywania
0, SVC_SSH - sprawdzenie usługi SSH
1, SVC_LDAP - sprawdzenie usługi LDAP
2, SVC_SMTP - sprawdzenie usługi SMTP
3, SVC_FTP - sprawdzenie usługi FTP
4, SVC_HTTP - sprawdzenie usługi HTTP
5, SVC_POP - sprawdzenie usługi POP
6, SVC_NNTP - sprawdzenie usługi NNTP
7, SVC_IMAP - sprawdzenie usługi IMAP
8, SVC_TCP - sprawdzenie dostępności portu TCP
9, SVC_AGENT - agent Zabbixa
10, SVC_SNMPv1 - agent SNMPv1
11, SVC_SNMPv2 - agent SNMPv2
12, SVC_ICMPPING - ping ICMP
13, SVC_SNMPv3 - agent SNMPv3
14, SVC_HTTPS - sprawdzenie usługi HTTPS
15, SVC_TELNET - sprawdzenie 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 sprawdzenia wykrywania typu 9 SVC_AGENT
value string (optional) Wartość otrzymana z usługi, dla większości usług może być pusta.
status number (optional) Status usługi:

0, DOBJECT_STATUS_UP - usługa UP
1, DOBJECT_STATUS_DOWN - usługa DOWN
auto registration 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 Status wykonania zdalnego polecenia:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED - zdalne polecenie wykonane 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 - do wysłania pozostały kolejne dane historyczne.
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').
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 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 globalnego skryptu (obecnie funkcjonalnie równoważny niestandardowemu skryptowi)
command string Zdalne polecenie do wykonania.
execute_on number Cel wykonania dla niestandardowych skryptów:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - wykonaj skrypt na agent
1, ZBX_SCRIPT_EXECUTE_ON_SERVER - wykonaj skrypt na serwer
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:

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
      }
  ]
}
Żą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 konfiguracji proxy. To żądanie jest wysyłane co ProxyConfigFrequency (parametr konfiguracji 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 Rewizja konfiguracji proxy.
hostmap_revision number Bieżąca rewizja mapowania hostów do proxy.
server→proxy:
full_sync number 1 - jeśli wysyłane są pełne dane konfiguracji, 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).
proxy_group string Nazwa grupy proxy, do której należy proxy.
config_revision number Rewizja pamięci podręcznej konfiguracji - wysyłana z danymi konfiguracji (opcjonalne).
del_hostids array Tablica usuniętych hostidów (opcjonalne).
- number Identyfikator hosta.
del_macro_hostids array Tablica hostidów, z których usunięto wszystkie makra (opcjonalne).
- number Identyfikator hosta.

Przykład:

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, "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 proxy

Żądanie proxy data jest wysyłane przez proxy w celu przekazania danych o dostępności interfejsów hosta, historii, wykrywania oraz autorejestracji. To żądanie jest wysyłane co DataSenderFrequency sekund (parametr konfiguracji proxy). Należy pamiętać, że aktywne proxy nadal będzie odpytywać serwer Zabbix co sekundę o zadania 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 (opcjonalnie) Tablica obiektów danych o 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 znaków.
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 (rosnący licznik, unikalny w ramach jednej sesji danych).
timestamp number (opcjonalnie) Znacznik czasu dla 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 sprawdzenia wykrywania lub null dla danych reguły wykrywania.
type number Typ sprawdzenia wykrywania:

-1 dane reguły wykrywania
0, SVC_SSH - sprawdzenie usługi SSH
1, SVC_LDAP - sprawdzenie usługi LDAP
2, SVC_SMTP - sprawdzenie usługi SMTP
3, SVC_FTP - sprawdzenie usługi FTP
4, SVC_HTTP - sprawdzenie usługi HTTP
5, SVC_POP - sprawdzenie usługi POP
6, SVC_NNTP - sprawdzenie usługi NNTP
7, SVC_IMAP - sprawdzenie usługi IMAP
8, SVC_TCP - sprawdzenie 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 - sprawdzenie usługi HTTPS
15, SVC_TELNET - sprawdzenie 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 sprawdzenia wykrywania typu 9 SVC_AGENT
value string (opcjonalnie) Wartość otrzymana z usługi, dla większości usług może być pusta.
status number (opcjonalnie) Status usługi:

0, DOBJECT_STATUS_UP - usługa działa
1, DOBJECT_STATUS_DOWN - usługa nie działa
autoregistration 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 wysyłane przez agent (na podstawie parametru konfiguracji agenta 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 Status wykonania zdalnego polecenia:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED - zdalne polecenie wykonane pomyślnie
1, ZBX_TM_REMOTE_COMMAND_FAILED - zdalne polecenie nie powiodło się
error string (opcjonalnie) Komunikat błędu.
parent_taskid number Identyfikator nadrzędnego zadania.
more number (opcjonalnie) 1 - do wysłania pozostały kolejne dane historyczne
clock number (opcjonalnie) Znacznik czasu przesyłania danych (sekundy).
ns number (opcjonalnie) 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 (możliwe, że z powodu przekroczenia wewnętrznej pamięci podręcznej)
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 własnego 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żny własnemu skryptowi)
command string Zdalne polecenie do wykonania.
execute_on number Cel wykonania dla własnych skryptów:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - wykonaj skrypt na agent
1, ZBX_SCRIPT_EXECUTE_ON_SERVER - wykonaj skrypt na serwer
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 Identyfikator nadrzędnego zadania.
hostid number Identyfikator 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": "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
    }]
}