[comment]: # translation:outdated

[comment]: # ({a6d31bd3-a6d31bd3})
# 2 Passive and active agent checks

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

[comment]: # ({ebad8564-7bd0dd61})
#### Overview

Deze sectie bevat details over passieve en actieve controles uitgevoerd door
[Zabbix agent](/manual/config/items/itemtypes/zabbix_agent).

Zabbix gebruikt een op JSON gebaseerd communicatie protocol om te communiceren met de
Zabbix agent.

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

[comment]: # ({67249428-e6db8dd6})
#### Passieve controles

Een passieve controle is een eenvoudig gegevensverzoek. Zabbix-server of proxy vraagt
voor sommige gegevens (bijvoorbeeld CPU-belasting) en Zabbix-agent stuurt de
resultaat naar de server.

**Serververzoek**

Voor definitie van koptekst en gegevenslengte verwijzen wij u naar [protocol
details](/manual/appendix/protocols/header_datalen).

    <itemtoets>

**Reactie agent**

    <GEGEVENS>[\0<FOUT>]

Hierboven is het gedeelte tussen vierkante haken optioneel en wordt alleen verzonden voor niet
ondersteunde artikelen.

Voor ondersteunde items bijvoorbeeld:

1. Server opent een TCP-verbinding
2. Server verzendt **<HEADER><DATALEN>agent.ping**
3. Agent leest het verzoek en reageert met:
    **<HEADER><DATALEN>1**
4. Server verwerkt gegevens om de waarde '1' in ons geval te krijgen
5. TCP-verbinding is gesloten

Voor niet-ondersteunde items:

1. Server opent een TCP-verbinding
2. Server verzendt **<HEADER><DATALEN>vfs.fs.size\[/nono\]**
3. Agent leest het verzoek en reageert met:
    **<HEADER><DATALEN>ZBX\_NOTSUPPORTED\\0Kan niet verkrijgen
    bestandssysteeminformatie: \[2\] Geen dergelijk bestand of map**
4. Server verwerkt gegevens, wijzigt itemstatus in niet ondersteund met de
    gespecificeerde foutmelding
5. TCP-verbinding is gesloten

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

[comment]: # ({new-d33dfdd3})
##### Failover to old protocol

To make sure that Zabbix server or proxy can work with agents from pre-7.0 versions, which have plaintext protocol, a failover to the old protocol is implemented. 

Passive checks are performed using the JSON protocol (7.0 and later) after restart or when the interface configuration is changed. 
If no valid JSON is received in response (agent sent "ZBX_NOTSUPPORTED"), Zabbix will cache the interface as old protocol and **retry** the check by sending only the item key.

Note that every hour Zabbix server/proxy will again try working with the new protocol with all interfaces, falling back to the old protocol if required.

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

[comment]: # ({ba5ca54d-ecdd6e8e})
#### Actieve controles

Actieve controles vereisen complexere verwerking. De agent moet eerst van de server(s) een lijst met items ophalen voor onafhankelijke verwerking.

De servers waarvan de actieve controles moeten worden opgehaald, worden vermeld in de parameter 'ServerActive' van het agent [configuratiebestand](/manual/appendix/config/zabbix_agentd). De frequentie van het opvragen van deze controles wordt ingesteld door de parameter 'RefreshActiveChecks' in hetzelfde configuratiebestand. Als het vernieuwen van actieve controles echter mislukt, wordt het na 60 seconden opnieuw geprobeerd.

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

[comment]: # ({8c764e51-4c14cd28})
::: notetip
Om het netwerkverkeer en het gebruik van resources te verminderen, zal de Zabbix-server of Zabbix-proxy de configuratie alleen verstrekken als de Zabbix-agent nog geen configuratie heeft ontvangen of als er iets is gewijzigd in de hostconfiguratie, globale macro's of globale reguliere expressies.
:::

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

[comment]: # ({40d8b022-2f80420a})
De agent stuurt vervolgens periodiek de nieuwe waarden naar de server(s).

::: notetip
Als een agent zich achter de firewall bevindt, kunt u overwegen om alleen actieve controles te gebruiken, omdat u in dat geval de firewall niet hoeft aan te passen om inkomende verbindingen toe te staan.
:::

[comment]: # ({/40d8b022-2f80420a})

[comment]: # ({9b86fb38-d898e135})
##### Het ophalen van de lijst met items

**Agent aanvraag**

De aanvraag voor actieve controles wordt gebruikt om de actieve controles te verkrijgen die door de agent moeten worden verwerkt.
Deze aanvraag wordt door de agent verzonden bij het opstarten en vervolgens met intervallen van [RefreshActiveChecks](/manual/appendix/config/zabbix_agentd).

```json
{
  "request": "active checks",
  "host": "Zabbix server",
  "host_metadata": "mysql,nginx",
  "hostinterface": "zabbix.server.lan",
  "ip": "159.168.1.1",
  "port": 12050,
  "config_revision": 1,
  "session": "e3dcbd9ace2c9694e1d7bbd030eeef6e"
}
```

