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
    }]
}