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 procesi: connector manager un connector worker. Zabbix iekšējais vienums zabbix[connector_queue] ļauj uzraudzīt savienotāja rindā ievietoto vērtību skaitu.

Konfigurācija

Lai konfigurētu datu straumēšanu uz ārēju sistēmu, ir jāveic šādas darbības:

1. Jābūt attālinātai sistēmai, kas ir iestatīta datu saņemšanai no Zabbix. Šim nolūkam ir pieejami šādi rīki:

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

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

3. Konfigurējiet jaunu savienotāju Zabbix lietotāja saskarnē (Administration > General > Connectors) un pārlā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 uztvērēja URL. Tiek atbalstīti lietotāja makrosi.
Tag filter Eksportēt tikai tās vienumu vērtības vai notikumus, kas atbilst birku filtram. Ja tas nav iestatīts, tiek eksportēts viss.
Ir iespējams gan iekļaut, gan izslēgt noteiktas birkas un birku vērtības. Var iestatīt vairākus nosacījumus. Birku nosaukumu atbilstība vienmēr ir reģistrjutīga.

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

Nosacījumiem ir pieejami divi aprēķina tipi:
And/Or - visiem nosacījumiem jābūt izpildītiem, nosacījumi ar vienādu birkas nosaukumu tiks grupēti pēc Or nosacījuma;
Or - pietiek, ja ir izpildīts viens nosacījums.
Type of information Atlasiet informācijas tipu (numeric (unsigned), numeric (float), character u.c.), pēc kura filtrēt vienumu vērtības, kuras 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ī: Configuring Kerberos with 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 makrosi.
Š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 makrosi.
Šis lauks ir pieejams, ja HTTP authentication ir iestatīts uz "Basic", "NTLM", "Kerberos" vai "Digest".
Bearer token Ievadiet Bearer tokenu. Tiek atbalstīti lietotāja makrosi.
Šis lauks ir pieejams un obligāts, ja HTTP authentication ir iestatīts uz "Bearer".
Advanced configuration Noklikšķiniet uz etiķetes Advanced configuration, lai parādītu paplašinātās 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 sūtītāja procesu skaitu, kas jāpalaiž šim savienotājam. 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 10s; noklusējuma vērtība ir "5s".
Šis lauks ir pieejams, ja Attempts ir iestatīts uz "2" vai vairāk.
Neveiksmīgi mēģinājumi ir tie, kuros nav izdevies izveidot savienojumu vai kuros HTTP atbildes kods nav 200, 201, 202, 203, 204. Atkārtoti mēģinājumi tiek aktivizēti, ja ir sakaru kļūdas vai ja HTTP atbildes kods nav 200, 201, 202, 203, 204, 400, 401, 403, 404, 405, 415, 422. Pāradresācijas tiek sekotas, tāpēc 302 -> 200 ir pozitīva atbilde; savukārt 302 -> 503 izraisīs atkārtotu mēģinājumu.
Timeout Norādiet ziņojuma noildzi (1-60 sekundes, noklusējums - 5 sekundes).
Tiek atbalstīti laika sufiksi, piemēram, 30s, 1m. Tiek atbalstīti lietotāja makrosi.
HTTP proxy Varat norādīt izmantojamo HTTP starpniekserveri šādā formātā:
[protocol://][username[:password]@]proxy.example.com[:port]
Tiek atbalstīti lietotāja makrosi.

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 1080 ports.

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 nepārrakstīs ar starpniekserveri saistītos vides mainīgos. Ievadītā vērtība tiek nodota tāda, kāda tā ir, bez jebkādas korektuma pārbaudes.
Varat ievadīt arī SOCKS starpniekservera adresi. Ja norādīsiet nepareizu protokolu, savienojums neizdosies un vienums kļūs neatbalstīts.

Ņ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 paņemts no sistēmas sertifikācijas iestādes (CA) atrašanās vietas. Varat pārrakstīt CA failu atrašanās vietu, 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 lauks Subject Alternate Name atbilst.
Tas iestata cURL opciju CURLOPT_SSL_VERIFYHOST.
SSL certificate file SSL sertifikāta faila nosaukums, ko izmanto klienta autentifikācijai. Sertifikāta failam jābūt PEM1 formātā. Tiek atbalstīti lietotāja makrosi.
Ja sertifikāta failā ir arī privātā atslēga, atstājiet lauku SSL key file tukšu. Ja atslēga ir šifrēta, norādiet paroli laukā SSL key password. Direktoriju, kurā atrodas šis fails, nosaka Zabbix servera vai starpniekservera konfigurācijas parametrs SSLCertLocation.
SSL key file SSL privātās atslēgas faila nosaukums, ko izmanto klienta autentifikācijai. Privātās atslēgas failam jābūt PEM1 formātā. Tiek atbalstīti lietotāja makrosi.
Direktoriju, kurā atrodas šis fails, nosaka Zabbix servera vai starpniekservera konfigurācijas parametrs SSLKeyLocation.
SSL key password SSL privātās atslēgas faila parole. Tiek atbalstīti lietotāja makrosi.
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 bootstrap brokera adrešu sarakstu (piemēram, Kafka.URL=kafka1.example.com:9093,kafka2.example.com:9093), Kafka klients izveido savienojumu ar brokeri(-iem), kas atbild pirmie, 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; rezultātā startēšanas laikā var parādīties šādi brīdinājumi, pat ja savienotājs ir pieslēgts:

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ātie tīkli, konteineru tīkli vai nestandarta DNS/hosts iestatījumi) resursdatora nosaukumi vai IP adreses var tikt atrisinātas uz loopback adresēm (piemēram, 127.0.0.1/localhost) vai klienta pusē normalizētas, kas šādus brīdinājumus var padarīt maldinošus. Lai mazinātu neskaidrības, pārliecinieties, ka visas Kafka.URL adreses pieder vienam un tam pašam Kafka klasterim, pārbaudiet DNS atrisināšanu no savienotāja hosta un brokeru advertised.listeners, kā arī dodiet priekšroku adresēm, kas tiek atrisinātas uz brokera izziņoto 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; citi kodi norāda uz neveiksmīgiem pieprasījumiem.

Veiksmīgas atbildes piemērs:

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

Piemērs ar kļūdām:

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