Протокол обмена данными между сервером и прокси

Сервер - обмен данными с прокси основан на формате 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
    }]
}