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.
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. |
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.
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}
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:
Voorbeeld met fouten: