LINUXSOFT.cz
Username: Password:     
    CZ UK PL

> Dohledový systém Zabbix IV - pokročilé metody dohledu

V dalším díle seriálu o dohledovém systému Zabbix se podívejme na pokročilejší možnosti monitoringu a vyhodnocení dat, s čímž souvisí tvorba grafů a map. Podíváme se taktéž, jakým způsobem rozšiřovat možnosti Zabbixu pomocí externích skriptů. V poslední části dnešního dílu si také ukážeme, jak se tvoří akce v případě vzniklého problému.

9.5.2013 06:00 | Antonín Kolísek | read 16639×

DISCUSSION   

V minulém díle jsme se seznámili s tvorbou šablon, skupin a testů. To samozřejmě neznamená, že je nutné vždy zakládat a tvořit vlastní testy pro monitoring. Zabbix nabízí celou řadu již připravených šablon, které můžeme doplnit, upravit, a nebo použít beze změn. Často v nich najdeme přesně to, co potřebujeme již připravené. Při konfiguraci nebo zakládání hosta, itemu, triggeru nebo prakticky čehokoli nabízí Zabbix funkci Clone díky které je možné, jak již z názvu vyplývá, naklonovat a upravit, co potřebujeme. Vyjmenuji alespoň ty nejzajímavější šablony, které Zabbix nabízí ve výchozím nastavení.

  • App agentless : monitoring dostupnosti běžících aplikací/služeb (FTP, HTTP/HTTPS, LDAP, NTP, NNTP, SMTP, POP3, IMAP, SSH, ...)
  • App MySQL : monitoring stavu a činnosti MySQL databáze
  • App Zabbix server : informace o interním stavu Zabbix serveru
  • IPMI : informace o IPMI zařízení (v tuto dobu pouze Intel SR1530,SR1630)
  • SNMP : monitoring zařízení, některých parametrů OS (zatím pouze Windows a Linux)
  • OS : široká řada systémových informací (Windows, Linux, Solaris, AIX, FreeBSD, OpenBSD, HP-UX, Mac OS X,...)

Pokud Zabbix neumí co potřebujeme

Může se stát, že potřebujeme sledovat nějaké informace, ale dohledový systém nám nenabízí metody, jak se k požadovaným informacím dostat, a nebo nejsou informace podle našich představ. V takovém případě máme několik možností. Můžeme se podívat, zda stejný nebo podobný problém již někdo neřešil ( a většinou zjistíme, že již tento problém řešen byl ), a nebo přistoupit k vlastnímu řešení. Zabbix umožňuje využít externích skriptů a nebo pomocí API doprogramovat vlastní funkce. My se budeme držet první mnohem schůdnější metody, tedy využití externích skriptů. První varianta je komplikovaná v tom, že musíme spoléhat na neměnnost API a také řešit případné změny s každou aktualizací.

Externí skripty - příprava

Nejprve je nutné zkontrolovat nastavení serverové části dohledového systéme Zabbix, jestli je připravený pro používání externích skriptů. Pokud jsme při instalaci postupovali dle návodu (Dohledový systém Zabbix II. - instalace) nemusíme se o další nastavení starat. V opačném případě si je raději zkotrolujeme.

  • musí existovat adresář /etc/zabbix/externalscripts, který bude obsahovat veškeré externí skripty
  • v /etc/zabbix/externalscripts nastavíme ExternalScripts=/etc/zabbix/externalscripts

Píšeme náš první skript

Volbu jazyka nechávám na každém, dle vlastních preferencí. Je možné použít zcela libovolný "jazyk" (Bash, Perl, Python, Ruby,...). Důležité je dodržet s jakými argumenty skript / program budeme volat a jaké hodnoty bude vracet. Externí skript je volán následovně.

    skript[ARG_1,...,ARG_N]

  • ARG_1,...,ARG_N jsou argumenty, se kterými je skript volaný. Argumentem může být libovolný řetezec nebo podporované makro
  • pokud skript někam zapisuje pozor na oprávnění zabbix_server nebeží pod uživatelem root, ale pod uživatelem zabbix (nebo jiným) s omezenými právy
  • skript je vhodné ladit pod uživatelem, pod kterým běží proces zabbix_server

