Протокол обмена данными между сервером и прокси
Сервер - обмен данными с прокси основан на формате JSON.
Сообщения запроса и ответа должны начинаться с заголовка и длины данных.
Пассивный прокси
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"
}
Запрос данных
Запрос 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) Значение источника элемента данных eventlog. | |
| severity | number | (optional) Значение уровня серьезности элемента данных 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 - служба доступна 1, DOBJECT_STATUS_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 | (optional) Временная метка передачи данных (секунды). | |
| ns | number | (optional) Временная метка передачи данных (наносекунды). | |
| server→proxy: | |||
| response | string | Информация об успешности запроса ('success' or '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 | Информация о секретных макросах, отсутствует, если в макросах vault нет изменений (необязательно). | ||||
| 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) Метка времени элементов данных типа log. | |
| source | string | (optional) Значение источника элемента eventlog. | |
| severity | number | (optional) Значение уровня серьезности элемента 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 - служба доступна 1, DOBJECT_STATUS_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 | Управление загрузкой исторических данных (history, autoregistration, host availability, network discovery). Возможные значения: 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
}]
}