2 Pasīvās un aktīvās aģenta pārbaudes
Pārskats
Šajā sadaļā ir sniegta detalizēta 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 komunikācijas protokolu.
Zabbix aģenta un Zabbix aģenta 2 protokoli ir apvienoti kopš Zabbix 7.0. Atšķirība starp Zabbix aģenta un Zabbix aģenta 2 pieprasījumiem/atbildēm tiek izteikta ar "variant" taga 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 slodzi), 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āktas citas pārbaudes. Arī DNS atrisināšana notiek asinhroni.
Aģenta aptaujātājs mēģinās izveidot savienojumu ar visām adresēm, kas atgrieztas DNS vaicājumā. Tas nodrošina, ka, ja viena IP adrese nav sasniedzama, aptaujātājs mēģinās 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ālais vienlaicīgums ir 1000 (noteikts ar MaxConcurrentChecksPerPoller).
Asinhrono aģenta aptaujātāju skaitu nosaka parametrs StartAgentPollers.
Servera pieprasījums
Galvenes un datu garuma definīciju skatiet protokola detalizācijā.
{
"request": "passive checks",
"data": [
{
"key": "agent.version",
"timeout": 3
}
]
}
| Lauks | Tips | Obligāts | Vērtība | |
|---|---|---|---|---|
| request | string | jā | "passive checks" |
|
| data | array of object | jā | Pasīvās pārbaudes vienums. | |
| key | string | jā | Vienuma atslēga ar izvērstiem makrosiem. | |
| timeout | number | jā | Saziņas noildze. | |
Aģenta atbilde
{
"version": "8.0.0",
"variant": 2,
"data": [
{
"value": "8.0.0"
}
]
}
| Lauks | Tips | Obligāts | Vērtība | |
|---|---|---|---|---|
| version | string | jā | Aģenta versijas numurs. | |
| variant | number | jā | Aģenta variants (1 - Zabbix aģents, 2 - Zabbix aģents 2). | |
| data | array of object | jā | Satur pārbaudes rezultātu. | |
| value | string | nē | Vienuma vērtība, ja pārbaude bija veiksmīga. | |
| error | string | nē | 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":"8.0.0","variant":2,"data":[{"value":1}]}
- Serveris apstrādā datus, lai iegūtu vērtību, mūsu gadījumā — '1'
- TCP savienojums tiek aizvērts
Piemēram, 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":"8.0.0","variant":2,"data":[{"error":"Unsupported item key."}]}
- Serveris apstrādā datus, maina vienuma stāvokli uz neatbalstīts ar norādīto kļūdas ziņojumu
- TCP savienojums tiek aizvērts
Pārslēgšanās uz veco protokolu
Lai nodrošinātu, ka Zabbix serveris vai starpniekserveris var strādāt ar aģentiem no versijām pirms 7.2, kurās tiek izmantots vienkāršā teksta protokols, ir ieviesta pārslēgšanās uz veco protokolu.
Pasīvās pārbaudes tiek veiktas, izmantojot JSON protokolu (7.0 un jaunākās versijās), pēc restartēšanas vai kad tiek mainīta saskarnes konfigurācija. Ja atbildē netiek saņemts derīgs JSON (aģents nosūtīja "ZBX_NOTSUPPORTED"), Zabbix saglabās saskarni kešatmiņā kā veco protokolu un atkārtos pārbaudi, nosūtot tikai vienuma atslēgu.
Ņemiet vērā, ka katru stundu Zabbix serveris/starpniekserveris atkal mēģinās strādāt ar jauno protokolu visās saskarnēs, vajadzības gadījumā pārslēdzoties atpakaļ uz veco protokolu.
Aktīvās pārbaudes
Aktīvajām pārbaudēm ir nepieciešama sarežģītāka apstrāde. Aģentam vispirms no servera/starpniekservera jāiegūst vienumu un/vai attālināto komandu saraksts 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 parametrs 'RefreshActiveChecks' tajā pašā konfigurācijas failā. Tomēr, ja aktīvo pārbaužu atsvaidzināšana neizdodas, atkārtots mēģinājums tiek veikts pēc stingri noteiktā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 kopš Zabbix aģenta 7.0.
Ja aģents atrodas aiz ugunsmūra, varat apsvērt izmantot tikai aktīvās pārbaudes, jo šajā gadījumā nebūs nepieciešams mainīt ugunsmūra iestatījumus, 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, kas jāapstrādā aģentam. Šo pieprasījumu aģents nosūta startēšanas laikā un pēc tam ar RefreshActiveChecks intervāliem.
{
"request": "active checks",
"host": "Zabbix server",
"host_metadata": "mysql,nginx",
"interface": "zabbix.server.lan",
"ip": "159.168.1.1",
"port": 12050,
"version": "8.0.0",
"variant": 2,
"config_revision": 1,
"session": "e3dcbd9ace2c9694e1d7bbd030eeef6e"
}
| Field | Type | Mandatory | Value |
|---|---|---|---|
| request | string | yes | active checks |
| host | string | yes | Hosta nosaukums. |
| host_metadata | string | no | Konfigurācijas parametra HostMetadata vai HostMetadataItem metrikas vērtība. |
| interface | string | no | Konfigurācijas parametra HostInterface vai HostInterfaceItem metrikas vērtība. |
| ip | string | no | Konfigurācijas parametra ListenIP pirmā IP adrese, ja iestatīta. |
| port | number | no | Konfigurācijas parametra ListenPort vērtība, ja 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 atbilde tiek nosūtīta no servera atpakaļ 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 neveiksmes gadījumā. | |
| data | array of objects | no | Aktīvo pārbaužu vienumi. Izlaists, ja hosta konfigurācija nav mainījusies. | |
| key | string | no | Vienuma atslēga ar izvērstiem makrosiem. | |
| 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 начиная no Zabbix 7.0. |
|
| lastlogsize | number | no | Vienuma lastlogsize. | |
| mtime | number | no | Vienuma mtime. | |
| timeout | string | no | Vienuma noildze. | |
| refresh_unsupported | number | no | Neatbalstīta vienuma 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 | Attālinātās komandas izpildei. Iekļautas, ja attālināto komandu izpildi ir ierosinājusi darbības operācija vai manuāla skripta izpilde. Ņemiet vērā, ka attālināto 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ālinātās komandas, kas iekļautas servera aktīvo pārbaužu atbildē. | |
| command | string | no | Attālinātā komanda. | |
| id | number | no | Attālinātās komandas identifikators. | |
| wait | number | no | Attālinātās komandas izpildes režīms ("0" (nowait) komandām no darbības operācijām; "1" (wait) komandām no manuālas skripta izpildes). | |
| config_revision | number | no | Konfigurācijas identifikators inkrementālajai konfigurācijas sinhronizācijai. Izlaists, ja hosta konfigurācija nav mainījusies. Tiek palielināts, ja hosta konfigurācija ir mainījusies. | |
Serverim jāatbild ar success.
Piemēram:
- Aģents atver TCP savienojumu
- Aģents pieprasa pārbaužu sarakstu
- Serveris atbild ar vienumu sarakstu un izpildāmajām attālinātajām komandām
- Aģents parsē atbildi
- TCP savienojums tiek aizvērts
- Aģents sāk periodisku datu vākšanu un izpilda attālinātās komandas (atbalstīts kopš Zabbix aģenta 7.0)
Ņemiet vērā, ka, izmantojot aktīvo pārbaudi, (sensitīvi) konfigurācijas dati var kļūt pieejami pusēm, kurām ir piekļuve Zabbix servera trapper portam. Tas ir iespējams, jo jebkurš var uzdoties par aktīvu aģentu un pieprasīt vienumu konfigurācijas datus; autentifikācija nenotiek, ja vien neizmantojat encryption opcijas.
Savākto datu nosūtīšana
Aģents nosūta
Aģenta datu pieprasījums satur savāktās vienumu vērtības un izpildīto attālināto 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": "8.0.0",
"variant": 2
}
| Lauks | Tips | Obligāts | Vērtība | |
|---|---|---|---|---|
| request | string | jā | agent data |
|
| data | array of objects | jā | Vienumu vērtības. | |
| id | number | jā | Vērtības identifikators (pieaugošs skaitītājs, ko izmanto dublētu vērtību pārbaudei tīkla problēmu gadījumā). | |
| itemid | number | jā | Vienuma identifikators. | |
| value | string | nē | Vienuma vērtība. | |
| lastlogsize | number | nē | Vienuma lastlogsize. | |
| mtime | number | nē | Vienuma mtime. | |
| state | number | nē | Vienuma stāvoklis. | |
| source | string | nē | Vērtības notikumu žurnāla avots. | |
| eventid | number | nē | Vērtības notikumu žurnāla eventid. | |
| severity | number | nē | Vērtības notikumu žurnāla smaguma pakāpe. | |
| timestamp | number | nē | Vērtības notikumu žurnāla laikspiedols. | |
| clock | number | jā | Vērtības laikspiedols (sekundes kopš Epoch). | |
| ns | number | jā | Vērtības laikspiedola nanosekundes. | |
| commands | array of objects | nē | Attālināto komandu izpildes rezultāts. Ņemiet vērā, ka attālināto 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ālinātās komandas, kas iekļautas aktīvo pārbaužu servera atbildē. | |
| id | number | nē | Attālinātās komandas identifikators. | |
| value | string | nē | Attālinātās komandas izpildes rezultāts, ja izpilde bija veiksmīga. | |
| error | string | nē | Attālinātās komandas izpildes kļūdas ziņojums, ja izpilde neizdevās. | |
| session | string | jā | Unikāls sesijas identifikators, kas tiek ģenerēts katru reizi, kad aģents tiek palaists. | |
| host | string | jā | Hosta nosaukums. | |
| version | string | jā | Aģenta versijas numurs. | |
| variant | number | jā | Aģenta variants (1 - Zabbix aģents, 2 - Zabbix aģents 2). | |
Katram vērtības ierakstam tiek piešķirts virtuāls ID. Vērtības ID ir vienkāršs augošs skaitītājs, unikāls vienas datu sesijas ietvaros (ko identificē sesijas marķieris). Šis ID tiek izmantots, lai atmestu dublētas vērtības, kas var tikt nosūtītas sliktas savienojamības apstākļos.
Servera atbilde
Aģenta datu atbildi serveris nosūta 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"
}
| Lauks | Tips | Obligāts | Vērtība |
|---|---|---|---|
| response | string | jā | success | failed |
| info | string | jā | Vienumu apstrādes rezultāti. |
Ja dažu vērtību nosūtīšana serverī neizdodas (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
Kļūdas ziņojums servera pusē tiks saīsināts līdz 2048 simboliem.
Heartbeat ziņojums
Aģents nosūta
Heartbeat ziņojumu aktīvais aģents nosūta uz Zabbix serveri/starpniekserveri ik pēc HeartbeatFrequency sekundēm (konfigurēts Zabbix aģenta/ aģenta 2 konfigurācijas failā).
To izmanto, lai uzraudzītu aktīvo pārbaužu pieejamību.
{
"request": "active check heartbeat",
"host": "Zabbix server",
"heartbeat_freq": 60,
"version": "8.0.0",
"variant": 2
}
| Lauks | Tips | Obligāts | Vērtība |
|---|---|---|---|
| request | string | jā | active check heartbeat |
| host | string | jā | Hosta nosaukums. |
| heartbeat_freq | number | jā | Aģenta heartbeat biežums (konfigurācijas parametrs HeartbeatFrequency). |
| version | string | jā | Aģenta versijas numurs. |
| variant | number | jā | Aģenta variants (1 - Zabbix aģents, 2 - Zabbix aģents 2). |
Pāradresācijas atbilde
Kad hosts ir pārdalīts, serveris var norādīt aģentam pāradresēt tā heartbeat (un turpmākās aktīvās pārbaudes) uz citu starpniekservera vai servera instanci.
{
"response": "failed",
"redirect": {
"revision": 2,
"address": "192.0.2.0:10055"
}
}
| Lauks | Tips | Obligāts | Vērtība | |
|---|---|---|---|---|
| response | string | jā | success | failed |
|
| redirect | object | jā | Pāradresācijas norādījumi. | |
| revision | number | jā | Konfigurācijas revīzijas identifikators. | |
| address | string | jā | 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 atkodēta vērtība nedrīkst būt lielāka par 64 KB, pretējā gadījumā tā atkodēšanas laikā tiks saīsināta līdz 64 KB.