| Veld | Type | Verplicht | Waarde |
|-|-|-|--------|
| request | _string_ | ja | `active checks` |
| host | _string_ | ja | Hostnaam. |
| host_metadata | _string_ | nee | De configuratieparameter HostMetadata of de metricwaarde HostMetadataItem. |
| hostinterface | _string_ | nee | De configuratieparameter HostInterface of de metricwaarde HostInterfaceItem. |
| ip | _string_ | nee | Het eerste IP-adres van de configuratieparameter ListenIP, indien ingesteld. |
| port | _number_ | nee | De waarde van de configuratieparameter ListenPort, indien ingesteld en niet de standaard luisterpoort van de agent. |
| config_revision | _number_ | nee | Configuratie-identificatie voor [incrementele configuratiesynchronisatie](/manual/installation/upgrade_notes_640). |
| session | _string_ | nee | Sessie-identificatie voor [incrementele configuratiesynchronisatie](/manual/installation/upgrade_notes_640). |
  
**Serverreactie**

Het antwoord op de actieve controles wordt door de server teruggestuurd naar de agent na verwerking van de aanvraag voor actieve controles.
  
```json
{
  "response": "success",
  "data": [
    {
      "key": "log[/home/zabbix/logs/zabbix_agentd.log]",
      "key_orig": "log[/home/zabbix/logs/zabbix_agentd.log]",
      "itemid": 1234,
      "delay": "30s",
      "lastlogsize": 0,
      "mtime": 0
    },
    {
      "key": "agent.version",
      "key_orig": "agent.version",
      "itemid": 5678,
      "delay": "10m",
      "lastlogsize": 0,
      "mtime": 0
    }
  ],
  "config_revision": 2
}

```

| Veld |<| Type | Verplicht | Waarde |
|-|------|--|-|-----------------------|
| response |<| _string_ | ja | `success` \| `failed` |
| info |<| _string_ | nee | Foutinformatie in geval van mislukking. |
| data |<| _array of objects_ | nee | Actieve controle-items. Niet opgenomen als de hostconfiguratie ongewijzigd is. |
| | key | _string_ | nee | Item-sleutel met uitgebreide macro's. |
|^| key_orig | _string_ | nee | Item-sleutel zonder uitgebreide macro's. |
|^| itemid | _number_ | nee | Item-identificatie. |
|^| delay | _string_ | nee | Interval voor het bijwerken van het item. |
|^| lastlogsize | _number_ | nee | Laatste grootte van logbestanden van het item. |
|^| mtime | _number_ | nee | Tijdstempel van het item. |
| refresh_unsupported |<| _number_ | nee | Interval voor het vernieuwen van niet-ondersteunde items. |
| regexp |<| _array of objects_ | nee | Globale reguliere expressies. |
| | name | _string_ | nee | Naam van de globale reguliere expressie. |
|^| expression | _string_ | nee | Globale reguliere expressie. |
|^| expression_type | _number_ | nee | Type van de globale reguliere expressie. |
|^| exp_delimiter | _string_ | nee | Delimiter van de globale reguliere expressie. |
|^| case_sensitive | _number_ | nee | Instelling voor hoofdlettergevoeligheid van de globale reguliere expressie. |
| config_revision | < | _number_ | nee | Configuratie-identificatie voor [incrementele configuratiesynchronisatie](/manual/installation/upgrade_notes_640). Niet opgenomen als de hostconfiguratie ongewijzigd is. Wordt verhoogd als de hostconfiguratie is gewijzigd. |
 
De server moet reageren met succes.

Bijvoorbeeld:

1.  Agent opent een TCP-verbinding
2.  Agent vraagt om de lijst met controles
3.  Server antwoordt met een lijst van items (item-sleutel, interval)
4.  Agent analyseert het antwoord
5.  TCP-verbinding wordt gesloten
6.  Agent begint periodiek gegevens te verzamelen

::: noteimportant
Merk op dat (gevoelige) configuratiegegevens mogelijk
beschikbaar worden voor partijen die toegang hebben tot de Zabbix-server trapper
poort bij gebruik van een actieve controle. Dit is mogelijk omdat iedereen kan
doen alsof hij een actieve agent is en itemconfiguratiegegevens kan opvragen;
authenticatie vindt niet plaats tenzij u [encryptie](/manual/encryption) opties gebruikt.
:::

[comment]: # ({/9b86fb38-d898e135})

[comment]: # ({82700263-8c5ecfe1})
##### Verzenden van verzamelde gegevens

**Agent stuurt**

De aanvraag voor agentgegevens bevat de verzamelde itemwaarden.
  
