Hlavní navigace

Zabbix 4.4 přichází s druhou generací agenta v jazyce Go

Lukáš Malý

Společnost Zabbix SIA vydala 7. října 2019 novou verzi monitorovacího systému Zabbix s označením 4.4. Ta přináší spoustu nových vlastností, které si podrobněji popíšeme v dnešním článku.

Doba čtení: 10 minut

Sdílet

Monitorovací systém Zabbix není asi nutné dlouze představovat. Za dobu své existence si našel místo v mnoha IT odvětvích. Jeho dynamický vývoj došel k nové vývojové verzi 4.4.

V pondělí 7. října 2019 byl vydán Zabbix 4.4 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í. V repozitáři je nově k dispozici i sestavení pro RHEL 8, SLES 15, Raspbian 10, Debian 10.

Zabbix agent 2

Zabbix agent nové generace byl vyvinut pod názvem Zabbix agent 2 ( zabbix_agent2). Některé z cílů stanovených při vývoji nového agenta:

  • snížit počet TCP spojení
  • větší souběžná kontrola
  • snadná rozšiřitelnost pomocí pluginů
  • náhrada C Zabbix agenta (s tím, že bude zachována předchozí funkcionalita)

Zabbix Agent 2 je zapsán v jazyce Go (s opětovným použitím C kódu Zabbix agenta). Pro kompilaci Zabbix agenta 2 je vyžadováno nakonfigurované prostředí Go verze 1.12+. Zabbix agent 2 je k dispozici v předkompilovaných balíčcích Zabbix.


Zabbix 4.4

Zabbix agent druhé generace

Webhooks v notifikacích

V nové verzi jsou rozšířeny funkcionality notifikací. Webhooks je nový media type, který umožňuje napsat vlastní kód v JavaScriptu, čímž se značně rozšiřují možnosti notifikací.

Zatímco v předchozích verzích, bylo možné použít jen externí skripty, nyní lze veškerou logiku výstrah udržovat uvnitř Zabbixu, konkrétně pomocí nového typu média Webhook.

Webhook lze použít pro snadnou integraci notifikací Zabbixu se systémem helpdesku třetích stran, pomocí chat, messengere atd.

Podrobnosti v dokumentaci Webhooks.

Oficiální podpora TimescaleDB

Podpora TimescaleDB, byla poprvé přidaná experimentálně v Zabbix 4.2, nyní je již oficiální. Viz dokumentaci Migrace na TimescaleDB.


Zabbix 4.4

Zabbx + TimescaleDB

Podívejte se na blog Zabbix, kde je příspěvek pro rychlé porovnání výkonu s PostgreSQL.

Agregační funkce v grafech

Grafy umožňují zobrazit data jako např. sloupe, nová verze poskytuje možnost vytváření agregovaných dat v grafech.

Můžete tedy vybrat požadované období (pět minut, hodinu, den) a poté zobrazit agregovanou hodnotu pro toto období místo všech hodnot. Možnosti agregace jsou následující:

  • min
  • max
  • avg
  • count
  • sum
  • first (první zobrazená hodnota)
  • last (poslední zobrazená hodnota)

Nejzajímavějším využitím agregace dat je možnost vytvořit souběžné porovnání dat za určité období:


Zabbix 4.4

Agregovaný graf

Agregaci lze nakonfigurovat v nastavení sady dat v konfiguraci grafického widgetu.


Zabbix 4.4

Agregovaný graf nastavení

Podrobnosti v dokumentaci agregace ve grafech.

Zvýšil se limit položky Dependent item

Maximální počet povolených závislých položek (Dependent item) pro jednu hlavní položku byl zvýšen z 999 na 29999.

Kerberos autentizace

Pro autentizaci webů je nově možné použít Kerberos:

  • Web monitoring
  • HTTP items

Zabbix 4.4

Kerberos autentizace pro web kontroly

Živá / provozní data problémů

Nyní je možné konfigurovat způsoby zobrazování provozních dat pro aktuální problémy. Nejnovější hodnoty položek na rozdíl od hodnot položek v době problému.

