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

Преглед

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

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

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

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

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

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

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

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

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

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

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

{
   "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 Време чекања ставке.

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

{
   "верзија": "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 веза је затворена
Прелазак на стари протокол

Да би се осигурало да 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",
   "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 Идентификатор конфигурације за инкрементална синхронизација конфигурације.
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 Value
response string yes success | failed
info string no Информације о грешци у случају неуспеха.
data array of objects no Активне ставке за проверу. Изоставља се ако је конфигурација домаћина непромењена.
key string no Кључ ставке са проширеним макроима.
itemid number no Идентификатор ставке.
delay string no Интервал ажурирања ставке.
Флексибилни/интервали заказивања су подржани од стране и 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 Удаљене команде за извршавање. Укључено ако је даљинско извршавање команде покренуто акцијом операција или ручним извршавањем скрипта. Имајте на уму да је даљинско извршавање команде на активном агенту подржано од Zabbix агента 7.0. Старији активни агенти ће игнорисати све даљинске команде укључене у одговор сервера активних провера.
command string no Даљинска команда.
id number no Идентификатор даљинске команде.
wait number no Режим извршавања даљинске команде ("0" (nowait) за команде из акције операције; „1“ (wait) за команде из ручног извршавања скрипта).
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.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).

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

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

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

{
   "response": "успех",
   "info": "обрађено: 2; неуспешно: 0; укупно: 2; потрошене секунде: 0,003534"
}
Field Type Mandatory Value
response string yes успех | неуспешно
info string yes Резултати обраде ставке.

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

На пример:

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

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

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

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

Агент шаље

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

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

{
   "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).

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

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

     {
     "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 Адреса циљног сервера/проксија.

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

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