Jednoduchý skript by mohl vypadat dle následující ukázky. Uvádím praktický příklad, který využijeme v další části seriálu. Jedná se o skript pro sledování vytíženosti síťového pásma. Strukturu skriptu nebudu vysvětlovat, abych příliš nepřekročil rámec seriálu. Stačí, když budeme věřit, že funguje, jak má. Poznamenám jen, že poslední řádek skriptu (echo "$BPS") je velmi důležitý. Skript by měl v každém případě končit návratovou hodnotou a neměl by být přerušený voláním exit,aniž by nepředal nějakou hodnotu na standartní výstup (STDOUT). Vykonaní externího skriptu je časově omezené. Výchozí doba je nastavena v zabbix_server.conf na 3 vteřiny a maximální doma může být 30 vteřin. Je nutné si uvědomit, že čím náročnější (časově delší) je externí skript, tím více bude Zabbix vytížen, proto je vhodné přikročit k externím skriptům pouze v krajním případě.

    #!/bin/bash
    #
    # Skript pro mereni BPS.
    #
    # Pouziti: net_traff IPADDR DEV {in,out}
    #
    # <antonin@kolisek.cz>
    
    TMP_DIR=/tmp/zabbix
    
        if [ ! -d $TMP_DIR ];
        then
            mkdir $TMP_DIR
        fi
    
    
        C_TRAF=$(/usr/local/bin/zabbix_get -s $1 -k net.if.$3[$2,bytes])
        C_TIMES=$(date +%s)
    
        if [ -e $TMP_DIR/$1_$2.$3 ];
        then
            P_TRAF=$(cat $TMP_DIR/$1_$2.$3 | awk '{print $2}')
            P_TIMES=$(cat $TMP_DIR/$1_$2.$3 | awk '{print $1}')
            echo "$C_TIMES $C_TRAF" > $TMP_DIR/$1_$2.$3
        else
            echo "$C_TIMES $C_TRAF" > $TMP_DIR/$1_$2.$3
            echo "0"
    
            exit
        fi
    
        BPS=$(echo "(($C_TRAF-$P_TRAF) / ($C_TIMES-$P_TIMES)) * 8" | bc)
    
        if [[ "$BPS" =~ "^[0-9]+$" ]];
        then
            BPS="0"
        fi
    
        echo "$BPS"
    

  • ve skriptu byl použitý nástroj zabbix_get - tento nástroj slouží k čtení dat se vzdáleného Zabbix agenta. Syntaxe programu je následující:

  • zabbix_get -s HOST_IP -k ITEM_NAME[ARG]

Založení nového itemu

Externí skript je pouze prvním krokem, a aby jsme mohli využít Externích testů, musíme založit odpovídající Item. Postup jsme probrali v minulém díle seriálu. Pro zopakování uvádím i názorný příklad. V našem případě se bude jednat o test přenosového pásma na síťovém rozhraní (eth0). Budeme muset založit Item zvlášť pro odchozí a příchozí směr viz následující obrázek.

Zabbix agent - uživatelské rozšíření

Vedle výše uvedených možností nabízí Zabbix ještě jednu možnost, jak přidávat vlastní funkce. Pomocí rozšíření Zabbix agenta. Princip je velmi jednoduchý. Konfigurační soubor agenta zabbix_agentd.conf obsahje položku UserParameter=<key>, <command>, které může obsahovat libovolné pořadí příkazů viz následující příklad, který si v zápětí vysvětlíme.

    UserParameter=vfs.folder_size[*],du -shb $1 | cut -f1

Zabbix ve fázi, kdy píšu tento seriál, neobsahuje metodu, jak určit velikost složky. Obsahuje metody na určení velikosti souboru, ale co když potřebujeme velikost celé složky? Externí skript by byl v tomto případě krajně nevhodný. Můžeme s výhodou použít rozšíření Zabbix agenta. V první části definujeme název a řekneme, že budeme předávat argumenty [*]. Dále následuje sled příkazů, jejichž výstupem bude výstup Zabbix agenta. Po každém vložení vlastního testu je nutné agenta restartovat. Jestli vše funguje ověříme následujícím krokem.

    shell> zabbix_get -s 127.0.0.1 -k vfs.folder_size[/tmp]

