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

#### Обзор

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

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

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

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

|имя|<|<|<|тип значения|описание|
|------|-|-|-|-----------------------|----------------|
|сервер→прокси:|<|<|<|<|<|
|**request**|<|<|<|*строка*|'proxy config'|
|**<таблица>**|<|<|<|*объект*|один или несколько объектов с данными из <таблицы>|
|<|**fields**|<|<|*массив*|массив имен полей|
|<|<|\-|<|*строка*|имя поля|
|<|**data**|<|<|*массив*|массив строк|
|<|<|\-|<|*массив*|массив колонок|
|<|<|<|\-|*строка*,*число*|значение колонки с типом, который зависит от типа колонки в схеме базы данных|
|прокси→сервер:|<|<|<|<|<|
|**response**|<|<|<|*строка*|информация успешности запроса ('success' или 'failed')|

Пример:

сервер→прокси:

``` {.javascript}
{
    "globalmacro":{
        "fields":[
            "globalmacroid",
            "macro",
            "value"
        ],
        "data":[
            [
                2,
                "{$SNMP_COMMUNITY}",
                "public"
            ]
        ]
    },
    "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":[
            [
                10001,
                "Template OS Linux",
                3,
                -1,
                2,
                "",
                "",
                "Template OS Linux",
                1,
                1,
                "",
                "",
                "",
                ""
            ],
            [
                10050,
                "Template App Zabbix Agent",
                3,
                -1,
                2,
                "",
                "",
                "Template App Zabbix Agent",
                1,
                1,
                "",
                "",
                "",
                ""
            ],
            [
                10105,
                "Logger",
                0,
                -1,
                2,
                "",
                "",
                "Logger",
                1,
                1,
                "",
                "",
                "",
                ""
            ]
        ]
    },
    "interface":{
        "fields":[
            "interfaceid",
            "hostid",
            "main",
            "type",
            "useip",
            "ip",
            "dns",
            "port",
            "bulk"
        ],
        "data":[
            [
                2,
                10105,
                1,
                1,
                1,
                "127.0.0.1",
                "",
                "10050",
                1
            ]
        ]
    },
    ...
}
```

прокси→сервер:

``` {.javascript}
{
  "response": "success"
}
```

##### Запрос доступности узлов сети

Запрос `host availability` используется для получения данных о
доступности узлов сети с прокси. Этот запрос отправляется каждые
`ProxyDataFrequency` (параметр конфигурации сервер) секунды.

|имя|<|тип значения|описание|
|------|-|-----------------------|----------------|
|сервер→прокси:|<|<|<|
|**request**|<|*строка*|'host availability'|
|прокси→сервер:|<|<|<|
|**data**|<|*массив*|массив объектов с данными о доступности узлов сети|
|<|**hostid**|*число*|идентификатор узла сети|
|<|**available**|*число*|доступность Zabbix агента<br><br>**0**, *HOST\_AVAILABLE\_UNKNOWN* - неизвестно<br>**1**, *HOST\_AVAILABLE\_TRUE* - доступен<br>**2**, *HOST\_AVAILABLE\_FALSE* - недоступен|
|<|**error**|*строка*|сообщение об ошибке Zabbix агента или пустая строка|
|<|**snmp\_available**|*число*|доступность SNMP агента<br><br>**0**, *HOST\_AVAILABLE\_UNKNOWN* - неизвестно<br>**1**, *HOST\_AVAILABLE\_TRUE* - доступен<br>**2**, *HOST\_AVAILABLE\_FALSE* - недоступен|
|<|**snmp\_error**|*строка*|сообщение об ошибке SNMP агента или пустая строка|
|<|**ipmi\_available**|*число*|доступность IPMI агента<br><br>**0**, *HOST\_AVAILABLE\_UNKNOWN* - неизвестно<br>**1**, *HOST\_AVAILABLE\_TRUE* - доступен<br>**2**, *HOST\_AVAILABLE\_FALSE* - недоступен|
|<|**ipmi\_error**|*строка*|сообщение об ошибке IMPI агента или пустая строка|
|<|**jmx\_available**|*число*|доступность JMX агента<br><br>**0**, *HOST\_AVAILABLE\_UNKNOWN* - неизвестно<br>**1**, *HOST\_AVAILABLE\_TRUE* - доступен<br>**2**, *HOST\_AVAILABLE\_FALSE* - недоступен|
|<|**jmx\_error**|*строка*|сообщение об ошибке JMX агента или пустая строка|
|сервер→прокси:|<|<|<|
|**response**|<|*строка*|информация успешности запроса ('success' или 'failed')|

