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

Обзор

Обмен данными сервер - прокси основан на формате JSON.

Сообщения запроса и ответа должны начинаться с заголовка и длины данных.

Пассивный прокси

Запрос конфигурации

Сервер сначала отправляет пустой запрос proxy config. Этот запрос отправляется каждые ProxyConfigFrequency секунд (параметр конфигурации сервера).

Прокси отвечает текущей версией прокси, токеном сессии и ревизией конфигурации. Сервер отвечает данными конфигурации, которые необходимо обновить.

name value type description
server→proxy:
request string 'proxy config'
proxy→server:
version string Версия прокси (<major>.<minor>.<build>).
session string Токен сессии конфигурации прокси.
config_revision number Ревизия конфигурации прокси.
server→proxy:
full_sync number 1 — если отправлены полные данные конфигурации; отсутствует — в противном случае (необязательно).
data array Объект с данными таблиц. Отсутствует, если конфигурация не изменялась (необязательно).
<table> object Один или несколько объектов с данными <table> (необязательно, в зависимости от изменений).
fields array Массив имен полей.
- string Имя поля.
data array Массив строк.
- array Массив столбцов.
- string,number Значение столбца, тип зависит от типа столбца в схеме базы данных.
macro.secrets object Информация о секретных макросах; отсутствует, если в макросах хранилища секретов нет изменений (необязательно).
config_revision number Ревизия кэша конфигурации — отправляется вместе с данными конфигурации (необязательно).
del_hostids array Массив удалённых hostid (необязательно).
- number Идентификатор узла сети.
del_macro_hostids array Массив hostid, для которых удалены все макросы (необязательно).
- number Идентификатор узла сети.
proxy→server:
response string Информация об успешности запроса ('success' или 'failed').
version string Версия прокси (<major>.<minor>.<build>).

Пример:

server→proxy:

{
  "request":"proxy config"
} 

proxy→server:

{
  "version": "8.0.0",
  "session": "0033124949800811e5686dbfd9bcea98",
  "config_revision": 0
}

server→proxy:

