This is a translation of the original English documentation page. Help us make it better.

2 Streaming naar externe systemen

Overzicht

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

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.

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. 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 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".

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.
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.
Er zijn verschillende operators beschikbaar voor elke voorwaarde:
Bestaat - de gespecificeerde tagnaam opnemen
Is gelijk aan - de gespecificeerde tagnaam en -waarden opnemen (hoofdlettergevoelig)
Bevat - de gespecificeerde tagnaam opnemen waar de tagwaarden de ingevoerde string bevatten (substring-match, hoofdletterongevoelig)
Bestaat niet - de gespecificeerde tagnaam uitsluiten
Is niet gelijk aan - de gespecificeerde tagnaam en -waarden uitsluiten (hoofdlettergevoelig)
Bevat niet - de gespecificeerde tagnaam uitsluiten waar de tagwaarden de ingevoerde string bevatten (substring-match, hoofdletterongevoelig)
Er zijn twee berekeningstypen voor voorwaarden:
En/Of - alle voorwaarden moeten worden voldaan, voorwaarden met dezelfde tagnaam worden gegroepeerd door de voorwaarde Of
Of - één voorwaarde is voldoende
HTTP-authenticatie Selecteer de authenticatieoptie:
Geen - er wordt geen authenticatie gebruikt;
Basis - basisauthenticatie wordt gebruikt;
NTLM - NTLM (Windows NT LAN Manager)-authenticatie wordt gebruikt;
Kerberos - Kerberos-authenticatie wordt gebruikt;
Digest - Digest-authenticatie wordt gebruikt;
Bearer - Bearer-authenticatie wordt gebruikt.
Gebruikersnaam Voer de gebruikersnaam in.
Dit veld is beschikbaar als HTTP-authenticatie is ingesteld op Basis, NTLM, Kerberos of Digest. Gebruikersmacro's worden ondersteund.
Wachtwoord Voer het gebruikerswachtwoord in.
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.
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).
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].
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.
Standaard wordt poort 1080 gebruikt.
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.
Je kunt ook een SOCKS-proxyadres invoeren. Als je het verkeerde protocol opgeeft, mislukt de verbinding en wordt het item niet ondersteund.
Let op dat alleen eenvoudige authenticatie wordt ondersteund met een HTTP-proxy.
Gebruikersmacro's worden ondersteund.
SSL certificaat valideren Markeer het selectievakje om het SSL-certificaat van de webserver te valideren.
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.
SSL host valideren Markeer het selectievakje om te controleren of het Common Name-veld of het Subject Alternate Name-veld van het webservercertificaat overeenkomt.
Dit stelt de CURLOPT_SSL_VERIFYHOST cURL-optie in.
SSL-certificaatbestand Naam van het SSL-certificaatbestand dat wordt gebruikt voor clientauthenticatie. Het certificaatbestand moet in PEM1-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. Gebruikersmacro's worden ondersteund.
SSL-sleutelbestand Naam van het SSL-privésleutelbestand dat wordt gebruikt voor clientauthenticatie. Het privésleutelbestand moet in PEM1-indeling zijn. De directory met dit bestand wordt opgegeven door de Zabbix-server- of proxy-configuratieparameter SSLKeyLocation. 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.

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.

Serververzoek

Voorbeeld van het verzenden van itemwaarden:

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:

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}
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:

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

Voorbeeld met fouten:

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"}