2 Straumēšana uz ārējām sistēmām

Pārskats

Ir iespējams straumēt vienumu vērtības un notikumus no Zabbix uz ārējām sistēmām, izmantojot HTTP (skatiet protokola informāciju).

Birkas filtru var izmantot, lai straumētu vienumu vērtību vai notikumu apakškopas.

Par datu straumēšanu ir atbildīgi divi Zabbix servera procesu tipi: connector manager un connector worker. Zabbix iekšējais vienums zabbix[connector_queue] ļauj uzraudzīt savienotāja rindā ievietoto vērtību skaitu.

Konfigurēšana

Lai konfigurētu datu straumēšanu uz ārēju sistēmu, jāveic tālāk norādītās darbības:

1. Iestatiet attālo sistēmu datu saņemšanai no Zabbix. Šim nolūkam ir pieejami šādi rīki:

  • Vienkārša saņēmēja piemērs, kas saņemto informāciju reģistrē failos events.ndjson un history.ndjson.
  • Kafka connector for Zabbix server - viegls Go valodā rakstīts serveris, kas paredzēts vienumu vērtību un notikumu pārsūtīšanai no Zabbix servera uz Kafka brokeri.

2. Iestatiet nepieciešamo savienotāju darbu skaitu Zabbix, pielāgojot StartConnectors parametru failā zabbix_server.conf. Savienotāju darbu skaitam jāatbilst Zabbix lietotāja saskarnē konfigurētajam savienotāju skaitam (vai tas jāpārsniedz, ja vienlaicīgo sesiju skaits ir lielāks par 1). Pēc tam restartējiet Zabbix serveri.

3. Konfigurējiet jaunu savienotāju Zabbix lietotāja saskarnē (Administration > General > Connectors) un atkārtoti ielādējiet servera kešatmiņu ar komandu zabbix_server -R config_cache_reload.

Obligātie lauki ir atzīmēti ar zvaigznīti.

Parameter Description
Name Ievadiet savienotāja nosaukumu.
Data type Atlasiet straumējamo datu tipu:
Item values - straumēt vienumu vērtības no Zabbix uz ārējām sistēmām;
Events - straumēt notikumus no Zabbix uz ārējām sistēmām.
URL Ievadiet saņēmēja URL. Tiek atbalstīti lietotāja makro.
Tag filter Eksportēt tikai vienumu vērtības vai notikumus, kas atbilst tagu filtram. Ja filtrs nav iestatīts, tiek eksportēts viss.
Var iekļaut vai izslēgt konkrētus tagus un tagu vērtības. Var iestatīt vairākus nosacījumus. Tagu nosaukumu atbilstība vienmēr ir reģistrjutīga.

Katram nosacījumam ir pieejami vairāki operatori:
Exists - iekļaut norādītos tagu nosaukumus;
Equals - iekļaut norādītos tagu nosaukumus un vērtības (reģistrjutīgi);
Contains - iekļaut norādītos tagu nosaukumus, kuru tagu vērtības satur ievadīto virkni (apakšvirknes atbilstība, nav reģistrjutīga);
Does not exist - izslēgt norādītos tagu nosaukumus;
Does not equal - izslēgt norādītos tagu nosaukumus un vērtības (reģistrjutīgi);
Does not contain - izslēgt norādītos tagu nosaukumus, kuru tagu vērtības satur ievadīto virkni (apakšvirknes atbilstība, nav reģistrjutīga).

