Стримовање ка спољним системима

Преглед

Могуће је стримовати вредности ставки и догађаје са Zabbix-а на спољне системе преко HTTP-а (погледајте детаљи протокола).

Филтер ознака се може користити за стримовање подскупова вредности ставки или догађаја.

Два процеса Zabbix сервера су одговорна за стримовање података: менаџер конектора и конекторски радник. Zabbix интерна ставка zabbix[connector_queue] омогућава праћење броја вредности у реду у реду конектора.

Конфигурација

Следећи кораци су потребни да бисте конфигурисали стримовање података на спољни систем:

1. Подесите удаљени систем за пријем података од Zabbix-а. У ту сврху, доступни су следећи алати:

  • Пример једноставног пријемника који евидентира примљене информације у датотеке events.ndjson и history.ndjson.
  • Kafka конектор за Zabbix сервер - лагани сервер написан у Go, дизајниран да прослеђује вредности ставки и догађаје са Zabbix сервера Kafka брокеру.

2 . Подесите потребан број радника конектора у Zabbix-у тако што ћете подесити параметар StartConnectors у zabbix_server.conf. Број радника конектора треба да се подудара (или премашује ако су истовремене сесије је више од 1) конфигурисаног броја конектора у Zabbix корисничком интерфејсу. Затим поново покрените Заббик сервер.

3. Конфигуришите нови конектор у Zabbix корисничком интерфејсу (АдминистрацијаОпштеКонектори) и поново учитајте кеш сервера помоћу команде zabbix_server -R config_cache_reload.

Обавезна поља су означено звездицом.

Parameter Description
* Name* Унесите име конектора.
Data type Изаберите тип података за стримовање:
Item values - стримујте вредности ставки са Zabbix -а на спољне системе;
** Events** - преносите догађаје са Zabbix-а на спољне системе.
* URL* Унесите URL примаоца. Подржани су кориснички макрои.
Tag filter Извезите само вредности ставки или догађаје који одговарају филтеру ознака. Ако није подешено, извезите све.
Могуће је укључити и искључити одређене ознаке и вредности ознака. Може се поставити неколико услова. Подударање назива ознака је увек осетљиво на велика и мала слова.

Постоји неколико оператора доступних за сваки услов:
** Exists** - укључите наведена имена ознака;
** Equals** - укључите наведена имена ознака и вредности (осетљиво на велика и мала слова);
** Contains** - укључују наведена имена ознака где вредности ознаке садрже унети низ (подударање подниза, не разликује велика и мала слова);
Does not exist - изузми наведена имена ознака;
Does not equal - изузми наведене називе ознака и вредности (разликује велика и мала слова);
* *Does not contain - изузмите наведена имена ознака где вредности ознаке садрже унети низ (подударање подниза, не разликује велика и мала слова).

