Nový Zabbix 4.2: nový preprocesing, podpora Prometheus a TimescaleDB

3. 4. 2019
Doba čtení: 9 minut

Sdílet

Společnost Zabbix SIA vydala na konci března novou vývojovou verzi monitorovacího systému Zabbix. Zabbix 4.2 přináší spoustu nových vlastností, které si podrobněji popíšeme v dnešním článku.

V pátek 29. března 2019 byl vydán Zabbix 4.2 ve formě zdrojových kódů a balíčků v oficiálním Zabbix repository. Na stránkách dokumentace je velmi podrobný popis všech nových funkcí. Z plánovaných úkolů v roadmap bylo realizováno 60 %. Dále si popíšeme nové vlastnosti.

Poznámka: Článek je opět hodně technický a je určený pro znalce Zabbixu. Znalost terminologie je tedy nutná.

Nové platformy

V repozitáři jsou nově k dispozici i balíčky pro SUSE Linux Enterprise Server včetně starších verzí 3.0 LTS a 4.0 LTS. Dále je novinkou MSI instalátor pro Windows, který doposud bylo možné použít od suiviperf.com s použitím nullsoft NSIS magic.


Nové platformy

  • RaspberryPi
  • Mac OS/X
  • SUSE Enterprise Linux Server 12
  • MSI for Windows agent
  • Docker images

Předzpracování rozšířené hodnoty položky (Preprocessing)

JavaScript

Nyní je možné aplikovat předzpracování na hodnoty položky na nízké úrovni pomocí JavaScriptu.

Preprocesing – JavaScript

Krok s použitím JavaScriptu akceptuje jeden parametr – neprázdný blok kódu v jazyce JavaScript.


Krok processing – JavaScript

Kliknutím na pole parametrů nebo na tlačítko pro zobrazení / úpravy vedle pole parametrů se otevře okno pro zadání bloku kódu.


Blok kódu JavaScript

Pravidla pro ověřování a škrty (throttling)

Nově přidané možnosti předběžného zpracování položky jsou validace a škrcení.

Validace, umožňuje definování přijatelného rozsahu nebo shodu s některým regulárním výrazem. Umožňuje odstranit jasně nesprávné nebo šumové hodnoty, které se mohou objevit. Např. když teplotní čidlo vrací hodnotu mimo chtěný rozsah + 999 °C, normální rozsah je např. –100° C až + 100 °C. Ověření zpracování chyb umožňuje tyto hodnoty šumu zrušit nebo je nahradit nějakou výchozí hodnotou nebo je jednoduše nahradit chybovou zprávou čitelnou člověkem.

Další novinkou je extrakce chybové zprávy uvedené v příchozích datech. Objekt JSON může například obsahovat pole „chyba“. Pokud pole existuje, je předzpracování schopno extrahovat jeho hodnotu a nastavit ji jako chybovou zprávu pro položku.


Processing volba validation

Další informace naleznete v tématu: Item value preprocessing.

Vlastní zpracování chyb

Ve starší verzi by se položka nepodporovala, pokud by některý z kroků předběžného zpracování selhal. Nyní byla do následujících kroků předběžného zpracování přidána vlastní možnost zpracování chyb:

  • Regular expression
  • XML XPath
  • JSON Path
  • Custom multiplier
  • Simple change
  • Change per second
  • Boolean to decimal
  • Octal to decimal
  • Hexadecimal to decimal
  • In range (new validation option)
  • Matches regular expression (new validation option)
  • Does not match regular expression (new validation option)
  • Prometheus pattern
  • Prometheus to JSON

Zpracování chyb

Pokud zaškrtnete políčko vlastní, při selhání položka nebude v případě neúspěšného kroku předběžného zpracování podporována a je možné zadat vlastní možnost zpracování chyb, např.:

  • discard the value
  • set to a specified value
  • set a specified error message

Testování kroků předzpracování

