[comment]: # translation:outdated

[comment]: # ({a6d31bd3-a6d31bd3})
# 2 Провере пасивног и активног агента

[comment]: # ({/a6d31bd3-a6d31bd3})

[comment]: # ({1b7bc303-7bd0dd61})
#### Преглед

Ова секција пружа детаље о пасивним и активним проверама које врши
[Zabbix агент](/manual/concepts/agent) и [Zabbix агент 2](/manual/concepts/agent2).

Zabbix користи комуникациони протокол заснован на JSON-у за комуникацију са
агентима.

Zabbix агент и Zabbix агент 2 протоколи су уједињени од Zabbix 7.0 верзије. Разлика између захтева/одговора Zabbix агента и Zabbix агента 2 изражена је вредношћу ознаке "варијанта".

[comment]: # ({/1b7bc303-7bd0dd61})

[comment]: # ({d8d4089b-e6db8dd6})
#### Пасивне провере

Пасивна провера је једноставан захтев за подацима. Zabbix сервер или прокси тражи
неке податке (на пример, оптерећење процесора) и Zabbix агент шаље назад
резултат серверу.

Пасивне провере се извршавају асинхроно - није потребно добити одговор на један захтев пре него што се покрену друге провере. Разрешавање DNS-а је такође асинхроно.

Агентски полер ће покушати да се повеже са свим адресама које врати DNS претрага. Ово осигурава да ако једна IP адреса није доступна, полер ће покушати са следећом доступном адресом, повећавајући вероватноћу успешне везе. Ово побољшање се односи и на Zabbix сервер и на прокси.