Постоје два типа израчунавања за услови:
И/Или - сви услови морају бити испуњени, услови који имају исто име ознаке биће груписани по услову Или;
Или** - довољно ако је испуњен један услов.
Type of information Изаберите тип информација (нумерички (непотписани), нумерички (децимални број), карактер, итд.) помоћу којих ћете филтрирати вредности ставке које конектор треба да стримује.
Ово поље је доступно ако Data type је подешено на "Вредности ставки".
HTTP authentication Изаберите опцију аутентификације:
** None** - није коришћена аутентификација;
** Basic** - користи се основна аутентификација;
* * NTLM** – користи се NTLM (Windows NT менаџер) аутентификација;
** Kerberos** - Користи се Kerberos потврда идентитета (погледајте такође: Конфигурисање Kerberos-а помоћу Zabbix-а);
** Digest** - Користи се провера аутентичности сажетка;<бр>** Bearer** - Користи се аутентификација носиоца.
* Username* Унесите корисничко име (до 255 знакова). Кориснички макрои су подржани.
Ово поље је доступно ако је HTTP authentication подешена на и макрои су подржани.
Ово поље је доступно ако је HTTP authentication постављена на "Basic", "NTLM", "Kerberos" или "Digest".
* Password* Унесите корисничку лозинку (до 255 знакова). Кориснички макрои су подржани.<бр>Ово поље је доступно ако је HTTP authentication постављена на "Basic", "NTLM", "Kerberos" или "Digest".
Bearer token Унесите токен носиоца. Кориснички макрои су подржани.<бр>Ово поље је доступно и обавезно ако је HTTP authentication постављена на "Bearer".
Advanced configuration Кликните на ознаку Advanced configuration да бисте приказали напредне опције конфигурације (погледајте испод).
Max records per message Одредите максималан број вредности или догађаја који се могу стримовати у оквиру једне поруке.
Concurrent sessions Изаберите број процеса пошиљаоца за покретање за овај конектор. Може се навести до 100 сесија; подразумевана вредност је "1".
* Attempts* Број покушаја за стримовање података. Може се одредити до 5 покушаја; подразумевана вредност је "1".
Attempt interval Одредите колико дуго конектор треба да чека након неуспешног покушаја стримовања података. Може се навести до 10с; подразумевана вредност је „5с“.
Ово поље је доступно ако је * Attempts* подешено на „2“ или више.
Неуспешни покушаји су они у којима успостављање везе није успело или код којих HTTP одговор није 200, 201, 202, 203, 204. Поновни покушаји се triggered у случају грешака у комуникацији или када HTTP код одговора није 200, 201, 202, 203, 204, 400, 401, 403, 404, 405, 415, 422. Прате се преусмеравања, тако да је 302 -> 200 позитиван одговор; док ће 302 -> 503 покренути поновни покушај.
* Timeout* Одредите временско ограничење поруке (1-60 секунди, подразумевано - 5 секунди).<бр>Подржани су временски суфикси, нпр. 30с, 1м. Подржани су кориснички макрои.
HTTP proxy Можете навести HTTP прокси који ће се користити у следећем формату:
[protocol://][username[:password]@]proxy.example.com[:port]
Кориснички макрои су подржани.

Опционални префикс protocol:// може се користити за одређивање алтернативних прокси протокола (протокол подршка за префикс је додата у cURL 7.21.7). Без наведеног протокола, прокси ће се третирати као HTTP прокси. Подразумевано ће се користити 1080 порт.

Ако је наведен HTTP proxy, прокси ће преписати променљиве окружења које се односе на прокси као што су http_proxy, HTTPS_PROXY. Ако није наведено, прокси неће преписати променљиве окружења које се односе на прокси. Унета вредност се прослеђује каква јесте, нема провере исправности.
Можете да унесете и SOCKS прокси адресу. Ако наведете погрешан протокол, веза неће успети и ставка ће постати неподржана.

Имајте на уму да је само једноставна аутентификација подржана са HTTP проксијем.
SSL verify peer Означите поље за потврду да бисте верификовали SSL сертификат веб сервера.
Сертификат сервера ће аутоматски бити преузет са локације органа за издавање сертификата (CA) у целом систему. Можете заменити локацију CA датотека користећи конфигурациони параметар Zabbix сервера или проксија SSLCALocation.
SSL verify host Означите поље за потврду да бисте потврдили да је Common Name поље или поље Subject Alternate Name сертификата веб сервера се подудара.
Ово поставља CURLOPT_SSL_VERIFYHOST cURL.
SSL certificate file Назив датотеке SSL сертификата која се користи за аутентификацију клијента. Датотека сертификата мора бити у PEM 1 формату. Подржани су кориснички макрои.
Ако датотека сертификата такође садржи приватни кључ, оставите поље SSL key password празно. Ако је кључ шифрован, наведите лозинку у пољу SSL key password. Директоријум који садржи ову датотеку је одређен конфигурационим параметром Zabbix сервера или проксија SSLCertLocation.
SSL key file Назив датотеке SSL приватног кључа која се користи за аутентификацију клијента. Датотека приватног кључа мора бити у PEM 1 формату. Подржани су кориснички макрои.
Директоријум који садржи ову датотеку је одређен конфигурационим параметром PEM сервера или проксија SSLKeyLocation.
SSL key password SSL датотека приватног кључа лозинка. Кориснички макрои су подржани.
* Description* Унесите опис конектора.
* Enabled* Означите поље за потврду да бисте омогућили конектор.

Протокол

Комуникација између сервера и пријемника се обавља преко HTTP-а помоћу REST API-ја, NDJSON, "Content-Type: application/x-ndjson".

За више детаља погледајте Протокол за извоз JSON раздвојених новим редовима.

Захтев сервера

Пример вредности ставке стримовања:

POST /v1/history HTTP/1.1
       Host: localhost:8080
       Accept: */*
       Accept-Encoding: deflate, gzip, br, zstd
       Content-Length: 628Content-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}

Пример стриминг догађаја:

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}
Одговор примаоца

Одговор се састоји од HTTP кода статуса одговора и JSON корисног оптерећења. Код статуса HTTP одговора мора бити "200", "201", "202", "203", или "204" за захтеве који су успешно обрађени, други за неуспеле захтеве.

Пример успеха:

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

Пример са грешкама:

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