2 Pasīvās un aktīvās aģenta pārbaudes
Pārskats
Šajā sadaļā sniegta informācija par pasīvajām un aktīvajām pārbaudēm, ko veic Zabbix aģents un Zabbix aģents 2.
Zabbix saziņai ar aģentiem izmanto uz JSON balstītu saziņas protokolu.
Zabbix aģenta un Zabbix aģenta 2 protokoli ir apvienoti, sākot ar Zabbix 7.0. Atšķirība starp Zabbix aģenta un Zabbix aģenta 2 pieprasījumiem/atbildēm tiek izteikta ar taga "variant" vērtību.
Pasīvās pārbaudes
Pasīvā pārbaude ir vienkāršs datu pieprasījums.
Zabbix serveris vai starpniekserveris pieprasa noteiktus datus (piemēram, CPU noslodzi), un Zabbix aģents nosūta rezultātu atpakaļ serverim.
Pasīvās pārbaudes tiek izpildītas asinhroni — nav nepieciešams saņemt atbildi uz vienu pieprasījumu, pirms tiek sākta citu pārbaužu izpilde.
Arī DNS atrisināšana notiek asinhroni.
Aģentu aptaujātājs mēģinās izveidot savienojumu ar visām adresēm, kas atgrieztas DNS uzmeklēšanas rezultātā.
Tas nodrošina, ka gadījumā, ja viena IP adrese nav sasniedzama, aptaujātājs mēģinās izmantot nākamo pieejamo adresi, tādējādi palielinot veiksmīga savienojuma iespējamību.
Šis uzlabojums attiecas gan uz Zabbix serveri, gan starpniekserveri.
Asinhrono pārbaužu maksimālā vienlaicība ir 1000 (definēta ar parametru MaxConcurrentChecksPerPoller).
Asinhrono aģentu aptaujātāju skaitu nosaka parametrs StartAgentPollers.
Servera pieprasījums
Informāciju par galvenes un datu garuma definīciju skatiet sadaļā protokola informācija.
{
"request": "passive checks",
"data": [
{
"key": "agent.version",
"timeout": 3
}
]
}
| Lauks | Tips | Obligāts | Vērtība | |
|---|---|---|---|---|
| request | string | yes | "passive checks" |
|
| data | array of object | yes | Pasīvās pārbaudes vienums. | |
| key | string | yes | Vienuma atslēga ar izvērstiem makro. | |
| timeout | number | yes | Saziņas taimauts. | |
Aģenta atbilde
{
"version": "7.0.0",
"variant": 2,
"data": [
{
"value": "7.0.0"
}
]
}
| Lauks | Tips | Obligāts | Vērtība | |
|---|---|---|---|---|
| version | string | yes | Aģenta versijas numurs. | |
| variant | number | yes | Aģenta variants (1 — Zabbix aģents, 2 — Zabbix aģents 2). | |
| data | array of object | yes | Satur pārbaudes rezultātu. | |
| value | string | no | Vienuma vērtība, ja pārbaude bija veiksmīga. | |
| error | string | no | Kļūdas ziņojums, ja pārbaude nebija veiksmīga. | |
Piemēram, atbalstītiem vienumiem:
- Serveris atver TCP savienojumu
- Serveris nosūta <HEADER><DATALEN>{"request":"passive checks","data":[{"key":"agent.ping","timeout":3}]}
- Aģents nolasa pieprasījumu un atbild ar <HEADER><DATALEN>{"version":"7.0.0","variant":2,"data":[{"value":1}]}
- Serveris apstrādā datus, lai iegūtu vērtību — šajā gadījumā “1”
- TCP savienojums tiek aizvērts
Neatbalstītiem vienumiem:
- Serveris atver TCP savienojumu
- Serveris nosūta <HEADER><DATALEN>{"request":"passive checks","data":[{"key":"vfs.fs.size[/nono]","timeout":3}]}
- Aģents nolasa pieprasījumu un atbild ar <HEADER><DATALEN>{"version":"7.0.0","variant":2,"data":[{"error":"Unsupported item key."}]}
- Serveris apstrādā datus un maina vienuma stāvokli uz “neatbalstīts”, izmantojot norādīto kļūdas ziņojumu
- TCP savienojums tiek aizvērts
Atgriešanās pie vecā protokola
Lai nodrošinātu, ka Zabbix serveris vai starpniekserveris var darboties ar aģentiem no versijām, kas vecākas par 7.0 un izmanto vienkārša teksta protokolu, ir ieviesta atgriešanās pie vecā protokola.
Pasīvās pārbaudes pēc restartēšanas vai saskarnes konfigurācijas maiņas tiek veiktas, izmantojot JSON protokolu (7.0 un jaunākas versijas). Ja atbildē netiek saņemts derīgs JSON (aģents nosūtīja "ZBX_NOTSUPPORTED"), Zabbix saglabās saskarni kešatmiņā kā tādu, kas izmanto veco protokolu, un atkārtos pārbaudi, nosūtot tikai vienuma atslēgu.
Ņemiet vērā, ka katru stundu Zabbix serveris/starpniekserveris vēlreiz mēģinās izmantot jauno protokolu ar visām saskarnēm, ja nepieciešams, atgriežoties pie vecā protokola.
Aktīvās pārbaudes
Aktīvās pārbaudes prasa sarežģītāku apstrādi. Aģentam vispirms no servera/starpniekservera ir jāiegūst vienumu saraksts un/vai attālinātās komandas neatkarīgai apstrādei.
Serveri/starpniekserveri, no kuriem iegūt aktīvās pārbaudes, ir norādīti aģenta konfigurācijas faila parametrā 'ServerActive'. Šo pārbaužu pieprasīšanas biežumu nosaka tas pats konfigurācijas fails parametrs 'RefreshActiveChecks'. Tomēr, ja aktīvo pārbaužu atsvaidzināšana neizdodas, mēģinājums tiek atkārtots pēc fiksētām 60 sekundēm.
Sākot ar Zabbix 6.4, aģents (aktīvajā režīmā) vairs nesaņem no servera/starpniekservera pilnu konfigurācijas kopiju reizi divās minūtēs (pēc noklusējuma). Tā vietā, lai samazinātu tīkla datplūsmu un resursu izmantošanu, ik pēc 5 sekundēm (pēc noklusējuma) tiek veikta inkrementāla konfigurācijas sinhronizācija, kuras laikā serveris/starpniekserveris nodrošina pilnu konfigurācijas kopiju tikai tad, ja aģents to vēl nav saņēmis vai ir notikušas izmaiņas hosta konfigurācijā, globālajos makrosos vai globālajās regulārajās izteiksmēs.
Pēc tam aģents periodiski nosūta jaunās vērtības serverim(-iem). Ja aģents ir saņēmis izpildei kādas attālās komandas, tiks nosūtīts arī izpildes rezultāts. Ņemiet vērā, ka attālo komandu izpilde aktīvā aģentā tiek atbalstīta, sākot ar Zabbix aģentu 7.0.
Ja aģents atrodas aiz ugunsmūra, varat apsvērt iespēju izmantot tikai aktīvās pārbaudes, jo šādā gadījumā ugunsmūris nebūs jāmaina, lai atļautu sākotnējos ienākošos savienojumus.
Vienumu saraksta iegūšana
Aģenta pieprasījums
Aktīvo pārbaužu pieprasījums tiek izmantots, lai iegūtu aktīvās pārbaudes, kuras jāapstrādā aģentam. Šo pieprasījumu aģents nosūta startēšanas laikā un pēc tam ar RefreshActiveChecks intervālu.
{
"request": "active checks",
"host": "Zabbix server",
"host_metadata": "mysql,nginx",
"interface": "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 | Hosts nosaukums. |
| host_metadata | string | no | Konfigurācijas parametra HostMetadata vai metrikas HostMetadataItem vērtība. |
| interface | string | no | Konfigurācijas parametra HostInterface vai metrikas HostInterfaceItem vērtība. |
| ip | string | no | Konfigurācijas parametra ListenIP pirmā IP adrese, ja tā ir iestatīta. |
| port | number | no | Konfigurācijas parametra ListenPort vērtība, ja tā ir iestatīta un nav noklusējuma aģenta klausīšanās ports. |
| version | string | yes | Aģenta versijas numurs. |
| variant | number | yes | Aģenta variants (1 - Zabbix aģents, 2 - Zabbix aģents 2). |
| config_revision | number | no | Konfigurācijas identifikators inkrementālajai konfigurācijas sinhronizācijai. |
| session | string | no | Sesijas identifikators inkrementālajai konfigurācijas sinhronizācijai. |
Servera atbilde
Aktīvo pārbaužu atbildi serveris nosūta aģentam pēc aktīvo pārbaužu pieprasījuma apstrādes.
{
"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 | Kļūdas informācija kļūmes gadījumā. | |
| data | array of objects | no | Aktīvās pārbaudes vienumi. Netiek iekļauts, ja hosts konfigurācija nav mainījusies. | |
| key | string | no | Vienuma atslēga ar izvērstiem makro. | |
| itemid | number | no | Vienuma identifikators. | |
| delay | string | no | Vienuma atjaunināšanas intervāls. Elastīgos/plānošanas intervālus atbalsta gan Zabbix aģents, gan Zabbix aģents 2, sākot ar Zabbix 7.0. |
|
| lastlogsize | number | no | Vienuma lastlogsize. | |
| mtime | number | no | Vienuma mtime. | |
| timeout | string | no | Vienuma taimauts. | |
| refresh_unsupported | number | no | Neatbalstīto vienumu atsvaidzināšanas intervāls. | |
| regexp | array of objects | no | Globālās regulārās izteiksmes. | |
| name | string | no | Globālās regulārās izteiksmes nosaukums. | |
| expression | string | no | Globālā regulārā izteiksme. | |
| expression_type | number | no | Globālās regulārās izteiksmes tips. | |
| exp_delimiter | string | no | Globālās regulārās izteiksmes atdalītājs. | |
| case_sensitive | number | no | Globālās regulārās izteiksmes reģistrjutības iestatījums. | |
| commands | array of objects | no | Izpildāmās attālās komandas. Tiek iekļautas, ja attālo komandu izpildi ir aktivizējusi darbības operācija vai manuāla skripta izpilde. Ņemiet vērā, ka attālo komandu izpilde aktīvā aģentā tiek atbalstīta, sākot ar Zabbix aģentu 7.0. Vecāki aktīvie aģenti ignorēs visas attālās komandas, kas iekļautas aktīvo pārbaužu servera atbildē. | |
| command | string | no | Attālā komanda. | |
| id | number | no | Attālās komandas identifikators. | |
| wait | number | no | Attālās komandas izpildes režīms ("0" (nowait) komandām no darbības operācijām; "1" (wait) komandām, kas izpildītas no manuāla skripta). | |
| timeout | number | no | Attālās komandas izpildes taimauts servera/starpniekservera konfigurācijā. | |
| config_revision | number | no | Konfigurācijas identifikators inkrementālajai konfigurācijas sinhronizācijai. Netiek iekļauts, ja hosts konfigurācija nav mainījusies. Tiek palielināts, ja hosts konfigurācija ir mainījusies. | |
Serverim jāatbild ar veiksmīgu rezultātu.
Piemēram:
- Aģents atver TCP savienojumu
- Aģents pieprasa pārbaužu sarakstu
- Serveris atbild ar vienumu sarakstu un izpildāmajām attālajām komandām
- Aģents parsē atbildi
- TCP savienojums tiek aizvērts
- Aģents sāk periodisku datu apkopošanu un izpilda attālās komandas (tiek atbalstīts, sākot ar Zabbix aģentu 7.0)
Ņemiet vērā, ka, izmantojot aktīvo pārbaudi, konfigurācijas dati (tostarp sensitīvi dati) var kļūt pieejami pusēm, kurām ir piekļuve Zabbix servera trapper portam. Tas ir iespējams tāpēc, ka ikviens var uzdoties par aktīvu aģentu un pieprasīt vienumu konfigurācijas datus; autentifikācija nenotiek, ja vien neizmantojat šifrēšanas opcijas.
Apkopoto datu nosūtīšana
Aģents nosūta
Aģenta datu pieprasījumā ir ietvertas apkopotās vienumu vērtības un izpildīto attālo komandu vērtības (ja tādas ir).
{
"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": "8495cd52070e6ca52b371f29c8574165",
"host": "Zabbix server",
"version": "7.0.0",
"variant": 2
}
| Field | Type | Mandatory | Value | |
|---|---|---|---|---|
| request | string | yes | agent data |
|
| data | array of objects | yes | Vienumu vērtības. | |
| id | number | yes | Vērtības identifikators (inkrementāls skaitītājs, ko izmanto dublētu vērtību pārbaudei tīkla problēmu gadījumā). | |
| itemid | number | yes | Vienuma identifikators. | |
| value | string | no | Vienuma vērtība. | |
| lastlogsize | number | no | Vienuma lastlogsize. | |
| mtime | number | no | Vienuma mtime. | |
| state | number | no | Vienuma state. | |
| source | string | no | Vērtības notikumu žurnāla avots. | |
| eventid | number | no | Vērtības notikumu žurnāla eventid. | |
| severity | number | no | Vērtības notikumu žurnāla severity. | |
| timestamp | number | no | Vērtības notikumu žurnāla timestamp. | |
| clock | number | yes | Vērtības laikspiedols (sekundes kopš Epoch). | |
| ns | number | yes | Vērtības laikspiedola nanosekundes. | |
| commands | array of objects | no | Attālo komandu izpildes rezultāts. Ņemiet vērā, ka attālo komandu izpilde aktīvā aģentā tiek atbalstīta kopš Zabbix aģenta 7.0. Vecāki aktīvie aģenti ignorēs visas attālās komandas, kas ietvertas aktīvo pārbaužu servera atbildē. | |
| id | number | no | Attālās komandas identifikators. | |
| value | string | no | Attālās komandas izpildes rezultāts, ja izpilde bija veiksmīga. | |
| error | string | no | Attālās komandas izpildes kļūdas ziņojums, ja izpilde neizdevās. | |
| session | string | yes | Unikāls sesijas identifikators, kas tiek ģenerēts katru reizi, kad tiek palaists aģents (32 heksadecimālie cipari). | |
| host | string | yes | Hosts nosaukums. | |
| version | string | yes | Aģenta versijas numurs. | |
| variant | number | yes | Aģenta variants (1 - Zabbix aģents, 2 - Zabbix aģents 2). | |
Katrai vērtībai tiek piešķirts virtuāls ID. Vērtības ID ir vienkāršs augošs skaitītājs, kas ir unikāls vienas datu sesijas ietvaros (to identificē sesijas tokens). Šis ID tiek izmantots, lai atmestu dublētās vērtības, kas var tikt nosūtītas sliktas savienojamības apstākļos.
Servera atbilde
Serveris nosūta aģenta datu atbildi atpakaļ aģentam pēc aģenta datu pieprasījuma apstrādes.
{
"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 | Vienumu apstrādes rezultāti. |
Ja serverī neizdodas nosūtīt dažas vērtības (piemēram, tāpēc, ka hosts vai vienums ir atspējots vai dzēsts), aģents nemēģinās šīs vērtības nosūtīt atkārtoti.
Piemēram:
- Aģents atver TCP savienojumu
- Aģents nosūta vērtību sarakstu
- Serveris apstrādā datus un nosūta statusu atpakaļ
- TCP savienojums tiek aizvērts
Servera pusē kļūdas ziņojums tiks saīsināts līdz 2048 simboliem.
Sirdspuksta ziņojums
Aģents nosūta
Sirdspuksta ziņojumu aktīvais aģents nosūta Zabbix serverim/starpniekserverim ik pēc HeartbeatFrequency sekundēm (konfigurēts Zabbix aģenta/aģenta 2 konfigurācijas failā).
To izmanto aktīvo pārbaužu pieejamības uzraudzībai.
{
"request": "active check heartbeat",
"host": "Zabbix server",
"heartbeat_freq": 60,
"version": "7.0.0",
"variant": 2
}
| Field | Type | Mandatory | Value |
|---|---|---|---|
| request | string | yes | active check heartbeat |
| host | string | yes | Hosts nosaukums. |
| heartbeat_freq | number | yes | Aģenta sirdspuksta biežums (HeartbeatFrequency konfigurācijas parametrs). |
| version | string | yes | Aģenta versijas numurs. |
| variant | number | yes | Aģenta variants (1 - Zabbix aģents, 2 - Zabbix aģents 2). |
Novirzīšanas atbilde
Kad hosts ir piešķirts citam objektam, serveris var norādīt aģentam novirzīt sirdspuksta ziņojumus (un turpmākās aktīvās pārbaudes) uz citu starpniekserveri vai servera instanci.
{
"response": "failed",
"redirect": {
"revision": 2,
"address": "192.0.2.1:10055"
}
}
| Field | Type | Mandatory | Value | |
|---|---|---|---|---|
| response | string | yes | success | failed |
|
| redirect | object | yes | Novirzīšanas norādījumi. | |
| revision | number | yes | Konfigurācijas revīzijas identifikators. | |
| address | string | yes | Mērķa servera/starpniekservera adrese. | |
Vecāks XML protokols
Zabbix pieņems līdz 16 MB XML Base64 kodētu datu, taču viena dekodētā vērtība nedrīkst pārsniegt 64 KB, pretējā gadījumā dekodēšanas laikā tā tiks saīsināta līdz 64 KB.