Vzhledem k tomu, že se přidávají nové kroky předběžného zpracování položky, průchod předběžného zpracování je patřičně složitější a je zvýšená pravděpodobnost vzniku chyb. Zabbix nově poskytuje uživateli způsob, jak otestovat nakonfigurované kroky předběžného zpracování.

Každý krok může být testován individuálně a všechny kroky mohou být testovány společně pomocí nového tlačítka Test nebo test všech kroků v bloku Akce.


Testování kroků – Preprocessing

Viz také: Testing preprocessing steps.

Podpora předběžného zpracování na Zabbix proxy

Monitorované položky procházející skrze Zabbix proxy se budou nově preprocessingem provádět na Zabbix proxy.

Vzhledem k novým možnostem předzpracování, jako je například Javascript, ověřování a škrcení, se předzpracování může stát úzkým hrdlem výkonnosti. Předzpracování pomocí proxy serverů nabízí potřebnou škálovatelnost. Vzhledem k tomu, že se nejedná o konfigurovatelné nastavení, je důležité si uvědomit důsledky výkonu.


Schema Zabbix proxy – Preprocessing

Low-level discovery

Samostatné zpracování pro zjištění na nízké úrovni

Zpracování pravidel nízkoúrovňového zjišťování bylo rozděleno z procesů sběru dat do vlastního zpracování.

LLD bylo obohaceno o Preprocessing a pro tuto činnost byl vyčleněn separátní interní proces v rámci Zabbix serveru a Zabbix Proxy.

Viz také: StartLLDProcessors parameter

Očekávaná změna formátu při zjišťování na nízké úrovni

Aby bylo možné podpořit předzpracování nízkoúrovňových výsledků zjišťování a vlastních cest na hodnoty makra s nízkými úrovněmi zjišťování (LLD) v dokumentu JSON, změnil se formát JSON vrácený pravidly pro vyhledávání na nízké úrovni. Již se neočekává, že JSON bude obsahovat objekt „data“:

{
  "data": [
    {},
    {}
  ]
}

Zjištění na nízké úrovni nyní přijme normální JSON obsahující pole.