Пример:

сервер→прокси:

``` {.javascript}
{
  "request": "host availability"
}
```

прокси→сервер:

``` {.javascript}
{
  "data": [
    {
      "hostid": 10106,
      "available": 1,
      "error": "",
      "snmp_available": 0,
      "snmp_error": "",
      "ipmi_available": 0,
      "ipmi_error": "",
      "jmx_available": 0,
      "jmx_error": ""
    },
    {
      "hostid": 10107,
      "available": 1,
      "error": "",
      "snmp_available": 0,
      "snmp_error": "",
      "ipmi_available": 0,
      "ipmi_error": "",
      "jmx_available": 0,
      "jmx_error": ""
    }
  ]
}
```

сервер→прокси:

``` {.javascript}
{
  "response": "success"
}
```

##### Запрос данных истории

Запрос `history data` используется данных истории по элементам данных с
прокси. Этот запрос отправляется каждые `ProxyDataFrequency` (параметр
конфигурации сервера) секунд.

|имя|<|тип значения|описание|
|------|-|-----------------------|----------------|
|сервер→прокси:|<|<|<|
|**request**|<|*строка*|'history data'|
|прокси→сервер:|<|<|<|
|**data**|<|*массив*|массив объектов данных истории|
|<|**host**|*число*|идентификатор прокси|
|<|**key**|*число*|ключ элемента данных|
|<|**clock**|*число*|штамп времени значения элемента данных (секунды)|
|<|**ns**|*число*|штамп времени значения элемента данных (наносекунды)|
|<|**value**|*строка*|*(опционален)* значение элемента данных|
|<|**timestamp**|*число*|*(опционален)* штамп времени элементов данных журнального типа|
|<|**source**|*строка*|*(опционален)* значение источника eventlog элемента данных|
|<|**severity**|*число*|*(опционален)* значение важности eventlog элемента данных|
|<|**eventid**|*число*|*(опционален)* значение eventid eventlog элемента данных|
|<|**state**|*строка*|*(опционален)* статус элемента данных<br>**0**, *ITEM\_STATE\_NORMAL*<br>**1**, *ITEM\_STATE\_NOTSUPPORTED*|
|<|**lastlogsize**|*число*|*(опционален)* последний известный размер журнала элемента данных журнального типа|
|<|**mtime**|*число*|*(опционален)* время модификации элемента данных журнального типа|
|**clock**|<|*число*|штамп времени передачи данных (секунды)|
|**ns**|<|*число*|штамп времени передачи данных (наносекунды)|
|сервер→прокси:|<|<|<|
|**response**|<|*строка*|информация успешности запроса ('success' или 'failed')|

Пример:

сервер→прокси:

``` {.javascript}
{
  "request": "history data"
}
```

прокси→сервер:

``` {.javascript}
{
    "data":[
        {
            "host":"Logger1",
            "key":"system.cpu.switches",
            "clock":1478609647,
            "ns":332510044,
            "value":"52956612"
        },
        {
            "host":"Logger2",
            "key":"net.if.in[vboxnet0]",
            "clock":1478609647,
            "ns":330690279,
            "state":1,
            "value":"Cannot find information for this network interface in /proc/net/dev."
        }
    ],
    "clock":1478609648,
    "ns":157729208
}
```

