Ова секција пружа детаље о пасивним и активним проверама које врши Zabbix агент и Zabbix агент 2.
Zabbix користи комуникациони протокол заснован на JSON-у за комуникацију са агентима.
Zabbix агент и Zabbix агент 2 протоколи су уједињени од Zabbix 7.0 верзије. Разлика између захтева/одговора Zabbix агента и Zabbix агента 2 изражена је вредношћу ознаке "варијанта".
Пасивна провера је једноставан захтев за подацима. Zabbix сервер или прокси тражи неке податке (на пример, оптерећење процесора) и Zabbix агент шаље резултат назад серверу.
Пасивне провере се извршавају асинхроно - није потребно добити одговор на један захтев пре него што се покрену друге провере. Разрешавање DNS-а је такође асинхроно.
Агентски полер ће покушати да се повеже са свим адресама које врати DNS претрага. Ово осигурава да ако једна IP адреса није доступна, полер ће покушати са следећом доступном адресом, повећавајући вероватноћу успешне везе. Ово побољшање се односи и на Zabbix сервер и на прокси.
Максимална конкурентност асинхроних провера је 1000 (дефинисано помоћу MaxConcurrentChecksPerPoller).
Број асинхроних агентских полерa је дефинисан параметром StartAgentPollers.
Захтев сервера
За дефиницију дужине заглавља и података погледајте детаљи протокола.
Одговор агента
На пример, за подржане ставке:
За неподржане ставке:
Да би се осигурало да 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 |
Сервер мора успешно да одговори.
На пример:
Имајте на уму да (осетљиви) подаци о конфигурацији могу постати доступни странама које имају приступ 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 се користи за одбацивање дуплих вредности које могу бити послате у окружењима са лошом повезаношћу.
Одговор сервера
Одговор о подацима агента шаље сервер назад агенту након обраде захтева за подацима агента.
Field | Type | Mandatory | Value |
---|---|---|---|
response | string | yes | success | failed |
info | string | yes | Item processing results. |
Ако слање неких вредности не успе на серверу (на пример, зато што је домаћин или ставка онемогућена или обрисана), агент неће поново покушати да пошаље те вредности.
На пример:
Обратите пажњу како је у горњем примеру статус "није подржано" за 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 |
Одговор на преусмеравање
Када је домаћин поново додељен, сервер може дати инструкције агенту да преусмери свој откуцај срца (и накнадне активне провере) на други прокси или инстанцу сервера.
Field | Type | Mandatory | |
---|---|---|---|
response | string | yes | |
redirect | object | yes | |
revision | number | yes | |
address | string | yes |
Zabbix ће заузети до 16 MB XML Base64 кодираних података, али појединачна декодирана вредност не би требало да буде дужа од 64 KB, иначе ће бити скраћен на 64 KB током декодирања.