Grafické znázornění dat

Naměřená data a stav sledovaných zařízení můžeme zobrazit v grafické podobě. Máme na výběr dvě možnosti. První možností je znázornění grafem, kde vidíme aktuální stav i historii. Druhou možností je zobrazení pomocí mapy. Tato možnost je vhodná pro znázornění celé infrastruktury a stavu konkrétních zařízení.

Tvorba grafů

Zabbix umožňuje naměřené informace prezentovat pomocí grafů. Máme možnost využít automaticky generovaného grafu, nebo si vlastní graf vytvořit k obrazu svému. V praktickém příkladě se podívejme, jak postupovat při tvorbě grafu.

  • Configuration -> Templates -> moje_sablona:Graphs -> Create graph

V příkladu vidíme veškeré vlastnosti grafů, které můžeme ovlivnit. Po nastavení velikosti grafu a jména můžeme zvolit, co vše se bude v grafu zobrazovat (legenda, čas, triggery ). Dále pak můžeme nastavit maximum a munimum pro osu Y, a nebo nechat meze automaticky vypočítat Zabbixem. V sekci Items vybereme, to co bude graf zobrazovat. Zde máme možnost ovlivnit funkci pro výběr dat (průměr, maximum, minimum, vše), dále styl grafu, barvu a umístění osy Y. Výsledkem vznikne graf podobný tomu našemu. V grafu je možné stejně jako v automaticky generovaném grafu zoomovat a pohybovat se v určitém časovém období, což závisí na délce historie a délce trendů, které máme nastavené pro konkrétní Item.

Tvorba map

Zajímavým způsobem, jak prezentovat v Zabbixu aktuální stav monitorovaných zařízení, je použití map. Mapa graficky znázorňuje infrastrukturu monitorované sítě. Můžeme tak mít přehled nejen o stavu zařízení, ale také o jejich umístění a závislosti na jiných aktivních prvcích počítačové sítě. Při tvorbě mapy nejprve musíme definovat velikost a nastavit základní parametry. Většina nastavení se týká grafické podoby. Jako mapový podklad můžeme použít obrázek. Při aktivaci volby Advanced labels může definovat popisky (label) jednotlivých elementů mapy a jejich umístění.

  • Configuration -> Maps -> Create map

Po založení mapy můžeme přidávat jednotlivá zařízení tzv elementy. U Každého elementu máme možnost nastavit určité vlastnosti:

  • Type : typ elementu (host, mapa, trigger, skupina, obrázek)
  • Label : popis elementu
  • Label location : umístění popisu
  • další paramentry se týkají vlastností ikon pro jednotlivé stavy nebo-li jak budeme graficky vyjadřovat konkrétní stav (Problem, Disables, Maintenance,...)

Jednotlivé prvky můžeme propojovat pomocí Linky a vyjádřit tak propojením vztah mezi jednotlivými elementy. K propojům je možné uvádět popisky a rozlišit je barvou a stylem čáry. Můžeme tak rozlišit optické, metalické a bezdrátové sítě.

  • v Monitoring -> Maps najdeme všechny naše mapy
  • mapy mohou být společně s grafy použity při tvorbě Screens tzv dohledových obrazovek čemuž se budeme věnovat v příštím díle

Vybereme-li v mapě konkrétní element máme možnost provádět určité akce (Scripts), které jsou definovány v nabídce Administration -> Scripts. Jedná se o jednoduché příkazy, které můžeme spouštět na straně serveru nebo pomocí Zabbix agenta na vzdáleném hostu a výstup příkazu Zabbix zobrazí ve webovém rozhraní. Při tvorbě skriptů je nutné dbát na několik zásad:

  • pozor na práva, v něterých případech bude nutné použít program sudo
  • je vhodné používat absolutní cesty k programům
  • pozor na SELinux

Akce

