1 Протокол обмена данными между сервером и прокси
Обзор
Обмен данными сервер - прокси основан на формате JSON.
Сообщения запроса и ответа должны начинаться с заголовка и длины данных.
Пассивный прокси
Запрос конфигурации
Сервер сначала отправляет пустой запрос proxy config. Этот запрос отправляется каждые ProxyConfigFrequency
секунд (параметр конфигурации сервера).
Прокси отвечает текущей версией прокси, токеном сессии и ревизией конфигурации. Сервер отвечает данными конфигурации, которые необходимо обновить.
| name | value type | description | ||||
|---|---|---|---|---|---|---|
| server→proxy: | ||||||
| request | string | 'proxy config' | ||||
| proxy→server: | ||||||
| version | string | Версия прокси (<major>.<minor>.<build>). | ||||
| session | string | Токен сессии конфигурации прокси. | ||||
| config_revision | number | Ревизия конфигурации прокси. | ||||
| server→proxy: | ||||||
| full_sync | number | 1 — если отправлены полные данные конфигурации; отсутствует — в противном случае (необязательно). | ||||
| data | array | Объект с данными таблиц. Отсутствует, если конфигурация не изменялась (необязательно). | ||||
| <table> | object | Один или несколько объектов с данными <table> (необязательно, в зависимости от изменений). | ||||
| fields | array | Массив имен полей. | ||||
| - | string | Имя поля. | ||||
| data | array | Массив строк. | ||||
| - | array | Массив столбцов. | ||||
| - | string,number | Значение столбца, тип зависит от типа столбца в схеме базы данных. | ||||
| macro.secrets | object | Информация о секретных макросах; отсутствует, если в макросах хранилища секретов нет изменений (необязательно). | ||||
| config_revision | number | Ревизия кэша конфигурации — отправляется вместе с данными конфигурации (необязательно). | ||||
| del_hostids | array | Массив удалённых hostid (необязательно). | ||||
| - | number | Идентификатор узла сети. | ||||
| del_macro_hostids | array | Массив hostid, для которых удалены все макросы (необязательно). | ||||
| - | number | Идентификатор узла сети. | ||||
| proxy→server: | ||||||
| response | string | Информация об успешности запроса ('success' или 'failed'). | ||||
| version | string | Версия прокси (<major>.<minor>.<build>). | ||||
Пример:
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"
}
Запрос данных
Запрос proxy data используется для получения от прокси данных о доступности интерфейсов узла сети, исторических данных, данных обнаружения и авторегистрации. Этот запрос отправляется каждые ProxyDataFrequency секунд (параметр конфигурации сервера).
| name | value type | description | |
|---|---|---|---|
| server→proxy: | |||
| request | string | 'proxy data' | |
| proxy→server: | |||
| session | string | Токен сеанса данных. | |
| interface availability | array | (optional) Массив объектов данных о доступности интерфейсов. | |
| interfaceid | number | Идентификатор интерфейса. | |
| available | number | Доступность интерфейса: 0, INTERFACE_AVAILABLE_UNKNOWN - неизвестно 1, INTERFACE_AVAILABLE_TRUE - доступен 2, INTERFACE_AVAILABLE_FALSE - недоступен |
|
| error | string | Сообщение об ошибке интерфейса или пустая строка. | |
| history data | array | (optional) Массив объектов исторических данных. | |
| itemid | number | Идентификатор элемента данных. | |
| clock | number | Метка времени значения элемента данных (секунды). | |
| ns | number | Метка времени значения элемента данных (наносекунды). | |
| value | string | (optional) Значение элемента данных. | |
| id | number | Идентификатор значения (возрастающий счётчик, уникальный в пределах одного сеанса данных). | |
| timestamp | number | (optional) Метка времени элементов данных типа log. | |
| source | string | (optional) Значение source элемента данных eventlog. | |
| severity | number | (optional) Значение severity элемента данных eventlog. | |
| eventid | number | (optional) Значение eventid элемента данных eventlog. | |
| state | string | (optional) Состояние элемента данных: 0, ITEM_STATE_NORMAL 1, ITEM_STATE_NOTSUPPORTED |
|
| lastlogsize | number | (optional) Последний размер журнала для элементов данных типа log. | |
| mtime | number | (optional) Время изменения для элементов данных типа log. | |
| discovery data | array | (optional) Массив объектов данных обнаружения. | |
| clock | number | Метка времени данных обнаружения. | |
| druleid | number | Идентификатор правила обнаружения. | |
| dcheckid | number | Идентификатор проверки обнаружения или null для данных правила обнаружения. | |
| type | number | Тип проверки обнаружения: -1 данные правила обнаружения 0, SVC_SSH - проверка сервиса SSH 1, SVC_LDAP - проверка сервиса LDAP 2, SVC_SMTP - проверка сервиса SMTP 3, SVC_FTP - проверка сервиса FTP 4, SVC_HTTP - проверка сервиса HTTP 5, SVC_POP - проверка сервиса POP 6, SVC_NNTP - проверка сервиса NNTP 7, SVC_IMAP - проверка сервиса IMAP 8, SVC_TCP - проверка доступности TCP-порта 9, SVC_AGENT - агент Zabbix 10, SVC_SNMPv1 - агент SNMPv1 11, SVC_SNMPv2 - агент SNMPv2 12, SVC_ICMPPING - ICMP ping 13, SVC_SNMPv3 - агент SNMPv3 14, SVC_HTTPS - проверка сервиса HTTPS 15, SVC_TELNET - проверка доступности Telnet |
|
| ip | string | IP-адрес узла сети. | |
| dns | string | DNS-имя узла сети. | |
| port | number | (optional) Номер порта сервиса. | |
| key_ | string | (optional) Ключ элемента данных для проверки обнаружения типа 9 SVC_AGENT | |
| value | string | (optional) Значение, полученное от сервиса; для большинства сервисов может быть пустым. | |
| status | number | (optional) Состояние сервиса: 0, DOBJECT_STATUS_UP - Сервис UP 1, DOBJECT_STATUS_DOWN - Сервис DOWN |
|
| auto registration | array | (optional) Массив объектов данных авторегистрации. | |
| clock | number | Метка времени данных авторегистрации. | |
| host | string | Имя узла сети. | |
| ip | string | (optional) IP-адрес узла сети. | |
| dns | string | (optional) DNS-имя, разрешённое из IP-адреса. | |
| port | string | (optional) Порт узла сети. | |
| host_metadata | string | (optional) Метаданные узла сети, отправленные агентом (на основе параметра конфигурации агента HostMetadata или HostMetadataItem). | |
| tasks | array | (optional) Массив задач. | |
| type | number | Тип задачи: 0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - результат удалённой команды |
|
| status | number | Состояние выполнения удалённой команды: 0, ZBX_TM_REMOTE_COMMAND_COMPLETED - удалённая команда успешно выполнена 1, ZBX_TM_REMOTE_COMMAND_FAILED - ошибка выполнения удалённой команды |
|
| error | string | (optional) Сообщение об ошибке. | |
| parent_taskid | number | ID родительской задачи. | |
| more | number | (optional) 1 - есть дополнительные исторические данные для отправки. | |
| clock | number | (optional) Метка времени передачи данных (секунды). | |
| ns | number | (optional) Метка времени передачи данных (наносекунды). | |
| version | string | Версия прокси (<major>.<minor>.<build>). | |
| server→proxy: | |||
| response | string | Информация об успешности запроса ('success' или 'failed'). | |
| tasks | array | (optional) Массив задач. | |
| type | number | Тип задачи: 1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - удалённая команда |
|
| clock | number | Время создания задачи. | |
| ttl | number | Время в секундах, по истечении которого задача становится недействительной. | |
| commandtype | number | Тип удалённой команды: 0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - использовать пользовательский скрипт 1, ZBX_SCRIPT_TYPE_IPMI - использовать IPMI 2, ZBX_SCRIPT_TYPE_SSH - использовать SSH 3, ZBX_SCRIPT_TYPE_TELNET - использовать Telnet 4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - использовать глобальный скрипт (в настоящее время функционально эквивалентен пользовательскому скрипту) |
|
| command | string | Удалённая команда для выполнения. | |
| execute_on | number | Цель выполнения для пользовательских скриптов: 0, ZBX_SCRIPT_EXECUTE_ON_AGENT - выполнить скрипт на агенте 1, ZBX_SCRIPT_EXECUTE_ON_SERVER - выполнить скрипт на сервере 2, ZBX_SCRIPT_EXECUTE_ON_PROXY - выполнить скрипт на прокси |
|
| port | number | (optional) Порт для команд Telnet и SSH. | |
| authtype | number | (optional) Тип аутентификации для команд SSH. | |
| username | string | (optional) Имя пользователя для команд Telnet и SSH. | |
| password | string | (optional) Пароль для команд Telnet и SSH. | |
| publickey | string | (optional) Открытый ключ для команд SSH. | |
| privatekey | string | (optional) Закрытый ключ для команд SSH. | |
| parent_taskid | number | ID родительской задачи. | |
| hostid | number | ID целевого узла сети. | |
Пример:
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
}
]
}
Запрос задач
Обмен proxy tasks обеспечивает доставку и подтверждение задач удалённых команд между сервером и пассивным прокси. Когда сервер опрашивает прокси на предмет результатов задач, он отправляет пустой запрос proxy tasks с интервалом, заданным параметром ProxyDataFrequency. Прокси отвечает своей текущей версией и всеми ожидающими результатами задач (включая временные метки). Затем сервер подтверждает получение, возвращая response, и может включить новые задачи для выполнения прокси.
| name | value type | description | |
|---|---|---|---|
| server→proxy: | |||
| request | string | 'proxy tasks' | |
| proxy→server: | |||
| version | string | Версия прокси (<major>.<minor>.<build>). | |
| clock | number | (необязательно) Временная метка передачи данных (секунды). | |
| ns | number | (необязательно) Временная метка передачи данных (наносекунды). | |
| server→proxy: | |||
| response | string | Информация об успешности запроса ('success' или 'failed'). | |
Пример:
server→proxy:
{
"request":"proxy tasks"
}
proxy→server:
{
"version":"7.0.0",
"clock":1721059872,
"ns":848141522
}
server→proxy:
{
"response":"success"
}
Активный прокси
Запрос конфигурации
Запрос proxy config отправляется активным прокси для получения данных
конфигурации прокси. Этот запрос отправляется каждые ProxyConfigFrequency (параметр
конфигурации прокси) секунд.
| name | value type | description | ||||
|---|---|---|---|---|---|---|
| proxy→server: | ||||||
| request | string | 'proxy config' | ||||
| host | string |
Имя прокси. | ||||
| version | string | Версия прокси (<major>.<minor>.<build>). | ||||
| session | string | Токен сеанса конфигурации прокси. | ||||
| config_revision | number | Ревизия конфигурации прокси. | ||||
| hostmap_revision | number | Текущая ревизия сопоставления узлов сети с прокси. | ||||
| server→proxy: | ||||||
| full_sync | number | 1 — если отправляются полные данные конфигурации, в противном случае отсутствует (необязательно). | ||||
| data | array | Объект табличных данных. Отсутствует, если конфигурация не изменялась (необязательно). | ||||
| <table> | object | Один или несколько объектов с данными <table> (необязательно, в зависимости от изменений). | ||||
| fields | array | Массив имен полей. | ||||
| - | string | Имя поля. | ||||
| data | array | Массив строк. | ||||
| - | array | Массив столбцов. | ||||
| - | string,number | Значение столбца, тип которого зависит от типа столбца в схеме базы данных. | ||||
| macro.secrets | object | Информация о секретных макросах; отсутствует, если в макросах хранилища секретов нет изменений (необязательно). | ||||
| proxy_group | string | Имя группы прокси, к которой принадлежит прокси. | ||||
| config_revision | number | Ревизия кэша конфигурации — отправляется вместе с данными конфигурации (необязательно). | ||||
| del_hostids | array | Массив удаленных hostid (необязательно). | ||||
| - | number | Идентификатор узла сети. | ||||
| del_macro_hostids | array | Массив hostid, у которых удалены все макросы (необязательно). | ||||
| - | number | Идентификатор узла сети. | ||||
Пример:
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
}
Запрос данных
Запрос proxy data отправляется прокси для передачи данных о доступности интерфейсов узла сети, истории, обнаружении и авторегистрации.
Этот запрос отправляется каждые DataSenderFrequency секунд (параметр конфигурации прокси).
Обратите внимание, что активный прокси по-прежнему будет опрашивать сервер Zabbix каждую секунду на предмет задач удалённых команд (с пустым запросом proxy data).
| name | value type | description | |
|---|---|---|---|
| proxy→server: | |||
| request | string | 'proxy data' | |
| host | string | Имя прокси. | |
| session | string | Токен сеанса данных. | |
| interface availability | array | (optional) Массив объектов данных о доступности интерфейсов. | |
| interfaceid | number | Идентификатор интерфейса. | |
| available | number | Доступность интерфейса: 0, INTERFACE_AVAILABLE_UNKNOWN - неизвестно 1, INTERFACE_AVAILABLE_TRUE - доступен 2, INTERFACE_AVAILABLE_FALSE - недоступен |
|
| error | string | Сообщение об ошибке интерфейса или пустая строка. | |
| history data | array | (optional) Массив объектов данных истории. | |
| itemid | number | Идентификатор элемента данных. | |
| clock | number | Метка времени значения элемента данных (секунды). | |
| ns | number | Метка времени значения элемента данных (наносекунды). | |
| value | string | (optional) Значение элемента данных. | |
| id | number | Идентификатор значения (возрастающий счётчик, уникальный в пределах одного сеанса данных). | |
| timestamp | number | (optional) Метка времени элементов данных типа журнал. | |
| source | string | (optional) Значение source элемента данных eventlog. | |
| severity | number | (optional) Значение severity элемента данных eventlog. | |
| eventid | number | (optional) Значение eventid элемента данных eventlog. | |
| state | string | (optional) Состояние элемента данных: 0, ITEM_STATE_NORMAL 1, ITEM_STATE_NOTSUPPORTED |
|
| lastlogsize | number | (optional) Последний размер журнала для элементов данных типа журнал. | |
| mtime | number | (optional) Время изменения для элементов данных типа журнал. | |
| discovery data | array | (optional) Массив объектов данных обнаружения. | |
| clock | number | Метка времени данных обнаружения. | |
| druleid | number | Идентификатор правила обнаружения. | |
| dcheckid | number | Идентификатор проверки обнаружения или null для данных правила обнаружения. | |
| type | number | Тип проверки обнаружения: -1 данные правила обнаружения 0, SVC_SSH - проверка сервиса SSH 1, SVC_LDAP - проверка сервиса LDAP 2, SVC_SMTP - проверка сервиса SMTP 3, SVC_FTP - проверка сервиса FTP 4, SVC_HTTP - проверка сервиса HTTP 5, SVC_POP - проверка сервиса POP 6, SVC_NNTP - проверка сервиса NNTP 7, SVC_IMAP - проверка сервиса IMAP 8, SVC_TCP - проверка доступности TCP-порта 9, SVC_AGENT - агент Zabbix 10, SVC_SNMPv1 - агент SNMPv1 11, SVC_SNMPv2 - агент SNMPv2 12, SVC_ICMPPING - ICMP ping 13, SVC_SNMPv3 - агент SNMPv3 14, SVC_HTTPS - проверка сервиса HTTPS 15, SVC_TELNET - проверка доступности Telnet |
|
| ip | string | IP-адрес узла сети. | |
| dns | string | DNS-имя узла сети. | |
| port | number | (optional) Номер порта сервиса. | |
| key_ | string | (optional) Ключ элемента данных для проверки обнаружения типа 9 SVC_AGENT | |
| value | string | (optional) Значение, полученное от сервиса; для большинства сервисов может быть пустым. | |
| status | number | (optional) Состояние сервиса: 0, DOBJECT_STATUS_UP - сервис UP 1, DOBJECT_STATUS_DOWN - сервис DOWN |
|
| autoregistration | array | (optional) Массив объектов данных авторегистрации. | |
| clock | number | Метка времени данных авторегистрации. | |
| host | string | Имя узла сети. | |
| ip | string | (optional) IP-адрес узла сети. | |
| dns | string | (optional) DNS-имя, разрешённое из IP-адреса. | |
| port | string | (optional) Порт узла сети. | |
| host_metadata | string | (optional) Метаданные узла сети, отправленные агентом (на основе параметра конфигурации агента HostMetadata или HostMetadataItem). | |
| tasks | array | (optional) Массив задач. | |
| type | number | Тип задачи: 0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - результат удалённой команды |
|
| status | number | Состояние выполнения удалённой команды: 0, ZBX_TM_REMOTE_COMMAND_COMPLETED - удалённая команда успешно выполнена 1, ZBX_TM_REMOTE_COMMAND_FAILED - ошибка выполнения удалённой команды |
|
| error | string | (optional) Сообщение об ошибке. | |
| parent_taskid | number | ID родительской задачи. | |
| more | number | (optional) 1 - есть дополнительные данные истории для отправки | |
| clock | number | (optional) Метка времени передачи данных (секунды). | |
| ns | number | (optional) Метка времени передачи данных (наносекунды). | |
| version | string | Версия прокси (<major>.<minor>.<build>). | |
| server→proxy: | |||
| response | string | Информация об успешности запроса ('success' или 'failed'). | |
| upload | string | Управление загрузкой исторических данных (история, авторегистрация, доступность узла сети, сетевое обнаружение). Возможные значения: enabled - нормальная работа disabled - сервер не принимает данные (возможно, из-за превышения лимита внутреннего кэша) |
|
| tasks | array | (optional) Массив задач. | |
| type | number | Тип задачи: 1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - удалённая команда |
|
| clock | number | Время создания задачи. | |
| ttl | number | Время в секундах, по истечении которого задача становится недействительной. | |
| commandtype | number | Тип удалённой команды: 0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - использовать пользовательский скрипт 1, ZBX_SCRIPT_TYPE_IPMI - использовать IPMI 2, ZBX_SCRIPT_TYPE_SSH - использовать SSH 3, ZBX_SCRIPT_TYPE_TELNET - использовать Telnet 4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - использовать глобальный скрипт (в настоящее время функционально эквивалентен пользовательскому скрипту) |
|
| command | string | Удалённая команда для выполнения. | |
| execute_on | number | Цель выполнения для пользовательских скриптов: 0, ZBX_SCRIPT_EXECUTE_ON_AGENT - выполнить скрипт на агенте 1, ZBX_SCRIPT_EXECUTE_ON_SERVER - выполнить скрипт на сервере 2, ZBX_SCRIPT_EXECUTE_ON_PROXY - выполнить скрипт на прокси |
|
| port | number | (optional) Порт для команд Telnet и SSH. | |
| authtype | number | (optional) Тип аутентификации для команд SSH. | |
| username | string | (optional) Имя пользователя для команд Telnet и SSH. | |
| password | string | (optional) Пароль для команд Telnet и SSH. | |
| publickey | string | (optional) Открытый ключ для команд SSH. | |
| privatekey | string | (optional) Закрытый ключ для команд SSH. | |
| parent_taskid | number | ID родительской задачи. | |
| hostid | number | ID целевого узла сети. | |
Пример:
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
}]
}