```json
{
  "request": "agent data",
  "data": [
    {
      "host": "Zabbix server",
      "key": "agent.version",
      "value": "2.4.0",
      "clock": 1400675595,
      "ns": 76808644
    },
    {
      "host": "Zabbix server",
      "key": "log[/home/zabbix/logs/zabbix_agentd.log]",
      "lastlogsize": 112,
      "value": " 19845:20140621:141708.521 Starting Zabbix Agent [<hostname>]. Zabbix 2.4.0 (revision 50000).",
      "clock": 1400675595,
      "ns": 77053975
    }
  ],
  "session": "1234456akdsjhfoui"
}
```

| Veld |<| Type | Verplicht | Waarde |
|-|------|--|-|-----------------------|
| request |<| _string_ | ja | `agent data` |
| session |<| _string_ | ja | Unieke sessie-identificatie die telkens wordt gegenereerd wanneer de agent wordt gestart. |
| data |<| _array of objects_ | ja | Itemwaarden. |
| | id | _number_ | ja | De waarde-identificatie (toenemende teller die wordt gebruikt om gedupliceerde waarden te controleren in geval van netwerkproblemen). |
|^| host | _string_ | ja | Hostnaam. |
|^| key | _string_ | ja | De item-sleutel. |
|^| value | _string_ | nee | De item-waarde. |
|^| lastlogsize | _number_ | nee | De laatste grootte van logbestanden van het item. |
|^| mtime | _number_ | nee | Tijdstempel van het item. |
|^| state | _number_ | nee | Status van het item. |
|^| source | _string_ | nee | De bron van het waardegebeurtenislogboek. |
|^| eventid | _number_ | nee | De waarde van de gebeurtenislogboek-id. |
|^| severity | _number_ | nee | De ernst van het waardegebeurtenislogboek. |
|^| timestamp | _number_ | nee | Tijdstempel van het waardegebeurtenislogboek. |
|^| clock | _number_ | ja | De waarde van het tijdstempel (seconden sinds Epoch). |
|^| ns | _number_ | ja | De waarde van nanoseconden van het tijdstempel. |

Elke waarde krijgt een virtuele ID toegewezen. De waarde-ID is een eenvoudige oplopende
teller, uniek binnen één gegevenssessie (geïdentificeerd door de sessie
token). Deze ID wordt gebruikt om dubbele waarden te negeren die mogelijk worden verzonden
in omgevingen met slechte connectiviteit.

**Serverreactie**

Het antwoord op de agentgegevens wordt door de server teruggestuurd naar de agent na verwerking van de aanvraag voor agentgegevens.
  
```json
{
  "response": "success",
  "info": "verwerkt: 2; mislukt: 0; totaal: 2; seconden besteed: 0.003534"
}
```

| Veld | Type | Verplicht | Waarde |
|-|-|-|--------|
| response | _string_ | ja | `success` \| `failed` |
| info | _string_ | ja | Resultaten van itemverwerking. |
  
::: noteimportant
Als het verzenden van sommige waarden mislukt op de server (bijvoorbeeld omdat de host of het item is uitgeschakeld of verwijderd), zal de agent
niet proberen om die waarden opnieuw te verzenden.
:::

Bijvoorbeeld:

1.  Agent opent een TCP-verbinding
2.  Agent stuurt een lijst met waarden
3.  Server verwerkt de gegevens en stuurt de status terug
4.  TCP-verbinding wordt gesloten

Merk op hoe in het bovenstaande voorbeeld de status "not supported" voor
vfs.fs.size\[/nono\] wordt aangegeven door de waarde "state" van 1 en de
foutmelding in het eigenschap "value".

::: noteimportant
Foutmelding wordt aan serverzijde ingekort tot 2048 tekens.
:::

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

[comment]: # ({34a853e9-ee2b7a2a})
##### Heartbeat-bericht

Het heartbeat-bericht wordt door een actieve agent naar Zabbix server/proxy gestuurd 
elke HeartbeatFrequency seconden (geconfigureerd in het Zabbix-agent 
[configuratiebestand](/manual/appendix/config/zabbix_agentd)). 

Het wordt gebruikt om de beschikbaarheid van actieve controles te controleren.

```json
{
  "request": "active check heartbeat",
  "host": "Zabbix server",
  "heartbeat_freq": 60
}
```

| Veld | Type | Verplicht | Waarde |
|-|-|-|--------|
| request | _string_ | ja | `active check heartbeat` |
| host | _string_ | ja | De hostnaam. |
| heartbeat_freq | _number_ | ja | De frequentie van de agent heartbeat (HeartbeatFrequency configuratieparameter). |

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

[comment]: # ({e66043c4-e66043c4})
#### Ouder XML-protocol

::: noteclassic
Zabbix neemt tot 16 MB aan XML Base64-gecodeerde gegevens in beslag, maar
een enkele gedecodeerde waarde mag niet langer zijn dan 64 KB, anders zal het
worden ingekort tot 64 KB tijdens het decoderen.
:::

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