Pasīvo un aktīvo pārbaužu protokoli

Šī sadaļa sniedz protokola informāciju 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.

Kopš Zabbix 7.0 Zabbix aģents un Zabbix aģents 2 protokoli ir apvienoti. Atšķirība starp Zabbix aģents un Zabbix aģents 2 pieprasījumiem/atbildēm tiek izteikta ar "variant" taga vērtību.

Pasīvie pārbaužu pieprasījumi

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ļ uz serveri.

Pasīvās pārbaudes tiek izpildītas asinhroni - nav nepieciešams saņemt viena pieprasījuma atbildi, pirms tiek sākta cita pārbaude. DNS atrisināšana arī ir asinhrona.

Aģenta aptaujātājs mēģinās izveidot savienojumu ar visām adresēm, ko atgriež DNS uzmeklēšana. Tas nodrošina, ka, ja viena IP adrese nav sasniedzama, aptaujātājs mēģinās izmantot nākamo pieejamo adresi, palielinot veiksmīga savienojuma iespējamību. Šis uzlabojums attiecas gan uz Zabbix serveri, gan starpniekserveri.

Asinhrono pārbaužu maksimālais paralēlais skaits ir 1000 (definēts ar MaxConcurrentChecksPerPoller).

Asinhrono aģenta aptaujātāju skaits ir definēts ar parametru StartAgentPollers.

Servera pieprasījums

Galvenes un datu garuma definīciju skatiet protokola detaļās.

{
  "request": "passive checks",
  "data": [
    {
      "key": "agent.version",
      "timeout": 3
    }
  ]
}
Field Type Mandatory Value
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 Sakaru noildze.

Aģenta atbilde

