This is a translation of the original English documentation page. Help us make it better.

2 Провере пасивног и активног агента

Преглед

Ова секција пружа детаље о пасивним и активним проверама које врши Zabbix агент и Zabbix агент 2.

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

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

Пасивне провере

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

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

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

Максимална конкурентност асинхроних провера је 1000 (дефинисано помоћу MaxConcurrentChecksPerPoller).

Број асинхроних агентских полерa је дефинисан параметром StartAgentPollers.

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

За дефиницију дужине заглавља и података погледајте детаљи протокола.

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

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

{
            "version": "7.2.0",
            "variant": 2,
            "data": [
            {
            "value": "7.2.0"
            }
            ]
       }

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

  1. Сервер отвара TCP везу
  2. Сервер шаље <HEADER><DATALEN>{"request":"passive checks","data":[{"key":"agent.ping","timeout":3}]}
  3. Агент чита захтев и одговара са <HEADER><DATALEN>{"version":"7.2.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.2.0","variant":2,"data":[{"error":"Неподржани кључ ставке."}]}
  4. Сервер обрађује податке, мења стање ставке у није подржано са наведеном поруком о грешци
  5. TCP веза је затворена
Прелазак на стари протокол

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

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

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

Активне провере

Активне провере захтевају сложенију обраду. Агент прво мора да преузме са сервера/проксија листу ставки и/или удаљених команди за независну обраду.

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

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

Агент затим периодично шаље нове вредности серверу(има). Ако је агент примио било које даљинске команде за извршење, биће послат и резултат извршења. Имајте на уму да је даљинско извршавање команди на активном агенту подржано од Zabbix агента 7.0.

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

Добијање листе ставки

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

Захтев за активне провере се користи за добијање активних провера које ће агент обрадити. Овај захтев агент шаље при покретању, а затим у интервалима RefreshActiveChecks.

{
       "request": "active checks",
       "host": "Zabbix сервер",
       "host_metadata": "mysql,nginx",
       "hostinterface": "zabbix.server.lan",
       "ip": "159.168.1.1",
       "port": 12050,
       "version": "7.0.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 Прва ИП адреса конфигурационог параметра ListenIP ако је подешена.
port number no не
version string yes Број верзије агента.
variant number yes Варијанта агента (1 - Zabbix агент, 2 - Zabbix агент 2).
config_revision number no Идентификатор конфигурације за инкрементална синхронизација конфигурације.
session string no Идентификатор сесије за инкрементална синхронизација конфигурације.

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

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


       {
          "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
response string yes
info string no
data array of objects no
key string no
itemid number no
delay string no
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
command string no
id number no
wait number no
config_revision | < | number | no | Идентификатор конфигурације за инкрементална синхронизација конфигурације. Изоставља се ако је конфигурација хоста непромењена. Повећава се ако је конфигурација хоста промењена. |

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

На пример:

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

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

Слање прикупљених података

Агент шаље

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

{
         "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.0.0",
         "variant": 2
       }
Field Type Mandatory
request string yes
data array of objects yes
id number yes
itemid string yes
value string no
lastlogsize number no
mtime number no
state number no
source string no
eventid number no
severity number no
timestamp number no
clock number yes
ns number yes
commands array of objects no
id number no
value string no
error string no
session string yes
host string yes
version string yes
variant number yes

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

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

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

{
       "response": "success",
       "info": "processed: 2; failed: 0; total: 2; seconds spent: 0.003534"
       }
Field Type Mandatory Value
response string yes success | failed
info string yes Item processing results.

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

На пример:

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

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

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

Порука о откуцају срца

Агент шаље

Поруку о откуцају срца шаље активни агент Zabbix серверу/проксију сваких HeartbeatFrequency секунди (конфигурисано у конфигурационом фајлу Zabbix agent/agent 2).

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

{
            "request": "active check heartbeat",
            "host": "Zabbix server",
            "heartbeat_freq": 60,
            "version": "7.2.0",
            "variant": 2
       }
Field Type Mandatory
request string yes
host string yes
heartbeat_freq number yes
version string yes
variant number yes

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

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

     {
            "response": "failed",
            "redirect": {
            "revision": 2,
            "address": "192.0.2.0:10055"
            }
            }
Field Type Mandatory
response string yes
redirect object yes
revision number yes
address string yes

Старији XML протокол

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