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 Информация о секретных макросах, отсутствует, если в макросах vault нет изменений (необязательно).
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": "7.4.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": "7.4.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":"7.4.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":"7.4.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) Значение 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 - ping ICMP
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": "7.4.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
    }]
}