{
  "version": "8.0.0",
  "variant": 2,
  "data": [
    {
      "value": "8.0.0"
    }
  ]
}
Field Type Mandatory Value
version string yes Aģenta versijas numurs.
variant number yes Aģenta variants (1 - Zabbix aģents, 2 - Zabbix agent 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:

  1. Serveris atver TCP savienojumu
  2. Serveris nosūta <HEADER><DATALEN>{"request":"passive checks","data":[{"key":"agent.ping","timeout":3}]}
  3. Aģents nolasa pieprasījumu un atbild ar <HEADER><DATALEN>{"version":"8.0.0","variant":2,"data":[{"value":1}]}
  4. Serveris apstrādā datus, lai iegūtu vērtību, mūsu gadījumā '1'
  5. TCP savienojums tiek aizvērts

Neatbalstītiem vienumiem:

  1. Serveris atver TCP savienojumu
  2. Serveris nosūta <HEADER><DATALEN>{"request":"passive checks","data":[{"key":"vfs.fs.size[/nono]","timeout":3}]}
  3. Aģents nolasa pieprasījumu un atbild ar <HEADER><DATALEN>{"version":"8.0.0","variant":2,"data":[{"error":"Unsupported item key."}]}
  4. Serveris apstrādā datus, maina vienuma stāvokli uz neatbalstītu ar norādīto kļūdas ziņojumu
  5. 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ām ir vienkāršteksta protokols, ir ieviesta pārslēgšanās uz veco protokolu.

Pasīvās pārbaudes pēc restartēšanas vai pēc saskarnes konfigurācijas izmaiņām 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 kā vecā protokola saskarni 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 ar visām saskarnēm, vajadzības gadījumā 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.

Kopš 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 trafiku un resursu patēriņu, 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 ja ir mainījusies hosts konfigurācija, globālie makro vai globārie regulārie izteicieni.

Aģents pēc tam periodiski nosūta jaunās vērtības uz serveri(-iem). Ja aģents ir saņēmis kādas attālās komandas izpildei, tiks nosūtīts arī izpildes rezultāts. Ņemiet vērā, ka attālo komandu izpilde aktīvajā aģentā tiek atbalstīta kopš Zabbix aģents 7.0.

Ja aģents atrodas aiz ugunsmūra, varat apsvērt tikai aktīvo pārbaužu izmantošanu, jo šajā gadījumā jums nebūtu jā maina ugunsmūra iestatījumi, 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 apstrādās aģents.
Šo pieprasījumu aģents nosūta startēšanas brīdī un pēc tam ar RefreshActiveChecks intervāliem.

{
  "request": "active checks",
  "host": "Zabbix serveris",
  "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 Host name.
host_metadata string no The configuration parameter HostMetadata or HostMetadataItem metric value.
interface string no The configuration parameter HostInterface or HostInterfaceItem metric value.
ip string no The configuration parameter ListenIP first IP if set.
port number no The configuration parameter ListenPort value if set and not default agent listening port.
version string yes The agent version number.
variant number yes The agent variant (1 - Zabbix agent, 2 - Zabbix agent 2).
config_revision number no Configuration identifier for incremental configuration sync.
session string no Session identifier for incremental configuration sync.

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īvās pārbaudes vienumi. Netiek iekļauts, ja host 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īgie/plānošanas intervāli tiek atbalstīti gan Zabbix agent, gan Zabbix agent 2 kopš 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ļauts, ja attālinātās komandas izpildi ir aktivizējusi darbības operācija vai manuāla skripta izpilde. Ņemiet vērā, ka attālināto komandu izpilde uz aktīva aģenta tiek atbalstīta kopš Zabbix agent 7.0. Vecāki aktīvie aģenti ignorēs jebkuras attālinātās komandas, kas iekļautas aktīvo pārbaužu servera 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āla skripta izpildes).
timeout number no Attālinātās komandas izpildes noildze serveris/starpniekserveris konfigurācijā.
config_revision number no Konfigurācijas identifikators inkrementālai konfigurācijas sinhronizācijai. Netiek iekļauts, ja host konfigurācija nav mainījusies. Tiek palielināts, ja host konfigurācija ir mainīta.

Serverim jāatbild ar success.

Piemēram:

  1. Aģents atver TCP savienojumu
  2. Aģents pieprasa pārbaužu sarakstu
  3. Serveris atbild ar vienumu un izpildāmo attālināto komandu sarakstu
  4. Aģents parsē atbildi
  5. TCP savienojums tiek aizvērts
  6. Aģents sāk periodisku datu vākšanu un izpilda attālinātās komandas (atbalstīts kopš Zabbix agent 7.0)

Ņemiet vērā, ka (sensitīvi) konfigurācijas dati var kļūt pieejami pusēm, kurām ir piekļuve Zabbix servera trapper portam, izmantojot aktīvo pārbaudi. Tas ir iespējams, jo jebkurš var izlikties par aktīvu aģentu un pieprasīt vienuma konfigurācijas datus; autentifikācija nenotiek, ja vien netiek izmantotas šifrēšanas opcijas.

Nosūtīšana ar savāktajiem datiem

Aģents nosūta

Aģenta datu pieprasījums satur savāktā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": "8.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 (pieaugošs skaitītājs, ko izmanto, lai pārbaudītu dublētas vērtības 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īvajā aģentā tiek atbalstīta kopš Zabbix aģenta 7.0. Vecāki aktīvie aģenti ignorēs jebkuras attālās komandas, kas iekļautas 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 aģents tiek palaists (32 heksadecimālu ciparu garš).
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).

Katram vērtības ierakstam 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 (identificēts pēc sesijas tokena). Šis ID tiek izmantots, lai atmestu dublētas vērtības, kas var tikt nosūtītas sliktas savienojamības vidēs.

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"
}
Field Type Mandatory Value
response string yes success | failed
info string yes 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:

  1. Aģents atver TCP savienojumu
  2. Aģents nosūta vērtību sarakstu
  3. Serveris apstrādā datus un nosūta statusu atpakaļ
  4. TCP savienojums tiek aizvērts

Kļūdas ziņojums servera pusē tiks saīsināts līdz 2048 simboliem.

Sirdsdarbības ziņojums

Aģents nosūta

Sirdsdarbības ziņojumu aktīvs aģents nosūta uz Zabbix serveri/starpniekserveri ik pēc HeartbeatFrequency sekundēm (konfigurēts Zabbix aģenta/agent 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
}
Field Type Mandatory Value
request string yes active check heartbeat
host string yes Saimniekdatora nosaukums.
heartbeat_freq number yes Aģenta sirdsdarbības 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 agent 2).

Pāradresācijas atbilde

Ja hosts ir pārdalīts, serveris var norādīt aģentam pāradresēt tā sirdsdarbību (un turpmākās aktīvās pārbaudes) uz citu starpniekservera 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 Pāradresācijas norādījumi.
revision number yes Konfigurācijas revīzijas identifikators.
address string yes Mērķa servera/starpniekservera adrese.

Vecākais XML protokols

Zabbix pieņems līdz pat 16 MB XML Base64 kodētu datu, taču viena atkodētā vērtība nedrīkst būt garāka par 64 KB, pretējā gadījumā tā atkodēšanas laikā tiks saīsināta līdz 64 KB.