Максимална конкурентност асинхроних провера је 1000 (дефинисано помоћу [MaxConcurrentChecksPerPoller](/manual/appendix/config/zabbix_server#maxconcurrentchecsperpoller)).

Број асинхроних агентских полерса дефинисан је параметром [StartAgentPollers](/manual/appendix/config/zabbix_server#startagentpollers).

**Захтев сервера**

За дефиницију заглавља и дужине података погледајте [детаљи
протокол](/manual/appendix/protocols/header_datalen).

```json
{
   "request": "passive checks",
   "data": [
   {
   "key": "agent.version",
   "timeout": 3
   }
   ]
}
```

| Field |<| Type | Mandatory | Value |
|-|-------|--|----------------------|
| request |<| _string_ | yes | `"passive checks"` |
| data |<| _array of object_ | yes  | Пасивна ставка провере. |
| | key | _string_ | yes | Кључ ставке са проширеним макроима. |
|^| timeout | _string_ | yes | Време чекања ставке. |

**Одговор агента**

```json
{
   "верзија": "7.4.0",
   "варијанта": 2,
   "подаци": [
   {
   "вредност": "7.4.0"
   }
   ]
}
```

| Field |<| Type | Mandatory | Value |
|-|------|--|----------------------|
| version |<| _string_ | yes  | Број верзије агента. |
| variant |<| _number_ | yes | Варијанта агента (*1* - Zabbix агент, *2* - Zabbix агент 2). |
| data |<| _array of object_ | yes | Садржи резултат провере. |
| | value | _string_ | no | Вредност ставке ако је провера била успешна. |
| | error | _string_ | no | Порука о грешци ако провера није била успешна. |

На пример, за подржане ставке:

1.   Сервер отвара TCP везу
2.   Сервер шаље **<HEADER><DATALEN>{"request":"passive checks","data":[{"key":"agent.ping","timeout":3}]}**
3.   Агент чита захтев и одговара са
**<HEADER><DATALEN>{"version":"7.4.0","variant":2,"data":[{"value":1}]}**
4.   Сервер обрађује податке да би добио вредност, '1' у нашем случају
5.   TCP веза је затворена

За неподржане ставке:

1.   Сервер отвара TCP везу
2.   Сервер шаље **<HEADER><DATALEN>{"request":"passive checks","data":[{"key":"vfs.fs.size\[/nono\]","timeout":3}]}**
3.   Агент чита захтев и одговара са
**<HEADER><DATALEN>{"version":"7.4.0","variant":2,"data":[{"error":"Неподржани кључ ставке."}]}**
4.   Сервер обрађује податке, мења стање ставке у није подржано са наведеном поруком о грешци
5.   TCP веза је затворена

[comment]: # ({/d8d4089b-e6db8dd6})

[comment]: # ({241f3b68-d33dfdd3})
##### Прелазак на стари протокол

Да би се осигурало да Zabbix сервер или прокси могу да раде са агентима из верзија пре 7.2, који имају протокол отвореног текста, имплементиран је прелазак на стари протокол.

Пасивне провере се врше коришћењем JSON протокола (7.0 и новије) након поновног покретања или када се промени конфигурација интерфејса.
Ако се не прими валидан JSON као одговор (агент је послао „ZBX_NOTSUPPORTED“), Zabbix ће кеширати интерфејс као стари протокол и **поново покушати** проверу слањем само кључа ставке.

Имајте на уму да ће Zabbix сервер/прокси сваког сата поново покушати да ради са новим протоколом са свим интерфејсима, враћајући се на стари протокол ако је потребно.

[comment]: # ({/241f3b68-d33dfdd3})

[comment]: # ({86593407-ecdd6e8e})
#### Активне провере

Активне провере захтевају сложенију обраду.
Агент прво мора да преузме са сервера/проксија листу ставки и/или [удаљених команди](/manual/config/notifications/action/operation/remote_command) за независну обраду.

Сервери/проксији са којих се преузимају активне провере су наведени у параметру 'ServerActive' агента [конфигурациона датотека](/manual/appendix/config/zabbix_agent2).
Учесталост тражења ових провера је постављена параметром 'RefreshActiveChecks' у истој конфигурационој датотеци.
Међутим, ако освежавање активних провера не успе, поново се покушава након фиксног интервала од 60 секунди.

[comment]: # ({/86593407-ecdd6e8e})

[comment]: # ({e520c471-4c14cd28})
::: notetip
Од Zabbix 6.4, агент (у активном режиму) више не прима од сервера/проксија пуну копију конфигурације једном на свака два минута (подразумевано).
Уместо тога, да би се смањио мрежни саобраћај и коришћење ресурса, инкрементална синхронизација конфигурације се обавља сваких 5 секунди (подразумевано) након чега сервер/прокси пружа пуну копију конфигурације **само** ако је агент још није примио , или се нешто променило у конфигурацији домаћина, глобалним макроима или глобалним регуларним изразима.
:::

[comment]: # ({/e520c471-4c14cd28})

[comment]: # ({63166bda-2f80420a})
Агент затим периодично шаље нове вредности серверу(има).
Ако је агент примио било које [даљинске команде](/manual/config/notifications/action/operation/remote_command) за извршење, биће послат и резултат извршења.
Имајте на уму да је даљинско извршавање команди на активном агенту подржано од Zabbix агента 7.0.

::: notetip
Ако се агент налази иза заштитног зида, можете размотрити 
коришћење само активних провера, јер у том случају не бисте морали да 
мењате поставке заштитног зида како бисте дозволили почетне долазне везе.
:::

[comment]: # ({/63166bda-2f80420a})

[comment]: # ({d3bc574b-d898e135})
##### Добијање листе ставки

**Захтев агента**

Захтев за активне провере се користи за добијање активних провера које ће агент обрадити. 
Овај захтев агент шаље при покретању, а затим у интервалима [RefreshActiveChecks](/manual/appendix/config/zabbix_agent2).

```json
{
   "request": "active checks",
   "host": "Zabbix сервер",
   "host_metadata": "mysql,nginx",
   "interface": "zabbix.server.lan",
   "ip": "159.168.1.1",
   "port": 12050,
   "version": "7.4.0",
   "variant": 2,
   "config_revision": 1,
   "session": "e3dcbd9ace2c9694e1d7bbd030eeef6e"
}
```

| Field | Type | Mandatory | Value |
|-|-|-|--------|
| request | _string_ | yes | `active checks` |
| host | _string_ | yes | Име домаћина. |
| host_metadata | _string_ | no  | Вредност метрике конфигурационог параметра HostMetadata или HostMetadataItem. |
| interface | _string_ | no | Вредност метрике конфигурационог параметра HostInterface или HostInterfaceItem. |
| ip | _string_ | no | Прва IP адреса конфигурационог параметра ListenIP ако је подешена. |
| port | _number_ | no | Вредност конфигурационог параметра ListenPort ако је подешена и није подразумевани порт за слушање агента. |
| version | _string_ | yes | Број верзије агента. |
| variant | _number_ | yes | Варијанта агента (*1* - Zabbix агент, *2* - Zabbix агент 2). |
|config_revision | _number_ | no | Идентификатор конфигурације за [инкрементална синхронизација конфигурације](#active-checks). |
| session | _string_ | no | Идентификатор сесије за [инкрементална синхронизација конфигурације](#active-checks). |

**Одговор сервера**

Одговор активних провера шаље сервер назад агенту након обраде захтева за активне провере.

```json

{
   "response": "success",
   "config_revision": 2,
   "data": [
   {
   "key": "system.uptime",
   "itemid": 1234,
   "delay": "10s",
   "lastlogsize": 0,
   "mtime": 0
   },
   {
   "key": "agent.version",
   "itemid": 5678,
   "delay": "10m",
   "lastlogsize": 0,
   "mtime": 0,
   "timeout": "30s"
   }
   ],
   "commands": [
   {
   "command": "df -h --output=source,size / | awk 'NR>1 {print $2}'",
   "id": 1324,
   "wait": 1
   }
   ]
}
```

| Field |<| Type | Mandatory | Value |
|-|------|--|-----------------------|
| response |<| _string_ | yes | `success` \| `failed` |
|  info |<| _string_ | no  | Информације о грешци у случају неуспеха. |
| data |<| _array of objects_ | no | Активне ставке за проверу. Изоставља се ако је конфигурација домаћина непромењена. |
| | key | _string_ | no | Кључ ставке са проширеним макроима. |
|^| itemid | _number_ | no | Идентификатор ставке. |
|^| delay | _string_ | no  | Интервал ажурирања ставке.<br>Флексибилни/интервали заказивања су подржани од стране и Zabbix агента и Zabbix агента 2 од Zabbix 7.0. |
|^| lastlogsize | _number_ | no | Величина последњег логгизе ставке. |
|^| mtime | _number_ | no | Време истека времена ставке. |
|^| timeout | _string_ | no | Време истека времена ставке. |
| refresh_unsupported |<| _number_ | no | Неподржани интервал освежавања ставке. |
| regexp |<| _array of objects_ | no | Глобални регуларни изрази. |
| | name | _string_ | no | Назив глобалног регуларног израза. |
|^| expression | _string_ | no | Глобални регуларни израз. |
|^| expression_type | _number_ | no | Тип глобалног регуларног израза. |
|^| exp_delimiter | _string_ | no | Разграничник глобалног регуларног израза. |
|^| case_sensitive | _number_ | no | Подешавање осетљивости_на_велика_слова у глобалном регуларном изразу. |
| commands |<| _array of objects_ | no  | Удаљене команде за извршавање. Укључено ако је даљинско извршавање команде покренуто акцијом [операција](/manual/config/notifications/action/operation#operations) или ручним извршавањем [скрипта](/manual/web_interface/frontend_sections/alerts/scripts). Имајте на уму да је даљинско извршавање команде на активном агенту подржано од Zabbix агента 7.0. Старији активни агенти ће игнорисати све даљинске команде укључене у одговор сервера активних провера. |
| | command | _string_ | no | Даљинска команда. |
|^| id | _number_ | no | Идентификатор даљинске команде. |
|^| wait | _number_ | no  | Режим извршавања даљинске команде ("0" (nowait) за команде из акције [операције](/manual/config/notifications/action/operation#operations); „1“ (wait) за команде из ручног извршавања [скрипта](/manual/web_interface/frontend_sections/alerts/scripts)). |
| config_revision | < | _number_ | no | Идентификатор конфигурације за [инкрементална синхронизација конфигурације](#active-checks). Изоставља се ако је конфигурација хоста непромењена. Повећава се ако је конфигурација хоста промењена. |

Сервер мора да одговори успешно.

На пример:

1. Агент отвара TCP везу
2. Агент тражи листу провера
3. Сервер одговара листом ставки и удаљених команди за извршавање
4. Агент анализира одговор
5. TCP веза се затвара
6. Агент започиње периодично прикупљање података и извршава удаљене команде (подржано од Zabbix агента 7.0)

::: noteimportant
Имајте на уму да (осетљиви) подаци о конфигурацији могу
постати доступни странама које имају приступ трапер порту Zabbix сервера када се користи активна провера. Ово је могуће јер свако може
да се претвара да је активни агент и да захтева податке о конфигурацији ставки;
аутентификација се не врши осим ако не користите
опције [шифровања](/ручно/шифровање).
:::

[comment]: # ({/d3bc574b-d898e135})

[comment]: # ({e0fb63c9-8c5ecfe1})
##### Слање прикупљених података

**Агент шаље**

Захтев за податке агента садржи прикупљене вредности ставки и вредности за извршене удаљене команде (ако их има).

```json
{
   "request": "agent data",
   "data": [
   {
   "id": 1,
   "itemid": 5678,
   "value": "7.0.0",
   "clock": 1712830783,
   "ns": 76808644
   },
   {
   "id": 2,
   "itemid": 1234,
   "value": "69672",
   "clock": 1712830783,
   "ns": 77053975
   }
   ],
   "commands": [
   {
   "id": 1324,
   "value": "16G"
   }
   ],
   "session": "1234456akdsjhfoui",
   "host": "Zabbix server",
   "version": "7.4.0",
   "variant": 2
}
```

| Field |<| Type | Mandatory | Value |
|-|------|--|-----------------------|
| захтев |<| _стринг_ | да | `подаци агента` |
| подаци |<| _низ објеката_ | да | Вредности ставки. |
| | ид | _број_ | да | Идентификатор вредности (инкрементални бројач који се користи за проверу дуплираних вредности у случају проблема са мрежом). |
|^| идетид | _стринг_ | да | Идентификатор ставке. |
|^| вредност | _стринг_ | no | Вредност ставке. |
|^| последњавеличина_лог_ | no | Последњавеличина_лог_. |
|^| време_промене | _број_ | no | Време_промене. |
|^| стање | _број_ | no | Стање ставке. |
|^| извор | _string_ | no | Вредност извор дневника догађаја. |
|^| eventid | _number_ | no | Вредност eventid дневника догађаја. |
|^| severity | _number_ | no | Вредност resity дневника догађаја. |
|^| timestamp | _number_ | no | Вредност timestamp дневника догађаја. |
|^| clock | _number_ | yes | Временска ознака вредности (секунде од епохе). |
|^| ns | _number_ | yes | Временска ознака вредности наносекунди. |
| commands |<| _array of objects_ | no | Резултат извршавања удаљених команди. Имајте на уму да је извршавање удаљених команди на активном агенту подржано од Zabbix агента 7.0. Старији активни агенти ће игнорисати све удаљене команде укључене у одговор сервера активних провера. |
| | id | _number_ | no | Идентификатор удаљене команде. |
|^| value | _string_ | no | Резултат извршавања удаљене команде ако је извршавање било успешно. |
|^| error | _string_ | no | Порука о грешци при извршавању удаљене команде ако извршавање није успело. |
| session |<| _string_ | yes | Јединствени идентификатор сесије генерисан сваки пут када се агент покрене. |
| host |<| _string_ | yes | Име домаћина. |
| version |<| _string_ | yes | Број верзије агента. |
| variant |<| _number_ | yes | Варијанта агента (*1* - Zabbix агент, *2* - Zabbix агент 2). |

Виртуелни ИД је додељен свакој вредности. ИД вредности је једноставан растући
бројач, јединствен унутар једне сесије података (идентификован је токеном сесије). Овај ИД се користи за одбацивање дуплих вредности које могу бити послате
у окружењима са лошом повезаношћу.

**Одговор сервера**

Одговор о подацима агента шаље сервер назад агенту након обраде захтева за подацима агента.

```json
{
   "response": "успех",
   "info": "обрађено: 2; неуспешно: 0; укупно: 2; потрошене секунде: 0,003534"
}
```

| Field | Type | Mandatory | Value |
|-|-|-|--------|
| response | _string_ | yes| `успех` \| `неуспешно` |
| info | _string_ | yes | Резултати обраде ставке. |

::: noteimportant
Ако слање неких вредности не успе на серверу (на пример, зато што је хост или ставка онемогућена или обрисана), агент неће поново покушати да пошаље те вредности.
:::

На пример:

1.   Агент отвара TCP везу
2.   Агент шаље листу вредности
3.   Сервер обрађује податке и враћа статус
4.   TCP веза је затворена

Обратите пажњу како је у горњем примеру статус "није подржано" за
vfs.fs.size\[/nono\] назначен вредношћу "state" од 1 и поруком о грешци у својству "value".

::: noteimportant
Порука о грешци ће бити скраћена на 2048 симбола на страни сервера.
:::

[comment]: # ({/e0fb63c9-8c5ecfe1})

[comment]: # ({c9e72470-ee2b7a2a})
##### Порука о откуцају срца

**Агент шаље**

Поруку о откуцају срца шаље активни агент Zabbix серверу/проксију
сваких HeartbeatFrequency секунди (конфигурисано у конфигурационом фајлу [Zabbix агент](/manual/appendix/config/zabbix_agentd)/
[агент 2](/manual/appendix/config/zabbix_agent2)).

Користи се за праћење доступности активних провера.

```json
{
   "request": "active check heartbeat",
   "host": "Zabbix сервер",
   "heartbeat_freq": 60,
   "version": "7.4.0",
   "variant": 2
}
```

| Field | Type | Mandatory | Value |
|-|-|-|--------|
| request | _string_ | yes | `active check heartbeat` |
| host | _string_ | yes | Име домаћина. |
| heartbeat_freq | _number_ | yes | Фреквенција откуцаја срца агента (конфигурациони параметар HeartbeatFrequency). |
| version | _string_ | yes | Број верзије агента. |
| variant | _number_ | yes | Варијанта агента (*1* - Zabbix агент, *2* - Zabbix агент 2). |

**Одговор на преусмеравање**

Када је хост поново додељен, сервер може дати инструкције агенту да преусмери свој откуцај срца (и накнадне активне провере) на други прокси или инстанцу сервера.

```json
     {
     "response": "failed",
     "redirect": {
     "revision": 2,
     "address": "192.0.2.0:10055"
     }
     }
```

| Field |<| Type | Mandatory | Value |
|-|------|--|-----------------------|
| response |<| _string_ | yes | `success` \| `failed` |
| redirect |<| _object_ | yes  | Инструкције за преусмеравање. |
| | revision | _number_ | yes | Идентификатор ревизије конфигурације. |
|^| address | _string_ | yes | Адреса циљног сервера/проксија. |

[comment]: # ({/c9e72470-ee2b7a2a})

[comment]: # ({e66043c4-e66043c4})
#### Старији XML протокол

::: noteclassic
Zabbix ће заузети до 16 MB XML Base64 кодираних података, али
појединачна декодирана вредност не би требало да буде дужа од 64 KB, иначе ће
бити скраћен на 64 KB током декодирања.
:::

[comment]: # ({/e66043c4-e66043c4})
