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 | Массив удаленных идентификаторов узлов сети (необязательный параметр). | ||||
| - | number | Идентификатор узла сети. | ||||
| del_macro_hostids | array | Массив идентификаторов узлов сети, у которых удалены все макросы (необязательный параметр). | ||||
| - | number | Идентификатор узла сети. | ||||
| proxy→server: | ||||||
| response | string | Информация об успешности запроса («success» или «failed»). | ||||
| version | string | Версия прокси (<major>.<minor>.<build>). | ||||
Пример:
server→proxy:
{
"request":"proxy config"
}
proxy→server:
{
"version": "7.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]
]
},
"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]
]
},
"config": {
"fields": ["configid", "snmptrap_logging", "hk_history_global", "hk_history", "autoreg_tls_accept"],
"data": [
[1, 1, 0, "90d", 1]
]
},
"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.0.0"
}
Запрос данных
Запрос proxy data используется для получения от прокси данных о доступности интерфейсов узлов сети,
а также данных истории, обнаружений и авторегистрации. Этот запрос
отсылается каждые ProxyDataFrequency секунд
(параметр конфигурации сервера).
| имя | тип значения | описание | |
|---|---|---|---|
| сервер→прокси: | |||
| request | строка | «proxy data» | |
| прокси→сервер: | |||
| session | строка | Токен сессии данных. | |
| interface availability | массив | (опционально) Массив объектов данных о доступности интерфейсов. | |
| interfaceid | число | Идентификатор интерфейса. | |
| available | число | Доступность интерфейса: 0, INTERFACE_AVAILABLE_UNKNOWN — неизвестно 1, INTERFACE_AVAILABLE_TRUE — доступен 2, INTERFACE_AVAILABLE_FALSE — недоступен |
|
| error | строка | Сообщение об ошибке интерфейса либо пустая строка. | |
| history data | массив | (опционально) Массив объектов данных истории. | |
| itemid | число | Идентификатор элемента данных. | |
| clock | число | Отметка времени элемента данных (секунды). | |
| ns | число | Отметка времени элемента данных (наносекунды). | |
| value | строка | (опционально) Значение элемента данных. | |
| id | число | Идентификатор значения (возрастающий счётчик, уникальный в пределах одной сессии данных). | |
| timestamp | число | (опционально) Отметка времени (timestamp) элементов данных журнального типа. | |
| source | строка | (опционально) Источник (source) элемента данных журнального типа. | |
| severity | число | (опционально) Важность (severity) элемента данных журнального типа. | |
| eventid | число | (опционально) Идентификатор (eventid) элемента данных журнального типа. | |
| state | строка | (опционально) Состояние элемента данных: 0, ITEM_STATE_NORMAL 1, ITEM_STATE_NOTSUPPORTED |
|
| lastlogsize | число | (опционально) Последний размер файла журнала (lastlogsize) элемента данных журнального типа. | |
| mtime | число | (опционально) Отметка времени последнего обновления (mtime) элемента данных журнального типа. | |
| discovery data | массив | (опционально) Массив объектов данных обнаружения. | |
| clock | число | Отметка времени данных обнаружения. | |
| druleid | число | Идентификатор правила обнаружения. | |
| dcheckid | число | Идентификатор проверки обнаружения или null для данных правила обнаружения. | |
| type | число | Тип проверки обнаружения: -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 13, SVC_SNMPv3 — агент SNMPv3 14, SVC_HTTPS — проверка сервиса HTTPS 15, SVC_TELNET — проверка доступности Telnet |
|
| ip | строка | IP адрес хоста. | |
| dns | строка | DNS имя хоста. | |
| port | число | (опционально) Номер порта сервиса. | |
| key_ | строка | (опционально) Ключ элемента данных для проверок обнаружения с типом 9 SVC_AGENT | |
| value | строка | (опционально) Полученное от сервиса значение, для большинства сервисов может быть пустым. | |
| status | число | (опционально) Статус сервиса: 0, DOBJECT_STATUS_UP — Сервис работает (UP) 1, DOBJECT_STATUS_DOWN — Сервис не работает (DOWN) |
|
| auto registration | массив | (опционально) Массив объектов данных авторегистрации. | |
| clock | число | Отметка времени данных авторегистрации. | |
| host | строка | Имя узла сети. | |
| ip | строка | (опционально) IP адрес узла сети. | |
| dns | строка | (опционально) DNS имя, отрезолвенное из IP адреса. | |
| port | строка | (опционально) Порт узла сети. | |
| host_metadata | строка | (optional) Метаданные узла сети, отосланные агентом (на основе параметров конфигурации агента HostMetadata или HostMetadataItem). | |
| tasks | массив | (опционально) Массив задач. | |
| type | число | Тип задачи: 0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT — результат удалённой команды |
|
| status | число | Статус выполнения удалённой команды: 0, ZBX_TM_REMOTE_COMMAND_COMPLETED — удалённая команда завершилась успешно 1, ZBX_TM_REMOTE_COMMAND_FAILED — удалённая команда завершилась неудачно |
|
| error | строка | (опционально) Сообщение об ошибке. | |
| parent_taskid | число | Идентификатор родительской задачи. | |
| more | число | (опционально) 1 — имеются дополнительные данные истории для отправки. | |
| clock | число | (опционально) Отметка времени обмена данными (секунды). | |
| ns | число | (опционально) Отметка времени обмена данными (наносекунды). | |
| version | строка | Версия прокси (<major>.<minor>.<build>). | |
| сервер→прокси: | |||
| response | строка | Информация об успешности запороса («success» или «failed»). | |
| tasks | массив | (опционально) Массив задач. | |
| type | число | Тип задачи: 1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND — удалённая команда |
|
| clock | число | Время создания задачи. | |
| ttl | число | Время в секундах до истечения срока задачи. | |
| commandtype | число | Тип удалённой задачи: 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 | строка | Команда для удалённого выполнения. | |
| execute_on | число | Целевой объект выполнения для пользовательского скрипта: 0, ZBX_SCRIPT_EXECUTE_ON_AGENT — выполнить скрипт на агенте 1, ZBX_SCRIPT_EXECUTE_ON_SERVER — выполнить скрипт на сервере 2, ZBX_SCRIPT_EXECUTE_ON_PROXY — выполнить скрипт на прокси |
|
| port | число | (опционально) Порт для команд Telnet и SSH. | |
| authtype | число | (опционально) Тип аутентификации для команд SSH. | |
| username | строка | (опционально) Имя пользователя для команд Telnet и SSH. | |
| password | строка | (опционально) Пароль для команд Telnet и SSH . | |
| publickey | строка | (опционально) Открытый ключ (public key) для команд SSH. | |
| privatekey | строка | (опционально) Закрытый ключ (private key) для команд SSH. | |
| parent_taskid | число | Идентификатор родительской задачи. | |
| hostid | число | Идентификатор целевого узла сети. | |
Пример:
сервер→прокси:
{
"request": "proxy data"
}
прокси→сервер:
{
"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":"5.4.0"
}
сервер→прокси:
{
"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, и может добавить новые задачи для выполнения прокси-сервером.
| имя | тип значения | описание | |
|---|---|---|---|
| server→proxy: | |||
| request | строка | 'proxy tasks' | |
| proxy→server: | |||
| version | строка | Версия прокси-сервера (<major>.<minor>.<build>). | |
| clock | число | (опционально) Отметка времени обмена данными (секунды). | |
| ns | число | (опционально) Отметка времени обмена данными (наносекунды). | |
| server→proxy: | |||
| response | строка | Информация об успешности запороса («success» или «failed»). | |
Пример:
server→proxy:
{
"request":"proxy tasks"
}
прокси→сервер:
{
"version":"7.0.0",
"clock":1721059872,
"ns":848141522
}
сервер→прокси:
{
"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 | Массив удаленных идентификаторов узлов сети (необязательно). | ||||
| - | number | Идентификатор узла сети. | ||||
| del_macro_hostids | array | Массив идентификаторов узлов сети, у которых удалены все макросы (необязательно). | ||||
| - | number | Идентификатор узла сети. | ||||
Пример:
proxy→server:
{
"request": "proxy config",
"host": "Zabbix proxy",
"version":"7.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]
]
},
"config": {
"fields": ["configid", "snmptrap_logging", "hk_history_global", "hk_history", "autoreg_tls_accept"],
"data": [
[1, 1, 0, "90d", 1]
]
},
"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).
| имя | тип значения | описание | |
|---|---|---|---|
| прокси→сервер: | |||
| request | строка | «proxy data» | |
| host | строка | Имя прокси сервера. | |
| session | строка | Токен сессии данных. | |
| interface availability | массив | (опционально) Массив объектов данных о доступности интерфейсов. | |
| interfaceid | число | Идентификатор интерфейса. | |
| available | число | Доступность интерфейса: 0, INTERFACE_AVAILABLE_UNKNOWN — неизвестно 1, INTERFACE_AVAILABLE_TRUE — доступен 2, INTERFACE_AVAILABLE_FALSE — недоступен |
|
| error | строка | Сообщение об ошибке интерфейса либо пустая строка. | |
| history data | массив | (опционально) Массив объектов данных истории. | |
| itemid | число | Идентификатор элемента данных. | |
| clock | число | Отметка времени элемента данных (секунды). | |
| ns | число | Отметка времени элемента данных (наносекунды). | |
| value | строка | (опционально) Значение элемента данных. | |
| id | число | Идентификатор значения (возрастающий счётчик, уникальный в пределах одной сессии данных). | |
| timestamp | число | (опционально) Отметка времени (timestamp) элементов данных журнального типа. | |
| source | строка | (опционально) Источник (source) элемента данных журнального типа. | |
| severity | число | (опционально) Важность (severity) элемента данных журнального типа. | |
| eventid | число | (опционально) Идентификатор (eventid) элемента данных журнального типа. | |
| state | строка | (опционально) Состояние элемента данных: 0, ITEM_STATE_NORMAL 1, ITEM_STATE_NOTSUPPORTED |
|
| lastlogsize | число | (опционально) Последний размер файла журнала (lastlogsize) элемента данных журнального типа. | |
| mtime | число | (опционально) Отметка времени последнего обновления (mtime) элемента данных журнального типа. | |
| discovery data | массив | (опционально) Массив объектов данных обнаружения. | |
| clock | число | Отметка времени данных обнаружения. | |
| druleid | число | Идентификатор правила обнаружения. | |
| dcheckid | число | Идентификатор проверки обнаружения или null для данных правила обнаружения. | |
| type | число | Тип проверки обнаружения: -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 13, SVC_SNMPv3 — агент SNMPv3 14, SVC_HTTPS — проверка сервиса HTTPS 15, SVC_TELNET — проверка доступности Telnet |
|
| ip | строка | IP адрес хоста. | |
| dns | строка | DNS имя хоста. | |
| port | число | (опционально) Номер порта сервиса. | |
| key_ | строка | (опционально) Ключ элемента данных для проверок обнаружения с типом 9 SVC_AGENT | |
| value | строка | (опционально) Полученное от сервиса значение, для большинства сервисов может быть пустым. | |
| status | число | (опционально) Статус сервиса: 0, DOBJECT_STATUS_UP — Сервис работает (UP) 1, DOBJECT_STATUS_DOWN — Сервис не работает (DOWN) |
|
| autoregistration | массив | (опционально) Массив объектов данных авторегистрации. | |
| clock | число | Отметка времени данных авторегистрации. | |
| host | строка | Имя узла сети. | |
| ip | строка | (опционально) IP адрес узла сети. | |
| dns | строка | (опционально) DNS имя, отрезолвенное из IP адреса. | |
| port | строка | (опционально) Порт узла сети. | |
| host_metadata | строка | (опционально) Метаданные узла сети, отосланные агентом (на основе параметров конфигурации агента HostMetadata или HostMetadataItem). | |
| tasks | массив | (опционально) Массив задач. | |
| type | число | Тип задачи: 0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT — результат удалённой команды |
|
| status | число | Статус выполнения удалённой команды: 0, ZBX_TM_REMOTE_COMMAND_COMPLETED — удалённая команда завершилась успешно 1, ZBX_TM_REMOTE_COMMAND_FAILED — удалённая команда завершилась неудачно |
|
| error | строка | (опционально) Сообщение об ошибке. | |
| parent_taskid | число | Идентификатор родительской задачи. | |
| more | число | (опционально) 1 — имеются дополнительные данные истории для отправки. | |
| clock | число | (опционально) Отметка времени обмена данными (секунды). | |
| ns | число | (опционально) Отметка времени обмена данными (наносекунды). | |
| version | строка | Версия прокси сервера (<major>.<minor>.<build>). | |
| сервер→прокси: | |||
| response | строка | Информация об успешности запороса («success» или «failed»). | |
| upload | строка | Управление загрузкой для исторических данных (история, авторегистрация, доступность узлов сети, сетевое обнаружение). Возможные значения: enabled — нормальная работа disabled — сервер не принимает данные (возможно, из-за превышения ограничения внутреннего кэша) |
|
| tasks | массив | (опционально) Массив задач. | |
| type | число | Тип задачи: 1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND — удалённая команда |
|
| clock | число | Время создания задачи. | |
| ttl | число | Время в секундах до истечения срока задачи. | |
| commandtype | число | Тип удалённой задачи: 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 | строка | Команда для удалённого выполнения. | |
| execute_on | число | Целевой объект выполнения для пользовательского скрипта: 0, ZBX_SCRIPT_EXECUTE_ON_AGENT — выполнить скрипт на агенте 1, ZBX_SCRIPT_EXECUTE_ON_SERVER — выполнить скрипт на сервере 2, ZBX_SCRIPT_EXECUTE_ON_PROXY — выполнить скрипт на прокси |
|
| port | число | (опционально) Порт для команд Telnet и SSH. | |
| authtype | число | (опционально) Тип аутентификации для команд SSH. | |
| username | строка | (опционально) Имя пользователя для команд Telnet и SSH. | |
| password | строка | (опционально) Пароль для команд Telnet и SSH. | |
| publickey | строка | (опционально) Открытый ключ (public key) для команд SSH. | |
| privatekey | строка | (опционально) Закрытый ключ (private key) для команд SSH. | |
| parent_taskid | число | Идентификатор родительской задачи. | |
| hostid | число | Идентификатор целевого узла сети. | |
Пример:
прокси→сервер:
{
"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.0.0",
"clock": 1665730643,
"ns": 65389964
}
сервер→прокси:
{
"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
}]
}