Zobrazení provozních dat lze konfigurovat ve filtru Monitoring → Problems nebo v konfiguraci příslušného widgetu řídicího panelu výběrem jedné ze tří možností:


Zabbix 4.4

Live data v událostech (problems)

S názvem problému – provozní data jsou připojena k názvu problému a v závorkách.


Zabbix 4.4

Live data v událostech (problems)

Obsah provozních dat lze konfigurovat s každým triggerem, který má nyní nové pole provozních dat (Operational data). Toto pole přijímá libovolný řetězec s makry, především makro  {ITEM.LASTVALUE <1-9>}.


Zabbix 4.4

Nastavení live data v triggeru

Provozní data lze také zahrnout do notifikací pomocí nového makra  {EVENT.OPDATA}.

Monitoring databáze může vrátit více řádků / sloupců

Byla přidána nová položka monitoringu databáze:

db.odbc.get[unique_description,data_source_name]

Ve srovnání s položkou db.odbc.select[], která již byla k dispozici v předchozích verzích, je nová položka schopna vracet hodnoty z více řádků a sloupců formátovaných jako JSON.

Může být tedy použit jako hlavní položka shromažďující všechny požadované metriky v jednom systémovém volání. Předzpracování JSONPath lze použít v závislých položkách k extrahování jednotlivých hodnot z této hlavní položky.

Nová položka může být také použita pro vyhledávání LLD pomocí dotazů ODBC SQL.

Ve srovnání s položkou db.odbc.discovery[] z předchozích verzí tato položka nedefinuje nízkoúrovňová detekční makra ve vráceném JSON, nicméně tyto makra můžou být uživatelem definována podle potřeby pomocí vlastní funkce makra LLD s JSONPath, aby ukazoval na požadované hodnoty ve vráceném JSON.

Low-level discovery

Low-level discovery pro bloková zařízení

Pomocí nového vestavěného detekčního klíče nízkoúrovňového objevování blokových zařízení a jejich typů je nově podporováno: vfs.dev.discovery.