Vestavěné klíče zjišťování byly aktualizovány, aby vrátily pole řádků LLD v kořenovém adresáři dokumentu JSON. Zabbix automaticky extrahuje makro a hodnotu, pokud pole používá syntaxi {#MACRO} jako klíč. Všechny nové nativní kontroly zjišťování budou používat s novou syntaxi bez prvků „data“. Při zpracování nízkoúrovňové hodnoty zjišťování je nejprve umístěn kořen (pole na $. Nebo $ .data).

Zatímco prvek „data“ byl odstraněn ze všech nativních položek týkajících se zjišťování, pro zpětnou kompatibilitu bude Zabbix stále přijímat notaci JSON s elementem „data“, i když od jeho použití je odrazováno. Pokud JSON obsahuje objekt s pouze jedním prvkem pole „data“, pak automaticky extrahuje obsah prvku pomocí JSONPath $ .data.

Low-level discovery jako závislá položka

Pravidlo nízké úrovně zjišťování nyní může být také závislou položkou v závislosti na běžné položce. Pravidlo zjišťování na nízké úrovni nemůže být závislé na jiném nízkoúrovňovém zjišťovacím pravidle.

Viz take: konfigurace

Preprocessing a vlastní makra v nízkoúrovňovém zjišťování

Konfigurace nízkoúrovňového zjišťování získala další možnosti předběžného zpracování výsledku zjišťování a extrahování vlastních maker z předzpracovaného výsledku. Chcete-li lépe porozumět změnám v toku dat zjišťování, porovnejme to s předchozími verzemi:

Before Zabbix 4.2 Discovery rule → Discovery rule filter
In Zabbix 4.2 Discovery rule → Preprocessing → Custom macros → Discovery rule filter

Je důležité pochopit, že tato logika funguje v pořadí zleva doprava, stejně jako při definování pravidla: nejprve se objeví objev, pak se na něj aplikuje volitelně předzpracování, pak se mohou extrahovat vlastní makra a pak se použijí podmínky filtru k výsledku.

Preprocessing LLD

Pravidla zjišťování na nízké úrovni nyní mají krok předběžného zpracování obsahující následující možnosti:

  • Regular expression match
  • JSONPath (structured data)
  • Javascript
  • Does not match regular expression (validation)
  • Check for error in JSON (validation)
  • Discard unchanged with heartbeat (throttling)
  • Prometheus to JSON

LLD – Preprocessing

Další informace naleznete v tématu: Preprocessing in low-level discovery rules.

Extrakce makra LLD pomocí JSONPath

Pravidla nízkoúrovňového zjišťování nyní také přijímají extrahování uživatelsky definovaných hodnot makra LLD (low-level discovery) pomocí vlastní cesty zadané v syntaxi JSONPath.

Makro LLD = Mapování JSONPath lze nyní definovat, kde každé makro je definováno vlastní cestou JSON k umístění hodnot. Hodnoty, na které odkazuje definovaná cesta JSON, se používají k nahrazení makra v polích prototypu položky, spouštěče atd.


Definice LLD Makra mapovaného na JSONPath

Další podrobnosti naleznete v tématu: Custom macros in low-level discovery rules.

Prometheus integrace

Integrace s Prometheus nabízí možnosti sledovat jakýkoliv objekt, který vystavuje metriky ve formátu Prometheus, včetně Kubernetes, Docker, GitLab, Ceph, Collectd, atdd, InfluxDB, InfluxDB Telegraf a dalších.

Zabbix používá pro přístup k metrikám Prometheus položky typu HTTP agent a potom používá předběžnou přípravu k dotazování metrik pro konkrétní hodnoty.


Prometheus data processing

Viz: Prometheus checks.

Podpora TimescaleDB

V nové verzi Zabbix byla přidána podpora databáze časových řad ve formě experimentální podpory TimescaleDB, databázového řešení založeného na PostgreSQL, které automaticky rozděluje data do časově založených bloků, což podporuje rychlejší výkon v měřítku.

Migrační skript je k dispozici pro migraci z existujících tabulek PostgreSQL do rozvržení TimescaleDB.


Schéma TimescaleDB

Další podrobnosti viz: Migrace na TimescaleDB.

Aktuálně TimescaleDB nepodporuje Zabbix proxy.

Použití hodnoty položky k pojmenování objevených hostitelů

Dříve názvy nových hostitelů přidané pomocí discovery pravidel, používaly buď název DNS, nebo v případě jeho neexistence adresu IP. V nové verzi je možné dát mnohem více popisného pojmenování objeveným hostům pomocí hodnot položek zjišťování, které byly získány buď z agenta Zabbix nebo z agenta SNMP agenta:


Nové možnosti pojmenování objevených hostů

Kontroly Zabbix agenta nebo SNMP agenta jsou uvedeny jako možnosti pojmenování v nových polích Host name a Visible name, kromě možnosti zadat jako název název DNS nebo adresu IP.

Šablony a značky hostitele

Možnost označit tagem událost byla funkce Zabbixu od 3.2, nicméně, dříve, značkování bylo omezeno na jednotlivé spouštěče. V nové verzi lze tagování použít na úrovni šablony a hostitele:

  • Tagy na úrovni šablony
  • Tagy Na úrovni hostitele

Značky lze definovat na nové kartě ve formulářích pro konfiguraci šablony a hostitele, například pro šablonu:


Nastavení tagu v šabloně

V konfiguraci spouštěče jsou nyní tagy také rozděleny na vlastní kartu. Možnost „Inherited and trigger tags“ umožňuje zobrazit tagy definované na úrovni šablony (nikoli však na úrovni hostitele), pokud trigger pochází z této šablony:


Nastavení tagu na Hostu

Událost, která se stane, zdědí všechny značky z celého řetězce šablon, hostitelů, spouštěčů. Úplně identické kombinace tag: hodnota jsou sloučeny do jednoho, místo aby byly duplikovány při označování události.

Viz také: Tags

Animovaná podpora GIF v mapách

Nyní je podporováno nahrávání animovaných obrázků GIF pro použití v mapách Zabbix. Pro podporu animovaného uploadu GIF je nyní požadovaná minimální verze knihovny GD 2.0.28.

HTML notifikace

E-mailová oznámení lze nyní odeslat ve formátu HTML. Formát HTML umožňuje více e-mailů s bohatými funkcemi, které obsahují barevná písma, odkazy, interaktivní prvky, styl společnosti atd.


Nastaveni HTML notifikací

Formát HTML lze vybrat ve volbě Formát zprávy při konfiguraci e-mailu jako typu média v nabídce Správa → Typy médií.

Testování typů médií

Nyní je možné otestovat, zda nakonfigurovaný typ média funguje. Chcete-li to provést v seznamu typů médií, klepněte na tlačítko Test v posledním sloupci.


Testování Media

Otevře se testovací okno, kde můžete zadat adresu odesílatele a odeslat testovací předmět a tělo kliknutím na Test.


Test fungování odeslání emailu

Ve stejném okně se zobrazí zpráva o úspěchu testu nebo neúspěchu.

Podpora regulárních výrazů v podmínce akce automatické registrace

Shoda regulárních výrazů je nyní podporována při konfiguraci podmínek pro akce automatické registrace aktivních agentů. Je podporován, pokud používá shody a neodpovídá operátorům pro podmínky názvu hostitele a metadat hostitele.


Nové možnosti podmnek auto registrace

Všimněte si, že obsahuje a neobsahuje operátory, které byly podporovány před provedením pouze shody řetězců.

Webové monitorování

Vyhledávání obsahu na základě regulárních výrazů i v hlavičkách

Zatímco dříve bylo možné načíst pouze záhlaví, nebylo možné v nich hledat odpovídající obsah. Nyní je možné vyhledávat i záhlaví regulárního výrazu buď v proměnných nebo v požadovaném řetězci.

Kromě toho byla do kroků monitorování webu přidána možnost Režim načítání, která umožňuje:

  • Retrieve body only
  • Retrieve headers only
  • Retrieve both body and headers

Režim načítání

Frontend

Tato část uvádí různá vylepšení frontendu:

Mass update

Hromadná aktualizace prototypů položek

Nyní je také možné hromadně aktualizovat prototypy položek používané v pravidlech vyhledávání na nízké úrovni. Chcete-li aktualizovat vlastnosti několika prototypů položek najednou, označte zaškrtávací políčka před položkami a klikněte na položku Mass update:


Hromadná aktualizace Item Prototyp

Filtrování

Filtrování triggerů

V seznamu triggerů bylo do filtru přidáno několik nových možností.

  • Nyní je možné ve filtru specifikovat více hostitelů a skupin hostitelů, což umožňuje zobrazit spouštěče více než jednoho hostitele, což značně zvyšuje použitelnost takových funkcí jako hromadná aktualizace.
  • Je také možné filtrovat několika závažnostmi.

Filtrování triggerů

Filtrování položek

Ve filtru položek je také k dispozici možnost specifikovat více filtrů a skupin hostitelů ve filtru, které jsou zavedeny ve filtru spouštění (viz výše).

Pokud není ve filtru položek zadán žádný hostitel nebo skupina hostitelů, budou všechny položky zobrazeny namísto žádné a zpráva bude vybrána.

Další informace naleznete v podrobnostech filtru položky.

bitcoin_skoleni

Makra

Nová makra podporovaná v mapách

Další makra jsou nyní podporována v popisech prvků mapy, názvech adres URL a hodnotách URL:


Nová makra v Mapách

Viz také: All supported macros.

Autor článku

Pracuje jako systém administrátor – UNIX/Linux systémů. Vystudoval VOŠ Liberec, obor Počítačové systémy. Ve svém oboru prosazuje otevřená řešení IT infrastruktury.