{
    "full_sync": 1,
    "data": {
        "hosts": {
            "fields": ["hostid", "host", "status", "ipmi_authtype", "ipmi_privilege", "ipmi_username", "ipmi_password", "name", "tls_connect", "tls_accept", "tls_issuer", "tls_subject", "tls_psk_identity", "tls_psk"],
            "data": [
                [10084, "Zabbix server", 0, -1, 2, "", "", "Zabbix server", 1, 1, "", "", "", ""]
            ]
        },
        "interface": {
            "fields": ["interfaceid", "hostid", "main", "type", "useip", "ip", "dns", "port", "available"],
            "data": [
                [1, 10084, 1, 1, 1, "127.0.0.1", "", "10053", 1]
            ]
        },
        "interface_snmp": {
            "fields": ["interfaceid", "version", "bulk", "community", "securityname", "securitylevel", "authpassphrase", "privpassphrase", "authprotocol", "privprotocol", "contextname"],
            "data": []
        },
        "host_inventory": {
            "fields": ["hostid", "type", "type_full", "name", "alias", "os", "os_full", "os_short", "serialno_a", "serialno_b", "tag", "asset_tag", "macaddress_a", "macaddress_b", "hardware", "hardware_full", "software", "software_full", "software_app_a", "software_app_b", "software_app_c", "software_app_d", "software_app_e", "contact", "location", "location_lat", "location_lon", "notes", "chassis", "model", "hw_arch", "vendor", "contract_number", "installer_name", "deployment_status", "url_a", "url_b", "url_c", "host_networks", "host_netmask", "host_router", "oob_ip", "oob_netmask", "oob_router", "date_hw_purchase", "date_hw_install", "date_hw_expiry", "date_hw_decomm", "site_address_a", "site_address_b", "site_address_c", "site_city", "site_state", "site_country", "site_zip", "site_rack", "site_notes", "poc_1_name", "poc_1_email", "poc_1_phone_a", "poc_1_phone_b", "poc_1_cell", "poc_1_screen", "poc_1_notes", "poc_2_name", "poc_2_email", "poc_2_phone_a", "poc_2_phone_b", "poc_2_cell", "poc_2_screen", "poc_2_notes"],
            "data": [
                [10084, "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "56.95387", "24.22067", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
            ]
        },
        "items": {
            "fields": ["itemid", "type", "snmp_oid", "hostid", "key_", "delay", "history", "status", "value_type", "trapper_hosts", "logtimefmt", "params", "ipmi_sensor", "authtype", "username", "password", "publickey", "privatekey", "flags", "interfaceid", "inventory_link", "jmx_endpoint", "master_itemid", "timeout", "url", "query_fields", "posts", "status_codes", "follow_redirects", "post_type", "http_proxy", "headers", "retrieve_mode", "request_method", "output_format", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host", "allow_traps"],
            "data": [
                [44161, 7, "", 10084, "agent.hostmetadata", "10s", "90d", 0, 1, "", "", "", "", 0, "", "", "", "", 0, null, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0],
                [44162, 0, "", 10084, "agent.ping", "10s", "90d", 0, 3, "", "", "", "", 0, "", "", "", "", 0, 1, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0]
            ]
        },
        "item_rtdata": {
            "fields": ["itemid", "lastlogsize", "mtime"],
            "data": [
                [44161, 0, 0],
                [44162, 0, 0]
            ]
        },
        "item_preproc": {
            "fields": ["item_preprocid", "itemid", "step", "type", "params", "error_handler", "error_handler_params"],
            "data": []
        },
        "item_parameter": {
            "fields": ["item_parameterid", "itemid", "name", "value"],
            "data": []
        },
        "globalmacro": {
            "fields": ["globalmacroid", "macro", "value", "type"],
            "data": [
                [2, "{$SNMP_COMMUNITY}", "public", 0]
            ]
        },
        "hosts_templates": {
            "fields": ["hosttemplateid", "hostid", "templateid", "link_type"],
            "data": []
        },
        "hostmacro": {
            "fields": ["hostmacroid", "hostid", "macro", "value", "type", "automatic"],
            "data": [
                [5676, 10084, "{$M}", "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix:Content", 2, 0]
            ]
        },
        "drules": {
            "fields": ["druleid", "name", "iprange", "delay"],
            "data": [
                [2, "Local network", "127.0.0.1", "10s"]
            ]
        },
        "dchecks": {
            "fields": ["dcheckid", "druleid", "type", "key_", "snmp_community", "ports", "snmpv3_securityname", "snmpv3_securitylevel", "snmpv3_authpassphrase", "snmpv3_privpassphrase", "uniq", "snmpv3_authprotocol", "snmpv3_privprotocol", "snmpv3_contextname", "host_source", "name_source"],
            "data": [
                [2, 2, 9, "system.uname", "", "10052", "", 0, "", "", 0, 0, 0, "", 1, 0]
            ]
        },
        "regexps": {
            "fields": ["regexpid", "name"],
            "data": [
                [1, "File systems for discovery"],
                [2, "Network interfaces for discovery"],
                [3, "Storage devices for SNMP discovery"],
                [4, "Windows service names for discovery"],
                [5, "Windows service startup states for discovery"]
            ]
        },
        "expressions": {
            "fields": ["expressionid", "regexpid", "expression", "expression_type", "exp_delimiter", "case_sensitive"],
            "data": [
                [1, 1, "^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$", 3, ",", 0],
                [3, 3, "^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$", 4, ",", 1],
                [5, 4, "^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$", 4, ",", 1],
                [6, 5, "^(automatic|automatic delayed)$", 3, ",", 1],
                [7, 2, "^Software Loopback Interface", 4, ",", 1],
                [8, 2, "^(In)?[Ll]oop[Bb]ack[0-9._]*$", 4, ",", 1],
                [9, 2, "^NULL[0-9.]*$", 4, ",", 1],
                [10, 2, "^[Ll]o[0-9.]*$", 4, ",", 1],
                [11, 2, "^[Ss]ystem$", 4, ",", 1],
                [12, 2, "^Nu[0-9.]*$", 4, ",", 1]
            ]
        },
        "settings": {
            "fields": ["name", "type", "value_str", "value_int"],
            "data": [
                ["autoreg_tls_accept", 2, "", 1],
                ["hk_history_global", 2, "", 0],
                ["snmptrap_logging", 2, "", 1],
                ["proxy_secrets_provider", 2, "", 0],
                ["hk_history", 1, "31d", 0],
                ["timeout_db_monitor", 1, "3s", 0],
                ["timeout_external_check", 1, "3s", 0],
                ["timeout_http_agent", 1, "3s", 0],
                ["timeout_simple_check", 1, "3s", 0],
                ["timeout_snmp_agent", 1, "3s", 0],
                ["timeout_ssh_agent", 1, "3s", 0],
                ["timeout_telnet_agent", 1, "3s", 0],
                ["timeout_zabbix_agent", 1, "3s", 0],
                ["timeout_browser", 1, "30s", 0]
            ]
        },
        "httptest": {
            "fields": ["httptestid", "name", "delay", "agent", "authentication", "http_user", "http_password", "hostid", "http_proxy", "retries", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host"],
            "data": []
        },
        "httptestitem": {
            "fields": ["httptestitemid", "httptestid", "itemid", "type"],
            "data": []
        },
        "httptest_field": {
            "fields": ["httptest_fieldid", "httptestid", "type", "name", "value"],
            "data": []
        },
        "httpstep": {
            "fields": ["httpstepid", "httptestid", "name", "no", "url", "timeout", "posts", "required", "status_codes", "follow_redirects", "retrieve_mode", "post_type"],
            "data": []
        },
        "httpstepitem": {
            "fields": ["httpstepitemid", "httpstepid", "itemid", "type"],
            "data": []
        },
        "httpstep_field": {
            "fields": ["httpstep_fieldid", "httpstepid", "type", "name", "value"],
            "data": []
        },
        "config_autoreg_tls": {
            "fields": ["autoreg_tlsid", "tls_psk_identity", "tls_psk"],
            "data": [
                [1, "", ""]
            ]
        }
    },
    "macro.secrets": {
        "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix": {
            "Content": "738"
        }
    },
    "config_revision": 2
}

proxy→server:

{
  "response": "success",
  "version": "8.0.0"
}
Запрос данных

Запрос proxy data используется для получения от прокси данных о доступности интерфейсов узла сети, исторических данных, данных обнаружения и авторегистрации. Этот запрос отправляется каждые ProxyDataFrequency секунд (параметр конфигурации сервера).

name value type description
server→proxy:
request string 'proxy data'
proxy→server:
session string Токен сеанса данных.
interface availability array (optional) Массив объектов данных о доступности интерфейсов.
interfaceid number Идентификатор интерфейса.
available number Доступность интерфейса:

0, INTERFACE_AVAILABLE_UNKNOWN - неизвестно
1, INTERFACE_AVAILABLE_TRUE - доступен
2, INTERFACE_AVAILABLE_FALSE - недоступен
error string Сообщение об ошибке интерфейса или пустая строка.
history data array (optional) Массив объектов исторических данных.
itemid number Идентификатор элемента данных.
clock number Метка времени значения элемента данных (секунды).
ns number Метка времени значения элемента данных (наносекунды).
value string (optional) Значение элемента данных.
id number Идентификатор значения (возрастающий счётчик, уникальный в пределах одного сеанса данных).
timestamp number (optional) Метка времени элементов данных типа log.
source string (optional) Значение source элемента данных eventlog.
severity number (optional) Значение severity элемента данных eventlog.
eventid number (optional) Значение eventid элемента данных eventlog.
state string (optional) Состояние элемента данных:
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize number (optional) Последний размер журнала для элементов данных типа log.
mtime number (optional) Время изменения для элементов данных типа log.
discovery data array (optional) Массив объектов данных обнаружения.
clock number Метка времени данных обнаружения.
druleid number Идентификатор правила обнаружения.
dcheckid number Идентификатор проверки обнаружения или null для данных правила обнаружения.
type number Тип проверки обнаружения:

-1 данные правила обнаружения
0, SVC_SSH - проверка сервиса SSH
1, SVC_LDAP - проверка сервиса LDAP
2, SVC_SMTP - проверка сервиса SMTP
3, SVC_FTP - проверка сервиса FTP
4, SVC_HTTP - проверка сервиса HTTP
5, SVC_POP - проверка сервиса POP
6, SVC_NNTP - проверка сервиса NNTP
7, SVC_IMAP - проверка сервиса IMAP
8, SVC_TCP - проверка доступности TCP-порта
9, SVC_AGENT - агент Zabbix
10, SVC_SNMPv1 - агент SNMPv1
11, SVC_SNMPv2 - агент SNMPv2
12, SVC_ICMPPING - ICMP ping
13, SVC_SNMPv3 - агент SNMPv3
14, SVC_HTTPS - проверка сервиса HTTPS
15, SVC_TELNET - проверка доступности Telnet
ip string IP-адрес узла сети.
dns string DNS-имя узла сети.
port number (optional) Номер порта сервиса.
key_ string (optional) Ключ элемента данных для проверки обнаружения типа 9 SVC_AGENT
value string (optional) Значение, полученное от сервиса; для большинства сервисов может быть пустым.
status number (optional) Состояние сервиса:

0, DOBJECT_STATUS_UP - Сервис UP
1, DOBJECT_STATUS_DOWN - Сервис DOWN
auto registration array (optional) Массив объектов данных авторегистрации.
clock number Метка времени данных авторегистрации.
host string Имя узла сети.
ip string (optional) IP-адрес узла сети.
dns string (optional) DNS-имя, разрешённое из IP-адреса.
port string (optional) Порт узла сети.
host_metadata string (optional) Метаданные узла сети, отправленные агентом (на основе параметра конфигурации агента HostMetadata или HostMetadataItem).
tasks array (optional) Массив задач.
type number Тип задачи:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - результат удалённой команды
status number Состояние выполнения удалённой команды:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED - удалённая команда успешно выполнена
1, ZBX_TM_REMOTE_COMMAND_FAILED - ошибка выполнения удалённой команды
error string (optional) Сообщение об ошибке.
parent_taskid number ID родительской задачи.
more number (optional) 1 - есть дополнительные исторические данные для отправки.
clock number (optional) Метка времени передачи данных (секунды).
ns number (optional) Метка времени передачи данных (наносекунды).
version string Версия прокси (<major>.<minor>.<build>).
server→proxy:
response string Информация об успешности запроса ('success' или 'failed').
tasks array (optional) Массив задач.
type number Тип задачи:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - удалённая команда
clock number Время создания задачи.
ttl number Время в секундах, по истечении которого задача становится недействительной.
commandtype number Тип удалённой команды:

0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - использовать пользовательский скрипт
1, ZBX_SCRIPT_TYPE_IPMI - использовать IPMI
2, ZBX_SCRIPT_TYPE_SSH - использовать SSH
3, ZBX_SCRIPT_TYPE_TELNET - использовать Telnet
4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - использовать глобальный скрипт (в настоящее время функционально эквивалентен пользовательскому скрипту)
command string Удалённая команда для выполнения.
execute_on number Цель выполнения для пользовательских скриптов:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - выполнить скрипт на агенте
1, ZBX_SCRIPT_EXECUTE_ON_SERVER - выполнить скрипт на сервере
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - выполнить скрипт на прокси
port number (optional) Порт для команд Telnet и SSH.
authtype number (optional) Тип аутентификации для команд SSH.
username string (optional) Имя пользователя для команд Telnet и SSH.
password string (optional) Пароль для команд Telnet и SSH.
publickey string (optional) Открытый ключ для команд SSH.
privatekey string (optional) Закрытый ключ для команд SSH.
parent_taskid number ID родительской задачи.
hostid number ID целевого узла сети.

Пример:

server→proxy:

{
  "request": "proxy data"
}

proxy→server:

{
    "session": "12345678901234567890123456789012"
    "interface availability": [
        {
            "interfaceid": 1,
            "available": 1,
            "error": ""
    },
        {
            "interfaceid": 2,
            "available": 2,
            "error": "Get value from agent failed: cannot connect to [[127.0.0.1]:10049]: [111] Connection refused"
    },
        {
            "interfaceid": 3,
            "available": 1,
            "error": ""
    },
        {
            "interfaceid": 4,
            "available": 1,
            "error": ""
    }
    ],
    "history data":[
        {
            "itemid":"12345",
            "clock":1478609647,
            "ns":332510044,
            "value":"52956612",
            "id": 1
        },
        {
            "itemid":"12346",
            "clock":1478609647,
            "ns":330690279,
            "state":1,
            "value":"Cannot find information for this network interface in /proc/net/dev.",
            "id": 2
        }
    ],
    "discovery data":[
        {
            "clock":1478608764,
            "drule":2,
            "dcheck":3,
            "type":12,
            "ip":"10.3.0.10",
            "dns":"vdebian",
            "status":1
        },
        {
            "clock":1478608764,
            "drule":2,
            "dcheck":null,
            "type":-1,
            "ip":"10.3.0.10",
            "dns":"vdebian",
            "status":1
        }
    ],
    "auto registration":[
        {
            "clock":1478608371,
            "host":"Logger1",
            "ip":"10.3.0.1",
            "dns":"localhost",
            "port":"10050"
        },
        {
            "clock":1478608381,
            "host":"Logger2",
            "ip":"10.3.0.2",
            "dns":"localhost",
            "port":"10050"
        }
    ],
    "tasks":[
        {
            "type": 0,
            "status": 0,
            "parent_taskid": 10
        },
        {
            "type": 0,
            "status": 1,
            "error": "No permissions to execute task.",
            "parent_taskid": 20
        }
    ],
    "version":"8.0.0"
}

server→proxy:

{
  "response": "success",
  "tasks":[
      {
         "type": 1,
         "clock": 1478608371,
         "ttl": 600,
         "commandtype": 2,
         "command": "restart_service1.sh",
         "execute_on": 2,
         "port": 80,
         "authtype": 0,
         "username": "userA",
         "password": "password1",
         "publickey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe",
         "privatekey": "lsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5QCqGKukO1De7zhd",
         "parent_taskid": 10,
         "hostid": 10070
      },
      {
         "type": 1,
         "clock": 1478608381,
         "ttl": 600,
         "commandtype": 1,
         "command": "restart_service2.sh",
         "execute_on": 0,
         "authtype": 0,
         "username": "",
         "password": "",
         "publickey": "",
         "privatekey": "",
         "parent_taskid": 20,
         "hostid": 10084
      }
  ]
}
Запрос задач

Обмен proxy tasks обеспечивает доставку и подтверждение задач удалённых команд между сервером и пассивным прокси. Когда сервер опрашивает прокси на предмет результатов задач, он отправляет пустой запрос proxy tasks с интервалом, заданным параметром ProxyDataFrequency. Прокси отвечает своей текущей версией и всеми ожидающими результатами задач (включая временные метки). Затем сервер подтверждает получение, возвращая response, и может включить новые задачи для выполнения прокси.

name value type description
server→proxy:
request string 'proxy tasks'
proxy→server:
version string Версия прокси (<major>.<minor>.<build>).
clock number (необязательно) Временная метка передачи данных (секунды).
ns number (необязательно) Временная метка передачи данных (наносекунды).
server→proxy:
response string Информация об успешности запроса ('success' или 'failed').

Пример:

server→proxy:

{
  "request":"proxy tasks"
}

proxy→server:

{
  "version":"7.0.0",
  "clock":1721059872,
  "ns":848141522
}

server→proxy:

{
  "response":"success"
}

Активный прокси

Запрос конфигурации

Запрос proxy config отправляется активным прокси для получения данных конфигурации прокси. Этот запрос отправляется каждые ProxyConfigFrequency (параметр конфигурации прокси) секунд.

name value type description
proxy→server:
request string 'proxy config'
host string
Имя прокси.
version string Версия прокси (<major>.<minor>.<build>).
session string Токен сеанса конфигурации прокси.
config_revision number Ревизия конфигурации прокси.
hostmap_revision number Текущая ревизия сопоставления узлов сети с прокси.
server→proxy:
full_sync number 1 — если отправляются полные данные конфигурации, в противном случае отсутствует (необязательно).
data array Объект табличных данных. Отсутствует, если конфигурация не изменялась (необязательно).
<table> object Один или несколько объектов с данными <table> (необязательно, в зависимости от изменений).
fields array Массив имен полей.
- string Имя поля.
data array Массив строк.
- array Массив столбцов.
- string,number Значение столбца, тип которого зависит от типа столбца в схеме базы данных.
macro.secrets object Информация о секретных макросах; отсутствует, если в макросах хранилища секретов нет изменений (необязательно).
proxy_group string Имя группы прокси, к которой принадлежит прокси.
config_revision number Ревизия кэша конфигурации — отправляется вместе с данными конфигурации (необязательно).
del_hostids array Массив удаленных hostid (необязательно).
- number Идентификатор узла сети.
del_macro_hostids array Массив hostid, у которых удалены все макросы (необязательно).
- number Идентификатор узла сети.

Пример:

proxy→server:

{
  "request": "proxy config",
  "host": "Zabbix proxy",
  "version":"8.0.0",
  "session": "fd59a09ff4e9d1fb447de1f04599bcf6",
  "config_revision": 0
}

server→proxy:

{
    "full_sync": 1,
    "data": {
        "hosts": {
            "fields": ["hostid", "host", "status", "ipmi_authtype", "ipmi_privilege", "ipmi_username", "ipmi_password", "name", "tls_connect", "tls_accept", "tls_issuer", "tls_subject", "tls_psk_identity", "tls_psk"],
            "data": [
                [10084, "Zabbix server", 0, -1, 2, "", "", "Zabbix server", 1, 1, "", "", "", ""]
            ]
        },
        "interface": {
            "fields": ["interfaceid", "hostid", "main", "type", "useip", "ip", "dns", "port", "available"],
            "data": [
                [1, 10084, 1, 1, 1, "127.0.0.1", "", "10053", 1]
            ]
        },
        "interface_snmp": {
            "fields": ["interfaceid", "version", "bulk", "community", "securityname", "securitylevel", "authpassphrase", "privpassphrase", "authprotocol", "privprotocol", "contextname"],
            "data": []
        },
        "host_inventory": {
            "fields": ["hostid", "type", "type_full", "name", "alias", "os", "os_full", "os_short", "serialno_a", "serialno_b", "tag", "asset_tag", "macaddress_a", "macaddress_b", "hardware", "hardware_full", "software", "software_full", "software_app_a", "software_app_b", "software_app_c", "software_app_d", "software_app_e", "contact", "location", "location_lat", "location_lon", "notes", "chassis", "model", "hw_arch", "vendor", "contract_number", "installer_name", "deployment_status", "url_a", "url_b", "url_c", "host_networks", "host_netmask", "host_router", "oob_ip", "oob_netmask", "oob_router", "date_hw_purchase", "date_hw_install", "date_hw_expiry", "date_hw_decomm", "site_address_a", "site_address_b", "site_address_c", "site_city", "site_state", "site_country", "site_zip", "site_rack", "site_notes", "poc_1_name", "poc_1_email", "poc_1_phone_a", "poc_1_phone_b", "poc_1_cell", "poc_1_screen", "poc_1_notes", "poc_2_name", "poc_2_email", "poc_2_phone_a", "poc_2_phone_b", "poc_2_cell", "poc_2_screen", "poc_2_notes"],
            "data": [
                [10084, "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "56.95387", "24.22067", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
            ]
        },
        "items": {
            "fields": ["itemid", "type", "snmp_oid", "hostid", "key_", "delay", "history", "status", "value_type", "trapper_hosts", "logtimefmt", "params", "ipmi_sensor", "authtype", "username", "password", "publickey", "privatekey", "flags", "interfaceid", "inventory_link", "jmx_endpoint", "master_itemid", "timeout", "url", "query_fields", "posts", "status_codes", "follow_redirects", "post_type", "http_proxy", "headers", "retrieve_mode", "request_method", "output_format", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host", "allow_traps"],
            "data": [
                [44161, 7, "", 10084, "agent.hostmetadata", "10s", "90d", 0, 1, "", "", "", "", 0, "", "", "", "", 0, null, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0],
                [44162, 0, "", 10084, "agent.ping", "10s", "90d", 0, 3, "", "", "", "", 0, "", "", "", "", 0, 1, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0]
            ]
        },
        "item_rtdata": {
            "fields": ["itemid", "lastlogsize", "mtime"],
            "data": [
                [44161, 0, 0],
                [44162, 0, 0]
            ]
        },
        "item_preproc": {
            "fields": ["item_preprocid", "itemid", "step", "type", "params", "error_handler", "error_handler_params"],
            "data": []
        },
        "item_parameter": {
            "fields": ["item_parameterid", "itemid", "name", "value"],
            "data": []
        },
        "globalmacro": {
            "fields": ["globalmacroid", "macro", "value", "type"],
            "data": [
                [2, "{$SNMP_COMMUNITY}", "public", 0]
            ]
        },
        "hosts_templates": {
            "fields": ["hosttemplateid", "hostid", "templateid", "link_type"],
            "data": []
        },
        "hostmacro": {
            "fields": ["hostmacroid", "hostid", "macro", "value", "type", "automatic"],
            "data": [
                [5676, 10084, "{$M}", "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix:Content", 2, 0]
            ]
        },
        "drules": {
            "fields": ["druleid", "name", "iprange", "delay"],
            "data": [
                [2, "Local network", "127.0.0.1", "10s"]
            ]
        },
        "dchecks": {
            "fields": ["dcheckid", "druleid", "type", "key_", "snmp_community", "ports", "snmpv3_securityname", "snmpv3_securitylevel", "snmpv3_authpassphrase", "snmpv3_privpassphrase", "uniq", "snmpv3_authprotocol", "snmpv3_privprotocol", "snmpv3_contextname", "host_source", "name_source"],
            "data": [
                [2, 2, 9, "system.uname", "", "10052", "", 0, "", "", 0, 0, 0, "", 1, 0]
            ]
        },
        "regexps": {
            "fields": ["regexpid", "name"],
            "data": [
                [1, "File systems for discovery"],
                [2, "Network interfaces for discovery"],
                [3, "Storage devices for SNMP discovery"],
                [4, "Windows service names for discovery"],
                [5, "Windows service startup states for discovery"]
            ]
        },
        "expressions": {
            "fields": ["expressionid", "regexpid", "expression", "expression_type", "exp_delimiter", "case_sensitive"],
            "data": [
                [1, 1, "^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$", 3, ",", 0],
                [3, 3, "^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$", 4, ",", 1],
                [5, 4, "^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$", 4, ",", 1],
                [6, 5, "^(automatic|automatic delayed)$", 3, ",", 1],
                [7, 2, "^Software Loopback Interface", 4, ",", 1],
                [8, 2, "^(In)?[Ll]oop[Bb]ack[0-9._]*$", 4, ",", 1],
                [9, 2, "^NULL[0-9.]*$", 4, ",", 1],
                [10, 2, "^[Ll]o[0-9.]*$", 4, ",", 1],
                [11, 2, "^[Ss]ystem$", 4, ",", 1],
                [12, 2, "^Nu[0-9.]*$", 4, ",", 1]
            ]
        },
        "settings": {
            "fields": ["name", "type", "value_str", "value_int"],
            "data": [
                ["autoreg_tls_accept", 2, "", 1],
                ["hk_history_global", 2, "", 0],
                ["snmptrap_logging", 2, "", 1],
                ["proxy_secrets_provider", 2, "", 0],
                ["hk_history", 1, "31d", 0],
                ["timeout_db_monitor", 1, "3s", 0],
                ["timeout_external_check", 1, "3s", 0],
                ["timeout_http_agent", 1, "3s", 0],
                ["timeout_simple_check", 1, "3s", 0],
                ["timeout_snmp_agent", 1, "3s", 0],
                ["timeout_ssh_agent", 1, "3s", 0],
                ["timeout_telnet_agent", 1, "3s", 0],
                ["timeout_zabbix_agent", 1, "3s", 0],
                ["timeout_browser", 1, "30s", 0]
            ]
        },
        "httptest": {
            "fields": ["httptestid", "name", "delay", "agent", "authentication", "http_user", "http_password", "hostid", "http_proxy", "retries", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host"],
            "data": []
        },
        "httptestitem": {
            "fields": ["httptestitemid", "httptestid", "itemid", "type"],
            "data": []
        },
        "httptest_field": {
            "fields": ["httptest_fieldid", "httptestid", "type", "name", "value"],
            "data": []
        },
        "httpstep": {
            "fields": ["httpstepid", "httptestid", "name", "no", "url", "timeout", "posts", "required", "status_codes", "follow_redirects", "retrieve_mode", "post_type"],
            "data": []
        },
        "httpstepitem": {
            "fields": ["httpstepitemid", "httpstepid", "itemid", "type"],
            "data": []
        },
        "httpstep_field": {
            "fields": ["httpstep_fieldid", "httpstepid", "type", "name", "value"],
            "data": []
        },
        "config_autoreg_tls": {
            "fields": ["autoreg_tlsid", "tls_psk_identity", "tls_psk"],
            "data": [
                [1, "", ""]
            ]
        }
    },
    "macro.secrets": {
        "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix": {
            "Content": "738"
        }
    },
    "config_revision": 2
}
Запрос данных

Запрос proxy data отправляется прокси для передачи данных о доступности интерфейсов узла сети, истории, обнаружении и авторегистрации. Этот запрос отправляется каждые DataSenderFrequency секунд (параметр конфигурации прокси). Обратите внимание, что активный прокси по-прежнему будет опрашивать сервер Zabbix каждую секунду на предмет задач удалённых команд (с пустым запросом proxy data).

name value type description
proxy→server:
request string 'proxy data'
host string Имя прокси.
session string Токен сеанса данных.
interface availability array (optional) Массив объектов данных о доступности интерфейсов.
interfaceid number Идентификатор интерфейса.
available number Доступность интерфейса:

0, INTERFACE_AVAILABLE_UNKNOWN - неизвестно
1, INTERFACE_AVAILABLE_TRUE - доступен
2, INTERFACE_AVAILABLE_FALSE - недоступен
error string Сообщение об ошибке интерфейса или пустая строка.
history data array (optional) Массив объектов данных истории.
itemid number Идентификатор элемента данных.
clock number Метка времени значения элемента данных (секунды).
ns number Метка времени значения элемента данных (наносекунды).
value string (optional) Значение элемента данных.
id number Идентификатор значения (возрастающий счётчик, уникальный в пределах одного сеанса данных).
timestamp number (optional) Метка времени элементов данных типа журнал.
source string (optional) Значение source элемента данных eventlog.
severity number (optional) Значение severity элемента данных eventlog.
eventid number (optional) Значение eventid элемента данных eventlog.
state string (optional) Состояние элемента данных:
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize number (optional) Последний размер журнала для элементов данных типа журнал.
mtime number (optional) Время изменения для элементов данных типа журнал.
discovery data array (optional) Массив объектов данных обнаружения.
clock number Метка времени данных обнаружения.
druleid number Идентификатор правила обнаружения.
dcheckid number Идентификатор проверки обнаружения или null для данных правила обнаружения.
type number Тип проверки обнаружения:

-1 данные правила обнаружения
0, SVC_SSH - проверка сервиса SSH
1, SVC_LDAP - проверка сервиса LDAP
2, SVC_SMTP - проверка сервиса SMTP
3, SVC_FTP - проверка сервиса FTP
4, SVC_HTTP - проверка сервиса HTTP
5, SVC_POP - проверка сервиса POP
6, SVC_NNTP - проверка сервиса NNTP
7, SVC_IMAP - проверка сервиса IMAP
8, SVC_TCP - проверка доступности TCP-порта
9, SVC_AGENT - агент Zabbix
10, SVC_SNMPv1 - агент SNMPv1
11, SVC_SNMPv2 - агент SNMPv2
12, SVC_ICMPPING - ICMP ping
13, SVC_SNMPv3 - агент SNMPv3
14, SVC_HTTPS - проверка сервиса HTTPS
15, SVC_TELNET - проверка доступности Telnet
ip string IP-адрес узла сети.
dns string DNS-имя узла сети.
port number (optional) Номер порта сервиса.
key_ string (optional) Ключ элемента данных для проверки обнаружения типа 9 SVC_AGENT
value string (optional) Значение, полученное от сервиса; для большинства сервисов может быть пустым.
status number (optional) Состояние сервиса:

0, DOBJECT_STATUS_UP - сервис UP
1, DOBJECT_STATUS_DOWN - сервис DOWN
autoregistration array (optional) Массив объектов данных авторегистрации.
clock number Метка времени данных авторегистрации.
host string Имя узла сети.
ip string (optional) IP-адрес узла сети.
dns string (optional) DNS-имя, разрешённое из IP-адреса.
port string (optional) Порт узла сети.
host_metadata string (optional) Метаданные узла сети, отправленные агентом (на основе параметра конфигурации агента HostMetadata или HostMetadataItem).
tasks array (optional) Массив задач.
type number Тип задачи:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - результат удалённой команды
status number Состояние выполнения удалённой команды:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED - удалённая команда успешно выполнена
1, ZBX_TM_REMOTE_COMMAND_FAILED - ошибка выполнения удалённой команды
error string (optional) Сообщение об ошибке.
parent_taskid number ID родительской задачи.
more number (optional) 1 - есть дополнительные данные истории для отправки
clock number (optional) Метка времени передачи данных (секунды).
ns number (optional) Метка времени передачи данных (наносекунды).
version string Версия прокси (<major>.<minor>.<build>).
server→proxy:
response string Информация об успешности запроса ('success' или 'failed').
upload string Управление загрузкой исторических данных (история, авторегистрация, доступность узла сети, сетевое обнаружение).

Возможные значения:
enabled - нормальная работа
disabled - сервер не принимает данные (возможно, из-за превышения лимита внутреннего кэша)
tasks array (optional) Массив задач.
type number Тип задачи:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - удалённая команда
clock number Время создания задачи.
ttl number Время в секундах, по истечении которого задача становится недействительной.
commandtype number Тип удалённой команды:

0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - использовать пользовательский скрипт
1, ZBX_SCRIPT_TYPE_IPMI - использовать IPMI
2, ZBX_SCRIPT_TYPE_SSH - использовать SSH
3, ZBX_SCRIPT_TYPE_TELNET - использовать Telnet
4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - использовать глобальный скрипт (в настоящее время функционально эквивалентен пользовательскому скрипту)
command string Удалённая команда для выполнения.
execute_on number Цель выполнения для пользовательских скриптов:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - выполнить скрипт на агенте
1, ZBX_SCRIPT_EXECUTE_ON_SERVER - выполнить скрипт на сервере
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - выполнить скрипт на прокси
port number (optional) Порт для команд Telnet и SSH.
authtype number (optional) Тип аутентификации для команд SSH.
username string (optional) Имя пользователя для команд Telnet и SSH.
password string (optional) Пароль для команд Telnet и SSH.
publickey string (optional) Открытый ключ для команд SSH.
privatekey string (optional) Закрытый ключ для команд SSH.
parent_taskid number ID родительской задачи.
hostid number ID целевого узла сети.

Пример:

proxy→server:

{
    "request": "proxy data",
    "host": "Zabbix proxy",
    "session": "818cdd1b537bdc5e50c09ed4969235b6",
    "interface availability": [{
        "interfaceid": 1,
        "available": 1,
        "error": ""
    }],
    "history data": [{
        "id": 1114,
        "itemid": 44162,
        "clock": 1665730632,
        "ns": 798953105,
        "value": "1"
    }, {
        "id": 1115,
        "itemid": 44161,
        "clock": 1665730633,
        "ns": 811684663,
        "value": "58"
    }],
    "auto registration": [{
        "clock": 1665730633,
        "host": "Zabbix server",
        "ip": "127.0.0.1",
        "dns": "localhost",
        "port": "10053",
        "host_metadata": "58",
        "tls_accepted": 1
    }],
    "discovery data": [{
        "clock": 1665732232,
        "drule": 2,
        "dcheck": 2,
        "ip": "127.0.0.1",
        "dns": "localhost",
        "port": 10052,
        "status": 1
    }, {
        "clock": 1665732232,
        "drule": 2,
        "dcheck": null,
        "ip": "127.0.0.1",
        "dns": "localhost",
        "status": 1
    }],
    "host data": [{
        "hostid": 10084,
        "active_status": 1
    }],
    "tasks": [{
        "type": 3,
        "clock": 1665730985,
        "ttl": 0,
        "status": -1,
        "info": "Remote commands are not enabled",
        "parent_taskid": 3
    }],
    "version": "8.0.0",
    "clock": 1665730643,
    "ns": 65389964
}

server→proxy:

{
    "upload": "enabled",
    "response": "success",
    "tasks": [{
        "type": 2,
        "clock": 1665730986,
        "ttl": 600,
        "commandtype": 0,
        "command": "ping -c 3 127.0.0.1; case $? in [01]) true;; *) false;; esac",
        "execute_on": 2,
        "port": 0,
        "authtype": 0,
        "username": "",
        "password": "",
        "publickey": "",
        "privatekey": "",
        "alertid": 0,
        "parent_taskid": 4,
        "hostid": 10084
    }]
}