[comment]: # ({a6d31bd3-a6d31bd3})
# 2 Pasīvās un aktīvās aģenta pārbaudes

[comment]: # ({/a6d31bd3-a6d31bd3})

[comment]: # ({1b7bc303-7bd0dd61})
#### 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](/manual/concepts/agent) un [Zabbix aģents 2](/manual/concepts/agent2).

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.

[comment]: # ({/1b7bc303-7bd0dd61})

[comment]: # ({f0a43b2b-e6db8dd6})
#### Pasīvie 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 cita pārbaude. Arī DNS atrisināšana notiek asinhroni.

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 nākamo pieejamo adresi, palielinot veiksmīga savienojuma iespējamību. Šis uzlabojums attiecas gan uz Zabbix serveri, gan uz starpniekserveri.

Asinhrono pārbaužu maksimālā paralēlā izpilde ir 1000 (definēts ar [MaxConcurrentChecksPerPoller](/manual/appendix/config/zabbix_server#maxconcurrentchecksperpoller)).

Asinhrono aģenta aptaujātāju skaits ir definēts ar [StartAgentPollers](/manual/appendix/config/zabbix_server#startagentpollers) parametru.

**Servera pieprasījums**

Galvenes un datu garuma definīciju skatiet [protokola
detaļās](/manual/appendix/protocols/header_datalen).

```json
{
  "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**

```json
{
  "version": "7.4.0",
  "variant": 2,
  "data": [
    {
      "value": "7.4.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":"7.4.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":"7.4.0","variant":2,"data":[{"error":"Unsupported item key."}]}**
4.  Serveris apstrādā datus, maina vienuma stāvokli uz neatbalstīts ar
    norādīto kļūdas ziņojumu
5.  TCP savienojums tiek aizvērts

[comment]: # ({/f0a43b2b-e6db8dd6})

[comment]: # ({241f3b68-d33dfdd3})
##### 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.

[comment]: # ({/241f3b68-d33dfdd3})

[comment]: # ({86593407-ecdd6e8e})
#### 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](/manual/config/notifications/action/operation/remote_command) 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](/manual/appendix/config/zabbix_agent2) 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.

[comment]: # ({/86593407-ecdd6e8e})

[comment]: # ({e520c471-4c14cd28})
::: notetip
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.
:::

[comment]: # ({/e520c471-4c14cd28})

[comment]: # ({63166bda-2f80420a})
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](/manual/config/notifications/action/operation/remote_command), 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.

::: notetip
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.
:::

[comment]: # ({/63166bda-2f80420a})

[comment]: # ({426dc1ae-d898e135})
##### 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 palaišanas brīdī un pēc tam ar [RefreshActiveChecks](/manual/appendix/config/zabbix_agent2) intervāliem.

```json
{
  "request": "active checks",
  "host": "Zabbix serveris",
  "host_metadata": "mysql,nginx",
  "interface": "zabbix.server.lan",
  "ip": "159.168.1.1",
  "port": 12050,
  "version": "7.4.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](#active-checks). |
| session | _string_ | no | Session identifier for [incremental configuration sync](#active-checks). |
  
**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.
  
```json
{
  "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 | Error information in case of failure. |
| data |<| _array of objects_ | no | Aktīvās pārbaudes vienumi. Netiek iekļauti, 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.<br>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ālas 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 norobežotā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ātās komandas izpildi ir aktivizējusi darbības [operācija](/manual/config/notifications/action/operation#operations) vai manuāla [skripta](/manual/web_interface/frontend_sections/alerts/scripts) izpilde. Ņemiet vērā, ka attālināto komandu izpilde aktīvam aģentam 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](/manual/config/notifications/action/operation#operations); "1" (wait) komandām no manuāla [skripta](/manual/web_interface/frontend_sections/alerts/scripts) izpildes). |
|^| timeout | _number_ | no | Attālinātās komandas izpildes noildze [servera](/manual/appendix/config/zabbix_server#timeout)/[starpniekservera](/manual/appendix/config/zabbix_proxy#timeout) konfigurācijā. |
| config_revision | < | _number_ | no | Konfigurācijas identifikators [inkrementālai konfigurācijas sinhronizācijai](#active-checks). Netiek iekļauts, ja hosts konfigurācija nav mainījusies. Tiek palielināts, ja hosts 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)

::: noteimportant
Ņ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 ikviens var
izlikties par aktīvu aģentu un pieprasīt vienuma konfigurācijas datus;
autentifikācija nenotiek, ja vien netiek izmantotas
[šifrēšanas](/manual/encryption) opcijas.
:::

[comment]: # ({/426dc1ae-d898e135})

[comment]: # ({4c963bbb-8c5ecfe1})
##### 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ālināto komandu vērtības, ja tādas ir.
  
```json
{
  "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.4.0",
  "variant": 2
}
```

| Lauks |<| Tips | Obligāts | Vērtība |
|-|------|--|-|-----------------------|
| 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 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 stāvoklis. |
|^| 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ālināto komandu izpildes rezultāts. Ņemiet vērā, ka attālināto komandu izpilde aktīvajā aģentā tiek atbalstīta kopš Zabbix aģents 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ē. |
| | id | _number_ | no | Attālinātās komandas identifikators. |
|^| value | _string_ | no | Attālinātās komandas izpildes rezultāts, ja izpilde bija veiksmīga. |
|^| error | _string_ | no | Attālinātā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. |
| host |<| _string_ | yes | Host 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.
  
```json
{
  "response": "success",
  "info": "processed: 2; failed: 0; total: 2; seconds spent: 0.003534"
}
```

| Lauks | Tips | Obligāts | Vērtība |
|-|-|-|--------|
| response | _string_ | yes | `success` \| `failed` |
| info | _string_ | yes | Vienumu apstrādes rezultāti. |
  
::: noteimportant
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 slēgts

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

[comment]: # ({/4c963bbb-8c5ecfe1})

[comment]: # ({a13ec4d9-ee2b7a2a})
##### Sirdsdarbības ziņojums

**Aģents nosūta**

Sirdsdarbības ziņojumu aktīvs aģents nosūta Zabbix serverim/starpniekserverim
ik pēc HeartbeatFrequency sekundēm (konfigurēts [Zabbix aģenta](/manual/appendix/config/zabbix_agentd)/
[agent 2](/manual/appendix/config/zabbix_agent2) konfigurācijas failā).

To izmanto, lai uzraudzītu aktīvo pārbaužu pieejamību.

```json
{
  "request": "active check heartbeat",
  "host": "Zabbix server",
  "heartbeat_freq": 60,
  "version": "7.4.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ības ziņojumu (un turpmākās aktīvās pārbaudes) uz citu starpniekservera vai servera instanci.

```json
  {
    "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. |

[comment]: # ({/a13ec4d9-ee2b7a2a})

[comment]: # ({e66043c4-e66043c4})
#### Vecāks XML protokols

::: noteclassic
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.
:::

[comment]: # ({/e66043c4-e66043c4})
