[comment]: # translation:outdated

[comment]: # ({cdb0d4ea-b45624e8})
# 2 Streaming naar externe systemen

[comment]: # ({/cdb0d4ea-b45624e8})

[comment]: # ({b1d03067-c479d2fd})
#### Overzicht

Het is mogelijk om itemwaarden en gebeurtenissen van Zabbix naar externe systemen te streamen via HTTP (zie [protocolgegevens](#protocol)).

::: notewarning
Deze functie heeft momenteel een experimentele status.
:::

De tagfilter kan worden gebruikt om subsets van itemwaarden of gebeurtenissen te streamen.

Twee Zabbix-serverprocessen zijn verantwoordelijk voor het streamen van gegevens: `connector manager` en `connector worker`. Een interne Zabbix-item `zabbix[connector_queue]` maakt het mogelijk om het aantal waarden in de connectorwachtrij te controleren.

[comment]: # ({/b1d03067-c479d2fd})

[comment]: # ({36e14515-cfad3c2f})
#### Configuratie

De volgende stappen zijn vereist om gegevensstreaming naar een extern systeem te configureren:

**1.** Zorg ervoor dat er een extern systeem is ingesteld om gegevens van Zabbix te ontvangen.

Bekijk de documentatie van een eenvoudige [ontvanger](https://git.zabbix.com/projects/ZT/repos/receiver/browse). De ontvanger logt momenteel de ontvangen informatie in events.ndjson- en history.ndjson-bestanden.

**2.** Stel het vereiste aantal connector workers in Zabbix in (zie [StartConnectors](/manual/appendix/config/zabbix_server#startconnectors) in zabbix_server.conf). Start de Zabbix-server opnieuw op.

**3.** Configureer een nieuwe connector in Zabbix (*Beheer* -> *Algemeen* -> *Connectors*) en laad de servercache opnieuw met "zabbix_server -R config_cache_reload".

![](../../../../assets/en/manual/config/connector.png)

Verplichte velden zijn gemarkeerd met een asterisk.

|Parameter|Omschrijving|
|--|--------|
|*Naam*|Voer de naam van de connector in. |
|*Gegevenstype*|Selecteer het gegevenstype: *Itemwaarden* of *Gebeurtenissen*. |
|*URL*|Voer de URL van de ontvanger in. Gebruikersmacro's worden ondersteund. |
|*Tagfilter*|Exporteer alleen waarden of gebeurtenissen die overeenkomen met het tagfilter. Als het niet is ingesteld, wordt alles geëxporteerd.<br>Het is mogelijk om specifieke tags en tagwaarden toe te voegen en uit te sluiten. Verschillende voorwaarden kunnen worden ingesteld. Het overeenkomen van de tagnaam is altijd hoofdlettergevoelig.<br>Er zijn verschillende operators beschikbaar voor elke voorwaarde:<br>**Bestaat** - de gespecificeerde tagnaam opnemen<br>**Is gelijk aan** - de gespecificeerde tagnaam en -waarden opnemen (hoofdlettergevoelig)<br>**Bevat** - de gespecificeerde tagnaam opnemen waar de tagwaarden de ingevoerde string bevatten (substring-match, hoofdletterongevoelig)<br>**Bestaat niet** - de gespecificeerde tagnaam uitsluiten<br>**Is niet gelijk aan** - de gespecificeerde tagnaam en -waarden uitsluiten (hoofdlettergevoelig)<br>**Bevat niet** - de gespecificeerde tagnaam uitsluiten waar de tagwaarden de ingevoerde string bevatten (substring-match, hoofdletterongevoelig)<br>Er zijn twee berekeningstypen voor voorwaarden:<br>**En/Of** - alle voorwaarden moeten worden voldaan, voorwaarden met dezelfde tagnaam worden gegroepeerd door de voorwaarde Of<br>**Of** - één voorwaarde is voldoende |
|*HTTP-authenticatie*|Selecteer de authenticatieoptie:<br>**Geen** - er wordt geen authenticatie gebruikt;<br>**Basis** - basisauthenticatie wordt gebruikt;<br>**NTLM** - NTLM ([Windows NT LAN Manager)](http://en.wikipedia.org/wiki/NTLM)-authenticatie wordt gebruikt;<br>**Kerberos** - Kerberos-authenticatie wordt gebruikt;<br>**Digest** - Digest-authenticatie wordt gebruikt;<br>**Bearer** - Bearer-authenticatie wordt gebruikt.|
|*Gebruikersnaam*|Voer de gebruikersnaam in.<br>Dit veld is beschikbaar als *HTTP-authenticatie* is ingesteld op Basis, NTLM, Kerberos of Digest. Gebruikersmacro's worden ondersteund. |
|*Wachtwoord*|Voer het gebruikerswachtwoord in.<br>Dit veld is beschikbaar als *HTTP-authenticatie* is ingesteld op Basis, NTLM, Kerberos of Digest. Gebruikersmacro's worden ondersteund. |
|*Bearer-token*|Voer het Bearer-token in.<br>Dit veld is beschikbaar en vereist als *HTTP-authenticatie* is ingesteld op Bearer. Gebruikersmacro's worden ondersteund. |
|*Geavanceerde configuratie*|Markeer dit selectievakje om geavanceerde configuratie-opties weer te geven. |
|*Maximale records per bericht*|Geef het maximale aantal waarden of gebeurtenissen op dat binnen één bericht kan worden verzonden. |
|*Gelijktijdige sessies*|Selecteer het aantal verzendprocessen dat voor deze connector wordt uitgevoerd. Er kunnen maximaal 100 sessies worden opgegeven; de standaardwaarde is '1'.|
|*Pogingen*|Aantal pogingen om de gegevens te verzenden. Er kunnen maximaal 5 pogingen worden opgegeven; de standaardwaarde is '1'.|
|*Time-out*|Geef de bericht-time-out op (1-60 seconden, standaard 5 seconden).<br>Tijdsuffixen worden ondersteund, bijv. 30s, 1m. Gebruikersmacro's worden ondersteund. |
|*HTTP-proxy*|Je kunt een HTTP-proxy opgeven die wordt gebruikt, met de indeling `[protocol://][gebruikersnaam[:wachtwoord]@]proxy.example.com[:poort]`.<br>De optionele voorvoegsel `protocol://` kan worden gebruikt om alternatieve proxyprotocollen op te geven (de protocolvoorvoegselondersteuning werd toegevoegd in cURL 7.21.7). Als er geen protocol is opgegeven, wordt de proxy behandeld als een HTTP-proxy.<br>Standaard wordt poort 1080 gebruikt.<br>Als dit is gespecificeerd, overschrijft de proxy proxy-gerelateerde omgevingsvariabelen zoals http_proxy, HTTPS_PROXY. Als dit niet is gespecificeerd, overschrijdt de proxy proxy-gerelateerde omgevingsvariabelen niet. De ingevoerde waarde wordt "as is" doorgegeven, er vindt geen sanity-check plaats.<br>Je kunt ook een SOCKS-proxyadres invoeren. Als je het verkeerde protocol opgeeft, mislukt de verbinding en wordt het item niet ondersteund.<br>*Let op* dat alleen eenvoudige authenticatie wordt ondersteund met een HTTP-proxy.<br>Gebruikersmacro's worden ondersteund.|
|*SSL certificaat valideren*|Markeer het selectievakje om het SSL-certificaat van de webserver te valideren.<br>Het servercertificaat wordt automatisch overgenomen uit de locatie van de systeemwijde certificeringsinstantie (CA). Je kunt de locatie van CA-bestanden overschrijven met de Zabbix-server- of proxy-configuratieparameter [SSLCALocation](/manual/appendix/config/zabbix_server).|
|*SSL host valideren*|Markeer het selectievakje om te controleren of het *Common Name*-veld of het *Subject Alternate Name*-veld van het webservercertificaat overeenkomt.<br>Dit stelt de [CURLOPT\_SSL\_VERIFYHOST](http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYHOST.html) cURL-optie in.|
|*SSL-certificaatbestand*|Naam van het SSL-certificaatbestand dat wordt gebruikt voor clientauthenticatie. Het certificaatbestand moet in PEM^1^-indeling zijn. Als het certificaatbestand ook de privésleutel bevat, laat dan het veld *SSL-sleutelbestand* leeg. Als de sleutel is versleuteld, geef dan het wachtwoord op in het veld *SSL-sleutelwachtwoord*. De directory met dit bestand wordt opgegeven door de Zabbix-server- of proxy-configuratieparameter [SSLCertLocation](/manual/appendix/config/zabbix_server). Gebruikersmacro's worden ondersteund. |
|*SSL-sleutelbestand*|Naam van het SSL-privésleutelbestand dat wordt gebruikt voor clientauthenticatie. Het privésleutelbestand moet in PEM^1^-indeling zijn. De directory met dit bestand wordt opgegeven door de Zabbix-server- of proxy-configuratieparameter [SSLKeyLocation](/manual/appendix/config/zabbix_server). Gebruikersmacro's worden ondersteund. |
|*SSL-sleutelwachtwoord*|Wachtwoord voor het SSL-privésleutelbestand. Gebruikersmacro's worden ondersteund. |
|*Omschrijving*|Voer de connectoromschrijving in. |
|*Ingeschakeld*|Markeer het selectievakje om de connector in te schakelen. |

[comment]: # ({/36e14515-cfad3c2f})

[comment]: # ({8076b723-b67df609})
#### Protocol

De communicatie tussen de server en de ontvanger verloopt via HTTP met behulp van een REST API, NDJSON, "Content-Type: application/x-ndjson".

Voor meer details, zie [protocol voor exporteren van JSON met gescheiden regels](/manual/appendix/protocols/real_time_export).

[comment]: # ({/8076b723-b67df609})

[comment]: # ({0f5d5562-ae5d9204})
##### Serververzoek

Voorbeeld van het verzenden van itemwaarden:

```json
POST /v1/history HTTP/1.1
Host: localhost:8080
Accept: */*
Accept-Encoding: deflate, gzip, br, zstd
Content-Length: 628
Content-Type: application/x-ndjson
 
{"host":{"host":"Zabbix-server","name":"Zabbix-server"},"groups":["Zabbix-servers"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":44457,"name":"foo","clock":1673454303,"ns":800155804,"value":0,"type":3}
{"host":{"host":"Zabbix-server","name":"Zabbix-server"},"groups":["Zabbix-servers"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":44457,"name":"foo","clock":1673454303,"ns":832290669,"value":1,"type":3}
{"host":{"host":"Zabbix-server","name":"Zabbix-server"},"groups":["Zabbix-servers"],"item_tags":[{"tag":"bar","value":"test"}],"itemid":44458,"name":"bar","clock":1673454303,"ns":867770366,"value":123,"type":3}
```

Voorbeeld van het verzenden van gebeurtenissen:

```json
POST /v1/events HTTP/1.1
Host: localhost:8080
Accept: */*
Accept-Encoding: deflate, gzip, br, zstd
Content-Length: 333
Content-Type: application/x-ndjson
 
{"clock":1673454303,"ns":800155804,"value":1,"eventid":5,"name":"trigger voor foo is 0","severity":0,"hosts":[{"host":"Zabbix-server","name":"Zabbix-server"}],"groups":["Zabbix-servers"],"tags":[{"tag":"foo_trig","value":"test"},{"tag":"foo","value":"test"}]}
{"clock":1673454303,"ns":832290669,"value":0,"eventid":6,"p_eventid":5}
```

[comment]: # ({/0f5d5562-ae5d9204})

[comment]: # ({5b1ed4b8-89101d44})
##### Ontvangerrespons

De respons bestaat uit de HTTP-statuscode en de JSON-payload. De HTTP-statuscode moet "200" zijn voor verzoeken die succesvol zijn afgehandeld, en anders voor mislukte verzoeken.

Voorbeeld van succes:

```json
localhost:8080/v1/history": HTTP/1.1 200 OK
Date: Wed, 11 Jan 2023 16:40:30 GMT
Content-Length: 0
```

Voorbeeld met fouten:

```json
localhost:8080/v1/history": HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Date: Wed, 11 Jan 2023 17:07:36 GMT
Content-Length: 55
 
{"error":"invalid character '{' after top-level value"}
```

[comment]: # ({/5b1ed4b8-89101d44})
