Protokół wymiany danych serwer-proxy
Serwer - wymiana danych z proxy opiera się na formacie JSON.
Wiadomości żądania i odpowiedzi muszą zaczynać się od nagłówka i długości danych.
Proxy pasywny
Configuration request
The server will first send an empty proxy config request.
This request is sent every ProxyConfigFrequency (server configuration parameter) seconds.
The proxy responds with the current proxy version, session token and configuration revision. The server responds with the configuration data that need to be updated.
| name | value type | description | ||||
|---|---|---|---|---|---|---|
| server→proxy: | ||||||
| request | string | 'proxy config' | ||||
| proxy→server: | ||||||
| version | string | Proxy version (<major>.<minor>.<build>). | ||||
| session | string | Proxy configuration session token. | ||||
| config_revision | number | Proxy configuration revision. | ||||
| server→proxy: | ||||||
| full_sync | number | 1 - if full configuration data is sent; absent otherwise (optional). | ||||
| data | array | Object of table data. Absent if configuration has not been changed (optional). | ||||
| <table> | object | One or more objects with <table> data (optional, depending on changes). | ||||
| fields | array | Array of field names. | ||||
| - | string | Field name. | ||||
| data | array | Array of rows. | ||||
| - | array | Array of columns. | ||||
| - | string,number | Column value with type depending on column type in database schema. | ||||
| macro.secrets | object | Secret macro information, absent if there are no changes in vault macros (optional). | ||||
| config_revision | number | Configuration cache revision - sent with configuration data (optional). | ||||
| del_hostids | array | Array of removed hostids (optional). | ||||
| - | number | Host identifier. | ||||
| del_macro_hostids | array | Array of hostids with all macros removed (optional). | ||||
| - | number | Host identifier. | ||||
| proxy→server: | ||||||
| response | string | Request success information ('success' or 'failed'). | ||||
| version | string | Proxy version (<major>.<minor>.<build>). | ||||
Example:
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 proxy
Żądanie proxy data służy do pobierania dostępności interfejsów hosta,
danych historycznych, wykrywania oraz 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 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 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 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ść 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 |
|
| 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 | Stan 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 | Identyfikator nadrzędnego zadania. | |
| 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 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 | (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 | Identyfikator nadrzędnego zadania. | |
| hostid | number | Identyfikator hosta docelowego. | |
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ń poleceń zdalnych 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 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 | |
|---|---|---|---|
| server→proxy: | |||
| request | string | 'proxy tasks' | |
| proxy→server: | |||
| version | string | Wersja proxy (<major>.<minor>.<build>). | |
| clock | number | (opcjonalnie) Znacznik czasu przesyłania danych (sekundy). | |
| ns | number | (opcjonalnie) Znacznik czasu przesyłania danych (nanosekundy). | |
| server→proxy: | |||
| response | string | Informacja o powodzeniu żądania ('success' lub 'failed'). | |
Przykład:
server→proxy:
{
"request":"proxy tasks"
}
proxy→server:
{
"version":"7.0.0",
"clock":1721059872,
"ns":848141522
}
server→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 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. | ||||
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 proxy
Żądanie proxy data jest wysyłane przez proxy w celu przekazania danych o dostępności interfejsów hosta, historii, wykrywania 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ę 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ść 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 |
|
| 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 | Stan 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 | ID zadania nadrzędnego. | |
| 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 przesył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 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 | (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 hosta docelowego. | |
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
}]
}