[comment]: # translation:outdated

[comment]: # ({7669b1c2-7669b1c2})
# 1 Протокол за размену података између сервера и проксија

[comment]: # ({/7669b1c2-7669b1c2})

[comment]: # ({7382efcd-7382efcd})
#### Преглед

Сервер - прокси размена података је заснована на JSON формату.

Поруке захтева и одговора морају да почињу са [заглављем и дужином 
података](/manual/appendix/protocols/header_datalen).

[comment]: # ({/7382efcd-7382efcd})

[comment]: # ({14661e11-14661e11})
#### Пасивни прокси

[comment]: # ({/14661e11-14661e11})

[comment]: # ({52650084-fac082ad})
##### Захтев за конфигурацију

Сервер ће прво послати празан захтев `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* | Низ уклоњених ID-ијева домаћина (опционо)). |
|     | -   | <   | <   | <   | *number* | Идентификатор домаћина. |
| **del_macro_hostids** | <   | <   | <   | <   | *array* | Низ ИД-ова хостова са уклоњеним свим макроима (опционо)). |
|     | -   | <   | <   | <   | *number* |  Идентификатор домаћина. |
|     | <   | <   | <   | <   | <   | <   |
| proxy→server: | <   | <   | <   | <   | <   | <   |
| **response** | <   | <   | <   | <   | *string* | Захтев за информације о успеху ("успех" или "неуспех"). |
| **version** | <   | <   | <   | <   | *string* | Верзија проксија (\<major>.\<minor>.\<build>). |

Пример:

server→proxy:

server→proxy:

```{.javascript}
{
  "request":"proxy config"
} 
```

proxy→server:

```json
{
     "version": "7.4.0",
     "session": "0033124949800811e5686dbfd9bcea98",
     "config_revision": 0
}
```

server→proxy:

```json
{
     "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:

```json
{
     "response": "success",
     "version": "7.4.0"
}
```

[comment]: # ({/52650084-fac082ad})

[comment]: # ({74b1e336-c348e5d9})
##### Захтев за податке

Захтев за `proxy data` се користи за добијање доступности интерфејса хоста,
историјских података, података о откривању и аутоматској регистрацији од проксија. Овај захтев
се шаље сваких `ProxyDataFrequency` (параметар конфигурације сервера)
секунде.

|name|<|value type|description|
|-|----------|----------|-----------|---------------------------------------|
|server→proxy:|<|<|<|
|**request**|<|*string*|'proxy data'|
|proxy→server:|<|<|<|
|**session**|<|*string*|Токен сесије података.|
|**interface availability**|<|*array*|*(опционо)* Низ објеката података о доступности интерфејса.|
| |**interfaceid**|*number*|Идентификатор интерфејса.|
|^|**available**|*number*|Доступност интерфејса:<br><br>**0**, *INTERFACE\_AVAILABLE\_UNKNOWN* - непознато<br>**1**, *INTERFACE\_AVAILABLE\_TRUE* - доступно<br>**2**, *INTERFACE\_AVAILABLE\_FALSE* - недоступно|
|^|**error**|*string*|Порука о грешци интерфејса или празан стринг.|
|**history data**|<|*array|*(опционо)* Низ објеката података историје.|
| |**itemid**|*number*|Идентификатор ставке.|
|^|**clock**|*number*|Временска ознака вредности ставке (секунде).|
|^|**ns**|*number*|Временска ознака вредности ставке (наносекунде).|
|^|**value**|*string*|*(опционо)* Вредност ставке.|
|^|**id**|*number*|Идентификатор вредности (растући бројач, јединствен у једној сесији података).|
|^|**timestamp**|*number*|*(опционо)* Временска ознака ставки типа дневника.|
|^|**source**|*string*|*(опционо)* Изворна вредност ставке дневника догађаја.|
|^|**severity**|*number*|*(опционо)* Вредност озбиљности ставке дневника догађаја.|
|^|**eventid**|*number*|*(опционо)* Вредност ИД-а догађаја ставке дневника догађаја.|
|^|**state**|*string*|*(опционо)* Стање ставке:<br>**0**, *ITEM\_STATE\_NORMAL*<br>**1**, *ITEM\_STATE\_NOTSUPPORTED*|
|^|**lastlogsize**|*number*|*(опционо)* Последња величина евиденције ставки типа дневника.|
|^|**mtime**|*number*|*(опционо)* Време измене ставки типа дневника.|
|**discovery data**|<|*array*|*(опционо)* Низ објеката података о откривању.|
| |**clock**|*number*|Временска ознака података о откривању.|
|^|**druleid**|*number*|Идентификатор правила откривања.|
|^|**dcheckid**|*number*|Идентификатор провере откривања или null за податке правила откривања.|
|^|**type**|*number*|Тип провере откривања:<br><br>**-1** подаци правила откривања<br>**0**, *SVC\_SSH* - Провера SSH сервиса<br>**1**, *SVC\_LDAP* - Провера LDAP сервиса<br>**2**, *SVC\_SMTP* - Провера SMTP сервиса<br>**3**, *SVC\_FTP* - Провера FTP сервиса<br>**4**, *SVC\_HTTP* - Провера HTTP сервиса<br>**5**, *SVC\_POP* - Провера POP сервиса<br>**6**, *SVC\_NNTP* - Провера NNTP сервиса<br>**7**, *SVC\_IMAP* - Провера IMAP сервиса<br>**8**, *SVC\_TCP* - Провера доступности TCP порта<br>**9**, *SVC\_AGENT* - Zabbix агент<br>**10**, *SVC\_SNMPv1* - SNMPv1 агент<br>**11**, *SVC\_SNMPv2* - SNMPv2 агент<br>**12**, *SVC\_ICMPPING* - ICMP ping<br>**13**, *SVC\_SNMPv3* - SNMPv3 агент<br>**14**, *SVC\_HTTPS* - Провера HTTPS сервиса<br>**15**, *SVC\_TELNET* - Провера доступности Telnet-а|
|^|**ip**|*string*|IP адреса домаћина.|
|^|**dns**|*string*|DNS име домаћина.|
|^|** port**|* number*|*(опционо)* Број сервисног порта.|
|^|**key\_**|*string*|*(опционо)* Кључ ставке за проверу откривања типа **9** *SVC\_AGENT*|
|^|**value**|*string*|*(опционо)* Вредност примљена од сервиса, може бити празна за већину сервиса.|

|^|**status**|*number*|*(опционо)* Статус сервиса:<br><br>**0**, *DOBJECT\_STATUS\_UP* - Сервис UP<br>**1**, *DOBJECT\_STATUS\_DOWN* - Сервис НЕСТАЈЕ|
|**auto registration**|<|*array*|*(опционо)* Низ објеката података аутоматске регистрације.|
| |**сclock**|*number*|Временска ознака података аутоматске регистрације.|
|^|**host**|*string*|Име домаћина.|
|^|**ip**|*string*|*(опционо)* IP адреса домаћина.|
|^|**dns**|*string**|*(опционо)* DNS име из IP адресе.|
|^|**port**|*string*|*(опционо)* Порт домаћина.|
|^|**host\_metadata**|*string*|*(опционо)* Метаподаци домаћина које је послао агент (на основу параметра конфигурације агента HostMetadata или HostMetadataItem).|
|**tasks**|<|*array*|*(опционо)* Низ задатака.|
| |**type**|*number*|Тип задатка:<br><br>**0**, *ZBX\_TM\_TASK\_PROCESS\_REMOTE\_COMMAND\_RESULT* - резултат удаљене команде|
|^|**status**|*number*|Статус извршења удаљене команде:<br><br>**0**, *ZBX\_TM\_REMOTE\_COMMAND\_COMPLETED* - удаљена команда је успешно завршена<br>**1**, *ZBX\_TM\_REMOTE\_COMMAND\_FAILED* - удаљена команда није успела|
|^|**error**|*string*|*(опционо)* Порука о грешци.|
|^|**parent\_taskid**|*numberј*|ID родитељског задатка.|
|**more**|<|*number*|*(опционо)* 1 - има још података из историје за слање.|
|**clock**|<|*number*|*(опционо)* Временска ознака преноса података (секунде).|
|**ns**|<|*number*|*(опционо)* Временска ознака преноса података (наносекунде).|
|**version**|<|*string*|Верзија проксија (<major>.<minor>.<build>).|
|server→proxy:|<|<|<|
|**response**|<|*string*|Захтев за информације о успеху ('успех' или 'неуспех').|
|**tasks**|<|*array*|*(опционо)* Низ задатака.|
| |**type**|*number*|Тип задатка:<br><br>**1**, *ZBX\_TM\_TASK\_PROCESS\_REMOTE\_COMMAND* - даљинска команда|
|^|** clock**|*број*|Време креирања задатка.|
|^|**ttl**|*number*|Време у секундама након којег задатак истиче.|
|^|** commandtype**|*number*|Тип удаљене команде:<br><br>**0**, *ZBX\_SCRIPT\_TYPE\_CUSTOM\_SCRIPT* - користи прилагођену скрипту<br>**1**, *ZBX\_SCRIPT\_TYPE\_IPMI* - користи IPMI<br>**2**, *ZBX\_SCRIPT\_TYPE\_SSH* - користи SSH<br>**3**, *ZBX\_SCRIPT\_TYPE\_TELNET* - користи Telnet<br>**4**, *ZBX\_SCRIPT\_TYPE\_GLOBAL\_SCRIPT* - користи глобалну скрипту (тренутно функционално еквивалентну прилагођеној скрипти)|
|^|** command**|* string*|Удаљена команда за извршавање.|
|^|**execute\_on**|*number**|Циљ извршавања за прилагођене скрипте:<br><br>**0**, *ZBX\_SCRIPT\_EXECUTE\_ON\_AGENT* - изврши скрипту на агенту<br>**1**, *ZBX\_SCRIPT\_EXECUTE\_ON\_SERVER* - изврши скрипту на серверу<br>**2**, *ZBX\_SCRIPT\_EXECUTE\_ON\_PROXY* - изврши скрипту на проксију|
|^|**port**|*number*|*(опционо)* Порт за Telnet и SSH команде.|
|^|**authtype**|*number*|*(опционо)* Тип аутентификације за SSH команде.|
|^|** username**|*string*|*(опционо)* Корисничко име за Telnet и SSH команде.|
|^|** password**|*string*|*(опционо)* Лозинка за Telnet и SSH команде.|
|^|**publickey**|*string*|*(опционо)* Јавни кључ за SSH команде.|
|^|**privatekey**|*string*|*(опционо)* Приватни кључ за SSH команде.|
|^|**parent\_taskid**|*number*|ID родитељског задатка.|
|^|**hostid**|*number*|ID циљног домаћина.|

Пример:

server→proxy:

```json
{
     "request": "proxy data"
}
```

proxy→server:

```json
{
    "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.0.0"
}
```

server→proxy:

``` {.javascript}
{
  "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
      }
  ]
}
```

[comment]: # ({/74b1e336-c348e5d9})

[comment]: # ({new-cecd61c8})
##### Tasks request

The `proxy tasks` exchange handles delivery and acknowledgement of remote command tasks between the server and a passive proxy. When the server polls the proxy for task results, it sends an empty `proxy tasks` request at the interval defined by `ProxyDataFrequency`. The proxy responds with its current version and any pending task results (including timestamps). The server then acknowledges receipt by returning a `response` and may include new tasks for the proxy to execute.

|name|<|value type|description|
|-|----------|----------|----------------------------------------|
|server→proxy:|<|<|<|
|**request**|<|*string*|'proxy tasks'|
|proxy→server:|<|<|<|
|**version**|<|*string*|Proxy version (<major>.<minor>.<build>).|
|**clock**|<|*number*|*(optional)* Data transfer timestamp (seconds).|
|**ns**|<|*number*|*(optional)* Data transfer timestamp (nanoseconds).|
|server→proxy:|<|<|<|
| **response** | <   | *string* | Request success information ('success' or 'failed'). |

Example:

server→proxy:

```json
{
  "request":"proxy tasks"
}
```

proxy→server:

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

server→proxy:

```json
{
  "response":"success"
}
```

[comment]: # ({/new-cecd61c8})

[comment]: # ({967ea060-967ea060})
#### Активни прокси

[comment]: # ({/967ea060-967ea060})

[comment]: # ({681bfa79-bed30a3b})
##### Захтев за конфигурацију

Захтев за `proxy config` шаље активни прокси ради добијања података о конфигурацији проксија. Овај захтев се шаље сваких `ProxyConfigFrequency` (параметар конфигурације проксија) секунди.

| name | <   | <   | <   | <   | value type | description |
|-|-|-|-|----------|----------|----------------------------------------|
| proxy→server: | <   | <   | <   | <   | <   | <   |
| **request** | <   | <   | <   | <   | *string* | 'proxy config' |
| **host** | <   | <   | <   | <   | *string<br>* | Име проксија. |
| **version** | <   | <   | <   | <   | *string* | Верзија проксија (\<major>.\<minor>.\<build>). |
| **session** | <   | <   | <   | <   | *string* | Токен сесије конфигурације проксија. |
| **config_revision** | <   | <   | <   | <   | *number* | Ревизија конфигурације проксија. |
|     | <   | <   | <   | <   | <   | <   |
| server→proxy: | <   | <   | <   | <   | <   | <   |
| **fullsync** | <   | <   | <   | <   | *number* | 1 - ако се шаљу комплетни подаци о конфигурацији, у супротном одсуствују (опционо). |
| **data** | <   | <   | <   | <   | *array* | Објекат табеле података. Одсутан ако конфигурација није промењена (опционо). |
|     | **\<table>** | <   | <   | <   | *object* | Један или више објеката са \<table> подацима (опционо, у зависности од промена). |
| ^   |     | **fields** | <   | <   | *array* | Низ имена поља. |
| ^   | ^   |     | -   | <   | *string* | Назив поља. |
| ^   | ^   | **data** | <   | <   | *array* | Низ редова. |
| ^   | ^   |     | -   | <   | *array* | Низ колона. |
| ^   | ^   | ^   |     | -   | *string*,*number* | Вредност колоне са типом који зависи од типа колоне у шеми базе података. |
|     | <   | <   | <   | <   | <   | <   |
| **macro.secrets** | <   | <   | <   | <  | *object* | Тајне информације о макроима, одсутне ако нема промена у макроима трезора (опционо). |
| **config_revision** | <   | <   | <   | <   | *number* | Ревизија кеша конфигурације - шаље се са подацима о конфигурацији (опционо). |
| **del_hostids** | <   | <   | <   | <   | *array* | Низ уклоњених hostids-ова (опционо). |
|     | -   | <   | <   | <   | *number* | Идентификатор домаћина. |
| **del_macro_hostids** | <   | <   | <   | <   | *array* | Низ hostids-ова са уклоњеним свим макроима (опционо). |
|     | -   | <   | <   | <   | *number* | Идентификатор домаћина. |

Пример:

proxy→server:

```json
{
       "request": "proxy config",
       "host": "Zabbix proxy",
       "version":"7.0.0",
       "session": "fd59a09ff4e9d1fb447de1f04599bcf6",
       "config_revision": 0
}
```

server→proxy:

```json
{
	"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
}
```

[comment]: # ({/681bfa79-bed30a3b})

[comment]: # ({f7ffbeef-ef0ba621})
##### Захтев за податке

Захтев за `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*|Доступност интерфејса:<br><br>**0**, *INTERFACE\_AVAILABLE\_UNKNOWN* - unknown<br>**1**, *INTERFACE\_AVAILABLE\_TRUE* - available<br>**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)* Изворна вредност ставке дневника догађаја.|
|^|**severity**|*number*|*(optional)* Вредност озбиљности ставке дневника догађаја.|
|^|**eventid**|*number*|*(optional)* Вредност ИД-а догађаја ставке дневника догађаја.|
|^|**state**|*string*|*(optional)* Item state:<br>**0**, *ITEM\_STATE\_NORMAL*<br>**1**, *ITEM\_STATE\_NOTSUPPORTED*|
|^|**lastlogsize**|*number*|*(optional)* Последња величина евиденције ставки типа евиденције.|
|^|**mtime**|*number*|*(optional)* Време измене ставки типа дневника.|
|**discovery data**|<|*array*|*(optional)* Низ објеката података за откривање.|
| |**clock**|*number*|Временска ознака података откривања.|
|^|**druleid**|*number*|Идентификатор правила откривања.|
|^|**dcheckid**|*number*|Идентификатор провере откривања или null за податке правила откривања.|
|^|**type**|*number*|Discovery check type:<br><br>**-1** подаци правила откривања<br>**0**, *SVC\_SSH* - SSH провера сервиса<br>**1**, *SVC\_LDAP* - LDAP провера сервиса<br>**2**, *SVC\_SMTP* - SMTP провера сервиса<br>**3**, *SVC\_FTP* - FTP провера сервиса<br>**4**, *SVC\_HTTP* - HTTP провера сервиса<br>**5**, *SVC\_POP* - POP провера сервиса<br>**6**, *SVC\_NNTP* - NNTP провера сервиса<br>**7**, *SVC\_IMAP* - IMAP провера сервиса<br>**8**, *SVC\_TCP* - Провера доступности TCP порта<br>**9**, *SVC\_AGENT* - Zabbix агент<br>**10**, *SVC\_SNMPv1* - SNMPv1 агент<br>**11**, *SVC\_SNMPv2* - SNMPv2 агент<br>**12**, *SVC\_ICMPPING* - ICMP пинг<br>**13**, *SVC\_SNMPv3* - SNMPv3 агент<br>**14**, *SVC\_HTTPS* - HTTPS провера сервиса<br>**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)* Статус услуге:<br><br>**0**, *DOBJECT\_STATUS\_UP* - Service UP<br>**1**, *DOBJECT\_STATUS\_DOWN* - Service 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*|Task type:<br><br>**0**, *ZBX\_TM\_TASK\_PROCESS\_REMOTE\_COMMAND\_RESULT* - резултат удаљене команде|
|^|**status**|*number*|Статус извршења даљинске команде:<br><br>**0**, *ZBX\_TM\_REMOTE\_COMMAND\_COMPLETED* - Даљинска команда је успешно завршена<br>**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*|Захтевајте информације о успеху ('успех' или 'неуспех').|
|**upload**|<|*string*|Контрола отпремања за историјске податке (историја, аутоматска регистрација, доступност домаћина, откривање мреже).<br><br>Могуће вредности:<br>**enabled** - нормалан рад<br>**disabled** - Сервер не прихвата податке (могуће због прекорачења ограничења интерне кеш меморије)|
|**tasks**|<|*array*|*(optional)* Низ задатака.|
| |**type**|*number*|Task type:<br><br>**1**, *ZBX\_TM\_TASK\_PROCESS\_REMOTE\_COMMAND* - даљинска команда|
|^|**clock**|*number*|Време креирања задатка.|
|^|**ttl**|*number*|Време у секундама након којег задатак истиче.|
|^|**commandtype**|*number*|Тип даљинске команде:<br><br>**0**, *ZBX\_SCRIPT\_TYPE\_CUSTOM\_SCRIPT* - use custom script<br>**1**, *ZBX\_SCRIPT\_TYPE\_IPMI* - use IPMI<br>**2**, *ZBX\_SCRIPT\_TYPE\_SSH* - use SSH<br>**3**, *ZBX\_SCRIPT\_TYPE\_TELNET* - use Telnet<br>**4**, *ZBX\_SCRIPT\_TYPE\_GLOBAL\_SCRIPT* - користи глобалну скрипту (тренутно функционално еквивалентну прилагођеној скрипти)|
|^|**command**|*string*|Даљинска команда за извршавање.|
|^|**execute\_on**|*number*|Циљ извршавања за прилагођене скрипте:<br><br>**0**, *ZBX\_SCRIPT\_EXECUTE\_ON\_AGENT* - изврши скрипту на агенту<br>**1**, *ZBX\_SCRIPT\_EXECUTE\_ON\_SERVER* - изврши скрипту на серверу<br>**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 циљног домаћина.|

Example:

proxy→server:

```json
{
	"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
}
```

server→proxy:

```json
{
	"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
	}]
}
```

[comment]: # ({/f7ffbeef-ef0ba621})