сервер→прокси:

``` {.javascript}
{
  "response": "success"
}
```

##### Запрос данных обнаружения

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

|имя|<|тип значения|описание|
|------|-|-----------------------|----------------|
|сервер→прокси:|<|<|<|
|**request**|<|*строка*|'discovery data'|
|прокси→сервер:|<|<|<|
|**data**|<|*массив*|массив объектов данных обнаружения|
|<|**clock**|*число*|штамп времени данных обнаружения|
|<|**druleid**|*число*|идентификатор правила обнаружения|
|<|**dcheckid**|*число*|идентификатор проверки обнаружения или null для данных правила обнаружения|
|<|**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**|*строка*|IP адрес хоста|
|<|**dns**|*строка*|DNS имя хоста|
|<|**port**|*число*|*(опционален)* номер порта сервиса|
|<|**key\_**|*строка*|*(опционален)* ключ элемента данных для проверки обнаружения с типом **9** *SVC\_AGENT*|
|<|**value**|*строка*|*(опционален)* полученное значение от сервиса, может быть пустым для большинства сервисов|
|<|**status**|*число*|*(опционален)* состояние сервиса:<br><br>**0**, *DOBJECT\_STATUS\_UP* - Сервис ДОСТУПЕН<br>**1**, *DOBJECT\_STATUS\_DOWN* - Сервис НЕДОСТУПЕН|
|сервер→прокси:|<|<|<|
|**response**|<|*строка*|информация успешности запроса ('success' или 'failed')|

Пример:

сервер→прокси:

``` {.javascript}
{
  "request": "discovery data"
}
```

прокси→сервер:

``` {.javascript}
{
    "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
        }
    ],
    "clock":1478608768
}

```

сервер→прокси:

``` {.javascript}
{
  "response": "success"
}
```

##### Запрос данных авторегистрации

Запрос `auto registration` используется для получения данных
авторегистрации агентов с прокси. Этот запрос отправляется каждые
`ProxyDataFrequency` (параметр конфигурации сервера) секунд.

|имя|<|тип значения|описание|
|------|-|-----------------------|----------------|
|сервер→прокси:|<|<|<|
|**request**|<|*строка*|'auto registration'|
|прокси→сервер:|<|<|<|
|**data**|<|*массив*|массив объектов данных авторегистрации|
|<|**clock**|*число*|штамп времени данных авторегистрации|
|<|**host**|*строка*|имя хоста|
|<|**ip**|*строка*|*(опционален)* IP адрес хоста|
|<|**dns**|*строка*|*(опционален)* разрешенное DNS имя с IP адреса|
|<|**port**|*строка*|*(опционален)* порт хоста|
|<|**host\_metadata**|*строка*|*(опционален)* метаданные хоста отправленные агентом (на основе HostMetadata или HostMetadataItem параметров конфигурации агента)|
|сервре→прокси:|<|<|<|
|**response**|<|*строка*|информация успешности запроса ('success' или 'failed')|

Пример:

сервер→прокси:

``` {.javascript}
{
  "request": "auto registration"
}
```

сервер→прокси:

``` {.javascript}
{
    "data": [
        {
            "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"
        }
    ],
    "clock": 1478608390
}
```

сервер→прокси:

``` {.javascript}
{
  "response": "success"
}
```

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

##### Запрос доступности прокси

Запрос `proxy heartbeat` отправляется прокси для сообщения что этот
прокси работает. Этот запрос отправляется каждые `HeartbeatFrequency`
(параметр конфигурации прокси) секунд.

|имя|<|тип значения|описание|
|------|-|-----------------------|----------------|
|прокси→сервер:|<|<|<|
|**request**|<|*строка*|'proxy heartbeat'|
|**host**|<|*строка*|имя прокси|
|сервер→прокси:|<|<|<|
|**response**|<|*строка*|информация успешности запроса ('success' или 'failed')|

прокси→сервер:

``` {.javascript}
{
   "request": "proxy heartbeat",
   "host": "Proxy #12"
}
```

сервер→прокси:

``` {.javascript}
{
  "response": "success"
}
```

##### Proxy config request

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

|имя|<|<|<|тип значения|описание|
|------|-|-|-|-----------------------|----------------|
|прокси→сервер:|<|<|<|<|<|
|**request**|<|<|<|*строка*|'proxy config'|
|**host**|<|<|<|*строка*|имя прокси|
|сервер→прокси:|<|<|<|<|<|
|**request**|<|<|<|*строка*|'proxy config'|
|**<таблица>**|<|<|<|*объект*|один или несколько объектов с данными из <таблицы>|
|<|**fields**|<|<|*массив*|массив имен полей|
|<|<|\-|<|*строка*|имя поля|
|<|**data**|<|<|*массив*|массив строк|
|<|<|\-|<|*массив*|массив колонок|
|<|<|<|\-|*строка*,*число*|значение колонки с типом, который зависит от типа колонки в схеме базы данных|
|прокси→сервер:|<|<|<|<|<|
|**response**|<|<|<|*строка*|информация успешности запроса ('success' или 'failed')|

Пример:

прокси→сервер:

``` {.javascript}
{
  "request": "proxy config",
  "host": "Proxy #12",
}
```

сервер→прокси:

``` {.javascript}
{
    "globalmacro":{
        "fields":[
            "globalmacroid",
            "macro",
            "value"
        ],
        "data":[
            [
                2,
                "{$SNMP_COMMUNITY}",
                "public"
            ]
        ]
    },
    "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":[
            [
                10001,
                "Template OS Linux",
                3,
                -1,
                2,
                "",
                "",
                "Template OS Linux",
                1,
                1,
                "",
                "",
                "",
                ""
            ],
            [
                10050,
                "Template App Zabbix Agent",
                3,
                -1,
                2,
                "",
                "",
                "Template App Zabbix Agent",
                1,
                1,
                "",
                "",
                "",
                ""
            ],
            [
                10105,
                "Logger",
                0,
                -1,
                2,
                "",
                "",
                "Logger",
                1,
                1,
                "",
                "",
                "",
                ""
            ]
        ]
    },
    "interface":{
        "fields":[
            "interfaceid",
            "hostid",
            "main",
            "type",
            "useip",
            "ip",
            "dns",
            "port",
            "bulk"
        ],
        "data":[
            [
                2,
                10105,
                1,
                1,
                1,
                "127.0.0.1",
                "",
                "10050",
                1
            ]
        ]
    },
    ...
}
```

прокси→сервер:

``` {.javascript}
{
  "response": "success"
}
```

##### Запрос доступности узлов сети

Запрос `host availability` отправляется прокси для предоставления данных
о доступности узлов сети. Этот запрос отправляется каждые
`DataSenderFrequency` (параметр конфигурации прокси) секунд.

