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

Преглед

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

{
         "request": "active checks",
         "host": "Zabbix server",
         "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 да active checks
host string да Име домаћина.
host_metadata string не Вредност метрике конфигурационог параметра HostMetadata или HostMetadataItem.
hostinterface string не Конфигурациони параметар HostInterface или HostInterfaceItem метричка вредност.
ip string не Конфигурациони параметар ListenIP први IP ако је подешен.
port number не Вредност конфигурационог параметра ListenPort ако је подешен и није подразумевани порт за слушање агента.
version string да Број верзије агента.
variant number да Варијанта агента (1 - Zabbix агент, 2 - Zabbix агент 2).
config_revision number не Идентификатор конфигурације за [инкременталну синхронизацију конфигурације] (#active-checks).
session string не Идентификатор сесије за [инкременталну синхронизацију конфигурације] (#active-checks).

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

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

{
         "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 да success | failed
info string не Информације о грешци у случају квара.
data array of objects не Активне ставке за проверу. Изостављено ако је конфигурација домаћина непромењена.
key string не Кључ ставке са проширеним макроима.
itemid number не Идентификатор ставке.
delay string не Интервал ажурирања ставки.<бр>Флексибилне/заказане интервале подржавају и Zabbix агент и Zabbix агент 2 од Zabbix-а 7.0.
lastlogsize number не Ставка lastlogsize.
mtime number не Ставка mtime.
timeout string не Временско ограничење ставке.
refresh_unsupported number не Неподржани интервал освежавања ставке.
regexp array of objects не Глобални регуларни изрази.
name string не Назив глобалног регуларног израза.
name string не Глобални регуларни израз.
expression string не Глобални тип регуларног израза.
exp_delimiter string не Глобални делимитер регуларног израза.
ase_sensitive number не Глобални регуларни израз осетљивости на велика и мала слова.
commands array of objects не Даљинске команде за извршење. Укључено ако је даљинско извршење команде покренуто акцијом операција или ручним извршавањем скрипт. Имајте на уму да је даљинско извршавање команде на активном агенту подржано од Zabbix агента 7.0. Старији активни агенти ће игнорисати све удаљене команде укључене у одговор сервера активних провера.
command string не Даљинска команда.
id number не Идентификатор удаљене команде.
wait number не Режим извршавања даљинске команде ("0" (nowait) за команде из акције операције; "1" (wait) за команде из ручне скрипте извршење).
config_revision number не Идентификатор конфигурације за [инкременталну синхронизацију конфигурације] (#active-checks). Изостављено ако је конфигурација домаћина непромењена. Повећава се ако се конфигурација домаћина промени.

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

На пример:

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

Имајте на уму да (осетљиви) конфигурациони подаци могу да постану доступни странама које имају приступ trapper-у 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 Value
request string yes agent data
data array of objects yes Item values.
id number yes Идентификатор вредности (инкрементални бројач који се користи за проверу дуплираних вредности у случају проблема са мрежом).
itemid string yes Идентификатор ставке.
value string no Вредност ставке.
lastlogsize number no Ставка lastlogsize.
mtime number no Ставка mtime.
state number no Стање ставке.
source string no Извор евиденције вредности догађаја.
eventid number no Евиденција догађаја вредности eventid.
severity number no Озбиљност дневника догађаја вредности.
timestamp number no Временска ознака евиденције догађаја вредности.
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 Број верзије агента.
ariant number yes Варијанта агента (1 - Zabbix агент, 2 - Zabbix агент 2).

Свакој вредности се додељује виртуелни 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 Резултати обраде ставке.

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

на пример:

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

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

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

Heartbeat порука

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

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

{
         "request": "active check heartbeat",
         "host": "Zabbix server",
         "heartbeat_freq": 60,
         "version": "7.0.0",
         "variant": 2
       }
Field Type Mandatory Value
request string да active check heartbeat
host string да Име домаћина.
heartbeat_freq number да Фреквенција heartbeat-а откуцаја агента (параметар конфигурације HeartbeatFrequency).
version string да Број верзије агента.
variant number да Варијанта агента (1 - Zabbix агент, 2 - Zabbix агент 2).

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

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