Naměřená data a stav jednotlivých zařízení můžeme sledovat přes webové rozhraní. U dohledového systému předpokládáme určitou míru samostatnosti. V případě nějakého nežádoucího stavu chceme, aby Zabbix reagoval na vzniklou situaci. Dal nám o problému vědět a pokusil se ho nějakým způsobem v určitých případech řešit. Takový postup označujeme jako scénář. Na tvorbu pokročilých scénářů se podíváme v příštím díle. Nyní se podíváme na tvorbu Akcí, které se od scénářů nijak neliší. V podstatě jde o to samé. Akci si můžeme představit jako určitý úkon (notifikace, restart zařízení, ...) reakci na konkrétní stav, situaci. Scénář není nic jiného než množina akcí. Základní akcí v případě problému je notifikace na email. Podívejme se podle následujícího příkladu, jak akci vytvořit. Předpokládejme, že požadujeme, aby Zabbix poslal e-mail na konkrétního uživatele v případě výpadku jakéhokoli zařízení. Postup by byl následující.

  • Configuration -> Actions -> Create action
  • vyplníme název, aktivujeme akci zatržením položky Enabled
  • pokud chceme automatickou notifikaci i v případě, že je problém vyřešený, aktivujeme položku Recovery message


V záložce Conditions nastavíme podmínky, za jakých situací bude Zabbix provádět akce. Podmínky je možné spojovat logickou spojkou AND / OR. V našem případě vybereme logickou spojku AND. Podmínka bude znít : pokud je hodnota triggeru "PROBLEM" a zároveň (AND) tento tigger je ze šablony moje_sablona a má název Dostupnost, proveď akci.


Záložka Operationsslouží k nastavení samotné akce / úkonu. V našem případě použijeme notifikaci na e-mail viz následující příklad. Podrobnější tvorbu akcí a scénářů si ukážeme v příštím díle. Na začátku si můžeme povědět, že e-mail je možné zaslat jednomu uživateli nebo více uživatelům a nebo celé skupině. Formát zprávy můžeme ponechat ve výchozím tvaru, nebo ji upravit podle vlastních představ.

Rekapitulace

V dnešním díle jsme se podrobněji seznámili s možností tvorby vlastních testů a s prezentací naměřených dat formou map a grafů. Letmo jsme se podívali na tvorbu akcí a dohledových scénářů, které probereme podrobněji v příštím díle. Podíváme se také na některé další metody zjišťování dat, jako je protokol SNMP nebo IPMI.

Odkazy

1. Zabbix domovské stránky : http://www.zabbix.com

2. Zabbix dokumentace : http://www.zabbix.com/documentation.php

3. Zabbix - API : https://www.zabbix.com/documentation/2.0/manual/appendix/api/api

4. Zabbix - externí skripty : https://www.zabbix.com/documentation/2.0/manual/config/items/itemtypes/external

5. Zabbix - akce : https://www.zabbix.com/documentation/2.0/manual/config/notifications/action

6. Zabbix - uživatelské rozšíření : https://www.zabbix.com/documentation/2.0/manual/config/items/userparameters

 

DISCUSSION

For this item is no comments.

Add comment is possible for logged registered users.
> Search Software
> Search Google
1. Pacman linux
Download: 4880x
2. FreeBSD
Download: 9067x
3. PCLinuxOS-2010
Download: 8564x
4. alcolix
Download: 10949x
5. Onebase Linux
Download: 9661x
6. Novell Linux Desktop
Download: 0x
7. KateOS
Download: 6245x

1. xinetd
Download: 2413x
2. RDGS
Download: 937x
3. spkg
Download: 4762x
4. LinPacker
Download: 9968x
5. VFU File Manager
Download: 3199x
6. LeftHand Mała Księgowość
Download: 7203x
7. MISU pyFotoResize
Download: 2813x
8. Lefthand CRM
Download: 3563x
9. MetadataExtractor
Download: 0x
10. RCP100
Download: 3122x
11. Predaj softveru
Download: 0x
12. MSH Free Autoresponder
Download: 0x
©Pavel Kysilka - 2003-2024 | mailatlinuxsoft.cz | Design: www.megadesign.cz