Nosacījumiem ir pieejami divi aprēķina tipi:
And/Or - jāizpilda visi nosacījumi; nosacījumi ar vienādu taga nosaukumu tiks grupēti, izmantojot nosacījumu Or;
Or - pietiek ar viena nosacījuma izpildi.
Type of information Atlasiet informācijas tipu (skaitlis (neparakstīts), skaitlis (peldošais komats), rakstzīme u. c.), pēc kura filtrēt vienumu vērtības, kas savienotājam jāstraumē.
Šis lauks ir pieejams, ja Data type ir iestatīts uz "Item values".
HTTP authentication Atlasiet autentifikācijas opciju:
None - autentifikācija netiek izmantota;
Basic - tiek izmantota pamata autentifikācija;
NTLM - tiek izmantota NTLM (Windows NT LAN Manager) autentifikācija;
Kerberos - tiek izmantota Kerberos autentifikācija (skatiet arī: Kerberos konfigurēšana ar Zabbix);
Digest - tiek izmantota Digest autentifikācija;
Bearer - tiek izmantota Bearer autentifikācija.
Username Ievadiet lietotājvārdu (līdz 255 rakstzīmēm). Tiek atbalstīti lietotāja makro.
Šis lauks ir pieejams, ja HTTP authentication ir iestatīts uz "Basic", "NTLM", "Kerberos" vai "Digest".
Password Ievadiet lietotāja paroli (līdz 255 rakstzīmēm). Tiek atbalstīti lietotāja makro.
Šis lauks ir pieejams, ja HTTP authentication ir iestatīts uz "Basic", "NTLM", "Kerberos" vai "Digest".
Bearer token Ievadiet Bearer pilnvaru. Tiek atbalstīti lietotāja makro.
Šis lauks ir pieejams un obligāts, ja HTTP authentication ir iestatīts uz "Bearer".
Advanced configuration Noklikšķiniet uz virsraksta Advanced configuration, lai parādītu papildu konfigurācijas opcijas (skatiet tālāk).
Max records per message Norādiet maksimālo vērtību vai notikumu skaitu, ko var straumēt vienā ziņojumā.
Concurrent sessions Atlasiet šim savienotājam palaižamo sūtītāja procesu skaitu. Var norādīt līdz 100 sesijām; noklusējuma vērtība ir "1".
Attempts Datu straumēšanas mēģinājumu skaits. Var norādīt līdz 5 mēģinājumiem; noklusējuma vērtība ir "1".
Attempt interval Norādiet, cik ilgi savienotājam jāgaida pēc neveiksmīga datu straumēšanas mēģinājuma. Var norādīt līdz 10 s; noklusējuma vērtība ir "5s".
Šis lauks ir pieejams, ja Attempts ir iestatīts uz "2" vai vairāk.
Neveiksmīgi ir mēģinājumi, kuros neizdevās izveidot savienojumu vai HTTP atbildes kods nav 200, 201, 202, 203 vai 204. Atkārtoti mēģinājumi tiek aktivizēti sakaru kļūdu gadījumā vai tad, ja HTTP atbildes kods nav 200, 201, 202, 203, 204, 400, 401, 403, 404, 405, 415 vai 422. Novirzīšanas tiek izpildītas, tāpēc 302 -> 200 ir pozitīva atbilde, savukārt 302 -> 503 aktivizēs atkārtotu mēģinājumu.
Timeout Norādiet ziņojuma taimautu (1-60 sekundes, noklusējuma vērtība - 5 sekundes).
Tiek atbalstīti laika sufiksi (piemēram, 30s, 1m). Tiek atbalstīti lietotāja makro.
HTTP proxy Varat norādīt izmantojamo HTTP starpniekserveri šādā formātā:
[protocol://][username[:password]@]proxy.example.com[:port]
Tiek atbalstīti lietotāja makro.

Neobligāto prefiksu protocol:// var izmantot, lai norādītu alternatīvus starpniekservera protokolus (protokola prefiksa atbalsts tika pievienots cURL 7.21.7). Ja protokols nav norādīts, starpniekserveris tiks uzskatīts par HTTP starpniekserveri. Pēc noklusējuma tiks izmantots ports 1080.

Ja HTTP proxy ir norādīts, starpniekserveris pārrakstīs ar starpniekserveri saistītos vides mainīgos, piemēram, http_proxy, HTTPS_PROXY. Ja tas nav norādīts, starpniekserveris ar starpniekserveri saistītos vides mainīgos nepārrakstīs. Ievadītā vērtība tiek nodota tālāk bez izmaiņām, un tās derīgums netiek pārbaudīts.
Varat ievadīt arī SOCKS starpniekservera adresi. Ja norādīsiet nepareizu protokolu, savienotājs nevarēs straumēt vienumu vērtības vai notikumus no Zabbix.

Ņemiet vērā, ka ar HTTP starpniekserveri tiek atbalstīta tikai vienkāršā autentifikācija.
SSL verify peer Atzīmējiet izvēles rūtiņu, lai pārbaudītu tīmekļa servera SSL sertifikātu.
Servera sertifikāts tiks automātiski iegūts no visas sistēmas sertificēšanas iestādes (CA) atrašanās vietas. CA failu atrašanās vietu varat mainīt, izmantojot Zabbix servera vai starpniekservera konfigurācijas parametru SSLCALocation.
SSL verify host Atzīmējiet izvēles rūtiņu, lai pārbaudītu, vai tīmekļa servera sertifikāta lauks Common Name vai Subject Alternate Name atbilst.
Tādējādi tiek iestatīta cURL opcija CURLOPT_SSL_VERIFYHOST.
SSL certificate file Klienta autentifikācijai izmantotā SSL sertifikāta faila nosaukums. Sertifikāta failam jābūt PEM1 formātā. Tiek atbalstīti lietotāja makro.
Ja sertifikāta failā ir arī privātā atslēga, atstājiet lauku SSL key file tukšu. Ja atslēga ir šifrēta, laukā SSL key password norādiet paroli. Direktoriju, kurā atrodas šis fails, norāda Zabbix servera vai starpniekservera konfigurācijas parametrs SSLCertLocation.
SSL key file Klienta autentifikācijai izmantotā SSL privātās atslēgas faila nosaukums. Privātās atslēgas failam jābūt PEM1 formātā. Tiek atbalstīti lietotāja makro.
Direktoriju, kurā atrodas šis fails, norāda Zabbix servera vai starpniekservera konfigurācijas parametrs SSLKeyLocation.
SSL key password SSL privātās atslēgas faila parole. Tiek atbalstīti lietotāja makro.
Description Ievadiet savienotāja aprakstu.
Enabled Atzīmējiet izvēles rūtiņu, lai iespējotu savienotāju.

Ja Kafka savienotājs ir konfigurēts ar komatiem atdalītu sāknēšanas brokeru adrešu sarakstu (piemēram, Kafka.URL=kafka1.example.com:9093,kafka2.example.com:9093), Kafka klients izveido savienojumu ar brokeri(-iem), kas atbild pirmais, un izmanto to klastera metadatus. Ja sarakstā ir adreses no dažādiem Kafka klasteriem, tiks izmantots tikai visātrāk atbildējušais klasteris, bet pārējās adreses tiks reģistrētas kā nepieejamas; tādēļ var tikt parādīti tālāk norādītie brīdinājumi par palaišanu, pat ja savienotājs ir savienots:

kafka cluster connected, but broker(s) "kafka1.example.com:9093, kafka2.example.com:9093" unavailable; will retry on message send if active brokers fail 

Dažās vidēs (privātajos tīklos, konteineru tīklos vai nestandarta DNS/hosts konfigurācijās) resursdatoru nosaukumi vai IP adreses var tikt atrisinātas uz cilpas atpakaļadresēm (piemēram, 127.0.0.1/localhost) vai arī klients tās var normalizēt, tādēļ šādi brīdinājumi var būt maldinoši. Lai mazinātu neskaidrības, pārliecinieties, ka visas Kafka.URL adreses pieder vienam un tam pašam Kafka klasterim, pārbaudiet DNS izšķiršanu no savienotāja resursdatora un brokeru advertised.listeners, kā arī dodiet priekšroku adresēm, kas tiek izšķirtas uz brokera reklamēto adresi.

Protokols

Saziņa starp serveri un saņēmēju notiek, izmantojot HTTP un REST API, NDJSON, "Content-Type: application/x-ndjson".

Lai iegūtu sīkāku informāciju, skatiet Ar jaunu rindu atdalīta JSON eksporta protokolu.

Servera pieprasījums

Piemērs vienumu vērtību straumēšanai:

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}

Piemērs notikumu straumēšanai:

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 for foo being 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}
Saņēmēja atbilde

Atbilde sastāv no HTTP atbildes statusa koda un JSON slodzes. HTTP atbildes statusa kodam jābūt "200", "201", "202", "203" vai "204" pieprasījumiem, kas tika veiksmīgi apstrādāti, bet citam kodam — neveiksmīgiem pieprasījumiem.

Veiksmīgas atbildes piemērs:

HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
Date: Tue, 21 Apr 2026 10:13:04 GMT
Content-Length: 23

{"response":"success"}

Piemērs ar kļūdām:

HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
X-Content-Type-Options: nosniff
Date: Tue, 21 Apr 2026 12:15:01 GMT
Content-Length: 55

{"error":"invalid character '{' after top-level value"}