|имя|<|тип значения|описание|
|------|-|-----------------------|----------------|
|прокси→сервер:|<|<|<|
|**request**|<|*строка*|'host availability'|
|**host**|<|*строка*|имя прокси|
|**data**|<|*массив*|массив объектов с данными о доступности узлов сети|
|<|**hostid**|*число*|идентификатор узла сети|
|<|**available**|*число*|доступность Zabbix агента<br><br>**0**, *HOST\_AVAILABLE\_UNKNOWN* - неизвестно<br>**1**, *HOST\_AVAILABLE\_TRUE* - доступен<br>**2**, *HOST\_AVAILABLE\_FALSE* - недоступен|
|<|**error**|*строка*|сообщение об ошибке Zabbix агента или пустая строка|
|<|**snmp\_available**|*число*|доступность SNMP агента<br><br>**0**, *HOST\_AVAILABLE\_UNKNOWN* - неизвестно<br>**1**, *HOST\_AVAILABLE\_TRUE* - доступен<br>**2**, *HOST\_AVAILABLE\_FALSE* - недоступен|
|<|**snmp\_error**|*строка*|сообщение об ошибке SNMP агента или пустая строка|
|<|**ipmi\_available**|*число*|доступность IPMI агента<br><br>**0**, *HOST\_AVAILABLE\_UNKNOWN* - неизвестно<br>**1**, *HOST\_AVAILABLE\_TRUE* - доступен<br>**2**, *HOST\_AVAILABLE\_FALSE* - недоступен|
|<|**ipmi\_error**|*строка*|сообщение об ошибке IMPI агента или пустая строка|
|<|**jmx\_available**|*число*|доступность JMX агента<br><br>**0**, *HOST\_AVAILABLE\_UNKNOWN* - неизвестно<br>**1**, *HOST\_AVAILABLE\_TRUE* - доступен<br>**2**, *HOST\_AVAILABLE\_FALSE* - недоступен|
|<|**jmx\_error**|*строка*|сообщение об ошибке JMX агента или пустая строка|
|сервер→прокси:|<|<|<|
|**response**|<|*строка*|информация успешности запроса ('success' или 'failed')|

Пример:

прокси→сервер:

``` {.javascript}
{
  "request": "host availability",
  "host": "Proxy #12", 
  "data": [
    {
      "hostid": 10106,
      "available": 1,
      "error": "",
      "snmp_available": 0,
      "snmp_error": "",
      "ipmi_available": 0,
      "ipmi_error": "",
      "jmx_available": 0,
      "jmx_error": ""
    },
    {
      "hostid": 10107,
      "available": 1,
      "error": "",
      "snmp_available": 0,
      "snmp_error": "",
      "ipmi_available": 0,
      "ipmi_error": "",
      "jmx_available": 0,
      "jmx_error": ""
    }
  ]
}
```

сервер→прокси:

``` {.javascript}
{
  "response": "success"
}
```

##### Запрос данных истории

Запрос `history data` отправляется прокси для предоставления данных
истории по элементам данных. Этот запрос отправляется каждые
`DataSenderFrequency` (параметр конфигурации прокси) секунд.

|имя|<|тип значения|описание|
|------|-|-----------------------|----------------|
|прокси→сервер:|<|<|<|
|**request**|<|*строка*|'history data'|
|**host**|<|*строка*|имя прокси|
|**data**|<|*массив*|массив объектов данных истории|
|<|**host**|*число*|идентификатор прокси|
|<|**key**|*число*|ключ элемента данных|
|<|**clock**|*число*|штамп времени значения элемента данных (секунды)|
|<|**ns**|*число*|штамп времени значения элемента данных (наносекунды)|
|<|**value**|*строка*|*(опционален)* значение элемента данных|
|<|**timestamp**|*число*|*(опционален)* штамп времени элементов данных журнального типа|
|<|**source**|*строка*|*(опционален)* значение источника eventlog элемента данных|
|<|**severity**|*число*|*(опционален)* значение важности eventlog элемента данных|
|<|**eventid**|*число*|*(опционален)* значение eventid eventlog элемента данных|
|<|**state**|*строка*|*(опционален)* статус элемента данных<br>**0**, *ITEM\_STATE\_NORMAL*<br>**1**, *ITEM\_STATE\_NOTSUPPORTED*|
|<|**lastlogsize**|*число*|*(опционален)* последний известный размер журнала элемента данных журнального типа|
|<|**mtime**|*число*|*(опционален)* время модификации элемента данных журнального типа|
|**clock**|<|*число*|штамп времени передачи данных (секунды)|
|**ns**|<|*число*|штамп времени передачи данных (наносекунды)|
|сервер→прокси:|<|<|<|
|**response**|<|*строка*|информация успешности запроса ('success' или 'failed')|

Пример:

прокси→сервер:

``` {.javascript}
{
    "request": "history data",
    "host": "Proxy #12", 
    "data":[
        {
            "host":"Logger1",
            "key":"system.cpu.switches",
            "clock":1478609647,
            "ns":332510044,
            "value":"52956612"
        },
        {
            "host":"Logger2",
            "key":"net.if.in[vboxnet0]",
            "clock":1478609647,
            "ns":330690279,
            "state":1,
            "value":"Cannot find information for this network interface in /proc/net/dev."
        }
    ],
    "clock":1478609648,
    "ns":157729208
}
```

сервер→прокси:

``` {.javascript}
{
  "response": "success"
}
```

##### Запрос данных обнаружения

Запрос `discovery data` отправляется прокси для предоставления данных о
сетевых обнаружениях. Этот запрос отправляется каждые
`DataSenderFrequency` (параметр конфигурации прокси) секунд.

|имя|<|тип значения|описание|
|------|-|-----------------------|----------------|
|прокси→сервер:|<|<|<|
|**request**|<|*строка*|'discovery data'|
|**host**|<|*строка*|имя прокси|
|**data**|<|*массив*|массив объектов данных обнаружения|
|<|**clock**|*число*|штамп времени данных обнаружения|
|<|**druleid**|*число*|идентификатор правила обнаружения|
|<|**dcheckid**|*число*|идентификатор проверки обнаружения или null для данных правила обнаружения|
|<|**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**|*строка*|IP адрес хоста|
|<|**dns**|*строка*|DNS имя хоста|
|<|**port**|*число*|*(опционален)* номер порта сервиса|
|<|**key\_**|*строка*|*(опционален)* ключ элемента данных для проверки обнаружения с типом **9** *SVC\_AGENT*|
|<|**value**|*строка*|*(опционален)* полученное значение от сервиса, может быть пустым для большинства сервисов|
|<|**status**|*число*|*(опционален)* состояние сервиса:<br><br>**0**, *DOBJECT\_STATUS\_UP* - Сервис ДОСТУПЕН<br>**1**, *DOBJECT\_STATUS\_DOWN* - Сервис НЕДОСТУПЕН|
|сервер→прокси:|<|<|<|
|**response**|<|*строка*|информация успешности запроса ('success' или 'failed')|

Пример:

прокси→сервер:

``` {.javascript}
{
   "request": "discovery data",
   "host": "Proxy #12", 
   "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
        }
    ],
    "clock":1478608768
}

```

сервер→прокси:

``` {.javascript}
{
  "response": "success"
}
```

##### Запрос данных авторегистрации

Запрос `auto registration` отправляется прокси для предоставления данных
авторегистрации агентов с прокси. Этот запрос отправляется каждые
`DataSenderFrequency` (параметр конфигурации прокси) секунд.

|имя|<|тип значения|описание|
|------|-|-----------------------|----------------|
|прокси→сервер:|<|<|<|
|**request**|<|*строка*|'auto registration'|
|**host**|<|*строка*|имя прокси|
|**data**|<|*массив*|массив объектов данных авторегистрации|
|<|**clock**|*число*|штамп времени данных авторегистрации|
|<|**host**|*строка*|имя хоста|
|<|**ip**|*строка*|*(опционален)* IP адрес хоста|
|<|**dns**|*строка*|*(опционален)* разрешенное DNS имя с IP адреса|
|<|**port**|*строка*|*(опционален)* порт хоста|
|<|**host\_metadata**|*строка*|*(опционален)* метаданные хоста отправленные агентом (на основе HostMetadata или HostMetadataItem параметров конфигурации агента)|
|сервер→прокси:|<|<|<|
|**response**|<|*строка*|информация успешности запроса ('success' или 'failed')|

прокси→сервер:

``` {.javascript}
{
   "request": "auto registration",
   "host": "Proxy #12", 
   "data": [
        {
            "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"
        }
    ],
    "clock": 1478608390
}
```

сервер→прокси:

``` {.javascript}
{
  "response": "success"
}
```