Objevení vrátí JSON s hodnotami dvou maker – {#DEVNAME} a {#DEVTYPE}, identifikující název blokového zařízení a typ.

Tato makra lze použít k vytváření prototypů položek pomocí položek agentů vfs.dev.read[] a vfs.dev.write[], agent položka vfs.dev.read[{#DEVNAME},sps].

Vice dokumentace LLD blokových zařizení

Low-level discovery pro služby SystemD

Nízkoúrovňové objevování služeb systemd (služby výchozím nastavení) je podporováno pomocí nového vestavěného detekčního klíče: systemd.unit.discovery. Tento klíč je podporován pouze u Zabbix agenta druhé generace.

Objevení vrátí JSON s hodnotami několika maker, identifikující různé vlastnosti systémové jednotky. Tato makra lze použít k vytváření prototypů položek pomocí nového klíče položky systemd.unit.info[], např.  systemd.unit.info["{#UNIT.NAME}", LoadState].

Viz dokumentace:

V prvogeneračním agentu byla obdobná funkcionalita systemd dostupná např. pomocí modulu zabbix-module-systemd.

JMX MBean discovery s ne-ASCII řetězci

Nyní existuje nová položka pro objevování JMX MBean, která negeneruje LLD makra, a proto může vracet hodnoty bez omezení souvisejících s generováním názvu makra LLD (například spojovníky, hranaté závorky a jiné znaky než ASCII): jmx.get[<discovery_mo­de>,<object_name>]

Pokud položka jmx.discovery[] z předchozích verzí narazila na JMX MBean, které nemohly být převedeny na název makra (kvůli nepodporovaným znakům v generování názvu makra LLD), musely tyto vlastnosti ignorovat.

Nová položka jmx.get[] negeneruje názvy maker LLD ve vráceném JSON. Namísto toho mohou být názvy maker LLD definovány na kartě uživatelských maker pravidla zjišťování pomocí JSONPath pro směřování na požadované hodnoty.

Podrobnosti v dokumentaci: Discovery JMX objects

WMI discovery

Byla přidána nová položka agenta systému Windows: wmi.getall[<names­pace>,<query>]

Ve srovnání s položkou wmi.get[], která již byla k dispozici v předchozích verzích, je nová položka schopna vrátit celou odpověď na dotaz, formátovanou jako JSON. Předzpracování JSONPath lze použít k označení konkrétnějších hodnot vráceného JSON.

Nová položka může být použita pro LLD pomocí dotazů WMI.

Přestože tato položka nedefinuje LLD makra ve vráceném JSON, uživatel může tato makra definovat podle potřeby pomocí vlastní funkce makra LLD s JSONPath, aby ukazoval na požadované hodnoty ve vráceném JSON.

Bezpečná auto-registrace

Dříve byla veškerá komunikace během autorizace registrace Zabbix agenta prováděna nešifrovaně. V nové verzi je bezpečný způsob autorizace možný pomocí konfigurace autentizace založené na PSK se šifrovaným připojením.

Úroveň šifrování je konfigurována globálně v sekci Administration → General, v nové části Autoregistration přístupné prostřednictvím rozbalovací nabídky vpravo. Je možné vybrat žádné šifrování, TLS šifrování s ověřováním PSK nebo obojí (takže někteří hostitelé se mohou registrovat bez šifrování, zatímco jiní pomocí šifrování):


Zabbix 4.4

Globální nastavení zabezpečení auto-registrace


Zabbix 4.4

Nastavení PSK auto-registrace

Autentizace pomocí PSK je realizována Zabbix serverem před přidáním hostitele. Pokud nastane úspěšné ověření, hostitel bude přidán.

Auto-registrace DNS jménem

Nyní je možné určit, že hostitel by měl být registrovan s názvem DNS jako výchozí rozhraní agenta. Za tímto účelem je třeba zadat / vrátit název DNS jako hodnotu konfiguračních parametrů „HostInterface“ nebo „HostInterfaceItem“.

Mějte na paměti, že pokud se změní hodnota jednoho ze dvou parametrů, aktualizuje se autorizované rozhraní hostitele. Je tedy možné aktualizovat výchozí rozhraní na jiné jméno DNS nebo IP adresu. Aby se však změny projevily, musí být agent restartován. Konfigurační parametry „HostInterface“ nebo „HostInterfaceItem“ jsou podporovány od Zabbix 4.4.

Při objevování jsou povoleny delší názvy hostů

Maximální povolená délka názvu hostitele se při objevování hostitele a automatické registraci aktivního agenta zvýšila ze 64 znaků na 128 znaků.

Rozšířené možnosti preprocessing

Vlastní zpracování chyb je nyní k dispozici také pro následující kroky předzpracování:

  • Check for error in JSON
  • Check for error in XML
  • Check for error using regular expression

V typickém případě vlastního zpracování chyb lze data přeskočit, pokud se objeví chybová zpráva.

Hostname zahrnutý do real-time exportu

Názvy hostitelů jsou nyní zahrnuty do exportu událostí, hodnoty položek a trendů v reálném čase (dříve byl exportován pouze viditelný název hostitele). Protokol exportu se změnil s informacemi o názvu hostitele. Nyní s objektem, nikoli string/array.

Nové šablony

K dispozici jsou nové oficiální šablony:

Linux

Nové monitorovací šablony systému Linux mají tři varianty:

  • Template OS Linux podle Zabbix agent, Template OS Linux podle Zabbix agent active – Linux monitorován pomocí Zabbix agent (modular) – závisí na Template Module Zabbix agent, což by mělo být import/update jako první
  • Template OS Linux podle Prom – Linux monitorován pomocí node exporter (monolithic)
  • Template OS Linux SNMPv2 – Linux monitorován pomocí SNMPv2 (modular) – závisí na Template Module Generic SNMPv2, což by mělo být import/update jako první – závisí na Template Module Interfaces SNMPv2, což by mělo být import/update jako první

Windows

Template OS Windows podle Zabbix agent, Template OS Windows podle Zabbix agent active – Windows monitorován pomocí Zabbix agent. Tyto šablony jsou podporovány Windows Server 2008/Vista a výše.

Cisco UCS server

Template Server Cisco UCS SNMPv2 – Cisco UCS server monitorovací šablona.

Nginx

Apache

  • Template App Apache podle Zabbix agent – shromažďuje metriky podle mod_status lokálne pomocí Zabbix agent (viz popis).
  • Template App Apache podle HTTP – shromažďuje metriky podle mod_status pomocí HTTP agent vzdáleně (viz popis).

RabbitMQ

  • Template App RabbitMQ cluster podle Zabbix agent a Template App RabbitMQ node pomocí Zabbix agent – shromažďuje metriky podle RabbitMQ management plugin pomocí Zabbix agent lokálně.
  • Template App RabbitMQ cluster podle HTTP a Template App RabbitMQ node pomocí HTTP – shromažďuje metriky podle RabbitMQ management plugin pomocí HTTP agent vzdáleně.

MySQL/MariaDB

Template DB MySQL – viz požadavky na provoz této šablony.

PostgreSQL

Template DB PostgreSQL – viz požadavky na provoz této šablony. Můžete získat tyto šablony:

V sekci Configuration → Templates v nových instalacích. Pokud upgradujete z předchozích verzí, můžete si tyto šablony stáhnout z úložiště Zabbix Git nebo je najít v adresáři šablon stažené nejnovější verze Zabbix. Poté je můžete v sekci Configuration → Templates importovat ručně do Zabbixu.

Pokud již existují šablony se stejnými názvy, je třeba při importu zaškrtnout možnost Odstranit chybějící, aby bylo dosaženo čistého importu. Tímto způsobem budou odstraněny staré položky, které již nejsou v aktualizované šabloně (pamatujte, že to bude znamenat ztrátu historie těchto starých položek).

Jabber, Ez Textové media type byly odstraněny

Typy médií Jabber a Ez Texting pro doručování oznámení byly odstraněny.

Pokud jsou tyto typy médií přítomny ve vaší existující instalaci, budou během upgradu nahrazeny typem skriptového média se zachovanými všemi relevantními parametry. Oznámení přes Jabber a Ez Texting však již nebudou fungovat.

Frontend

Default dashboard

Výchozí řídicí panel dodávaný s novými instalacemi (Global view) byl vylepšen. U aktualizovaného widgetu Problems podle závažnosti byl přidán souhrnný pohled na problémy. Byl přidán nový widget dostupnosti hostitele. Několik widgetů má nyní skryté záhlaví včetně widgetu Hodiny.


Zabbix 4.4

Default dashboard

V rámci Dashboardu v novém Zabbix 4.4 došlo k mnoha změnám a vylepšení, které jsou souhrnně popsány.

Export/import

Media types

Typy médií lze nyní pro snadnější sdílení exportovat a importovat.

Byl změněn formát exportu hostitele

Formát exportu hostitele a šablony v XML/JSON byl změněn ve způsobu exportu triggerů. Dříve byly všechny triggery uvedeny za informacemi o hostiteli. Nyní, pro dosažení lepší čitelnosti, jsou spouštěče, které jsou založeny na jedné hostitelské položce pouze v problémech a výrazu obnovy, uvedeny ve značkách příslušné hostitelské položky.

Makra

{EVENT.ID} je nyní podporována ve spouštěcích adresách URL, což umožňuje vytvářet úplné adresy URL k podrobnostem o problému.

Výkon

Databazová tabulka Items byla dříve používána frontendem i serverem, což vedlo k nežádoucímu zamykání řádků v době, kdy např. server aktualizoval pole ‚log‘ items. K vyřešení této situace bylo pole v reálném čase (lastlogsize, state, mtime, error) rozdělena do samostatné tabulky nazvané  item_rtdata.