Cacti: ziskávání vlastních dat pomocí SSH

Petr Macek 31. 7. 2009

V dnešním článku o Cacti se podíváme na monitorování libovolných dat v systému Linux. Cacti je dobře připravený systém pro získávání dat ze SNMP všech verzí. Snadno se tak vykresluje třeba vytížení CPU, síťové karty a dalších zařízení. Hodně SNMP šablon je připraveno přímo v instalaci nebo se dají stáhnout.

SNMP nám ale neumožní monitorovat vše. Existuje mnoho zařízení se špatnou nebo žádnou podporou SNMP, které ale umožňují přihlášení do shellu. Mezi ně patří třeba některé WiFi prvky. A na tyto případy je vhodná další metoda získávání dat v Cacti, pomocí skriptu/příkazu. A jaký příkaz nebo skript se bude spouštět, už je na nás. Cacti má po instalaci několik ukázkových použitelných skriptů v perlu a shellu (je možné použít vlastně libovolný jazyk) v adresáři scripts. Když k tomu přidáme ssh a výměnu klíčů, získáváme silný nástroj a nejsme závislí jen na SNMP.

Tímto způsobem monitoruji například počet uživatelů přihlášených v systému, množství spamů a hamů, teplotu získávanou z čidla na sériovém portu, úrovně signálů připojených wifi klientů, … Dále existují skripty, které parsují status page Apache, množství dotazů MySQL, …

Cacti se skripty funguje následovně – na cílovém serveru si připravíme shell (perl, awk, php, co kdo preferuje) skript, který bude vracet požadovanou hodnotu nebo hodnoty, formát si upřesníme později. Dále si zde založíme uživatele, pro něho si vygenerujeme ssh klíč bez passphrase a vyměníme si jej se strojem s Cacti. Díky tomu je proces získávání dat automatický a Cacti se bude moci přihlásit bez zadání hesla na monitorovaný stroj a spustit náš skript, který vypadá podobně:

$ ssh uzivatel@monitorovany.stroj.cz '~/muj_skript.sh'

Na vzdáleném stroji se vykoná skript muj_skript.sh, který spustí nějaké příkazy, zpracuje jejich výstup a požadované hodnoty vypíše na standardní výstup. Ty pak na serveru Cacti dostáváme jako výstup příkazu ssh. A tento výstup už zpracuje Cacti.

Další možností je spouštět skript přímo na stroji s Cacti a tam si vše zpracovávat a výsledek poslat na standardní výstup. Odpadá nám potom nutnost mít na cílových serverech skripty, stačí jen vyměnit ssh klíče, ale zase můžeme trochu ztrácet přehlednost nebo při použití na různých serverech můžeme chtít jiné volání nebo drobnou změnu. Takže zde máme možnost volby.

Tolik teorie, teď praxe. Popíši, jak grafovat hodnotu load, budeme zobrazovat tři hodnoty v jednom grafu pro 1, 5 a 15 minut. Výsledek bude vypadat přibližně takto:

Cacti load

Začneme na stroji, který chceme monitorovat. Na něm musíme mít funkční sshd. Přidáme uživatele, pojmenuje ho třeba Cactiquery. Není nutná žádná specialita, jen musí mít nějaký shell, aby bylo možné přihlásit se a spustit příkaz. Do jeho domovského adresáře uložíme skript load.sh:

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin
uptime | awk ' {gsub(",",""); printf("1min:%2.2f 5min:%2.2f 15min:%2.2f",$10, $11,$12)}'

Výstup vypadá následovně:

1min:1.81 5min:1.27 15min:1.15

Formát je jednoduchý, vždy je návěští a za dvojtečkou hodnota. Za mezerou je pak další hodnota. Celkem máme tři hodnoty, pro 1, 5 a 15 minutový load. Pokud bychom chtěli získávat jen jednu hodnotu, je formát ještě jednodušší, stačí zobrazit jen samotné číslo bez návěští. To je na tomto stroji vše.

Na monitorovacím serveru si pro uživatele Cacti vygenerujeme ssh klíče (předpokládáme openssh na obou strojích). Jak správně generovat klíče se dočtete v jiném článku. Zde jen v náznaku:

su cacti
ssh-keygen -t dsa

Nevyplňujeme passphrase a potom soubor id_dsa.pub zkopírovat na cílový stroj do domovského adresáře uživatele cactiquery /home/cactiquery/.ssh/authorized_keys.

Ještě je nutné jednou přihlásit na monitorovaný stroj stejně, jako to bude dělat Cacti. Při prvním přihlášení je nutné potvrdit, že souhlasíme s připojením k tomuto hostu. Takže na stroji s Cacti spustíme:

su cacti
cacti@mail ~ $ ssh cactiquery@server.firma.cz
The authenticity of host 'server.firma.cz (11.22.33.26)' can't be established.
DSA key fingerprint is 73:9a:24:be:ef:e4:77:aa:a8:94:9b:f2:49:fa:f6:73.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server.firma.cz' (DSA) to the list of known hosts.
Password:

Potom si můžeme ještě zkusit, že skript funguje správně:

ssh cactiquery@server.firma.cz './load.sh'
1min:0.00 5min:0.00 15min:0.00

Nyní už se vše bude odehrávat na straně Cacti. Nejprve musíme přidat stroj, který chceme monitorovat. V menu zvolte "New graphs" a potom vpravo "Create new host". Druhou možností je v "Devices"  kliknout na "Add". Vyplníme popis, DNS jméno nebo IP adresu, jako Host template zatím zvolte none, později si povíme, co se zde dá ještě dělat. A nakonec vybereme typ testování dostupnosti stroje. Možno je pomocí SNMP a pingu. U pingu můžeme zvolit ICMP, TCP nebo UDP ping. Na ICMP ping pozor na některých unixech. Poller (program testující dostupnost a získávající data) musí běžet s právy, které umožní ICMP ping. Poslední možností je dostupnost netestovat a rovnou se ptát na hodnoty. Jen malá odbočka – pokud zapnete testování dostupnosti, lze si posílat informaci o výpadcích zařízení e-mailem. Tím máme založený stroj, který chceme testovat.

Nyní máme připravený monitorovaný stroj, pokud testujeme i dostupnost, začnou nám chodit e-maily o jeho stavu (v případě, že máme v nastavení zadanou e-mailovou adresu a vytvořené spojení na SMTP server). V Cacti teď musíme vytvořit metody a šablony pro získávání dat a jejich prezentaci. A to si ukážeme příště.

Našli jste v článku chybu?
Podnikatel.cz: Neuvěříte, ale EET má pro podnikatele i výhody
MarketVoice

Neuvěříte, ale EET má pro podnikatele i výhody

Měšec.cz: Cestujte bez starostí, získejte výhodné pojištění

Cestujte bez starostí, získejte výhodné pojištění

DigiZone.cz: Slováci první, Češi třetí. Krásný...

Slováci první, Češi třetí. Krásný...

120na80.cz: Běžecká lékárnička: jak si poradit?

Běžecká lékárnička: jak si poradit?

DigiZone.cz: Náhrada za nevrácená zařízení?

Náhrada za nevrácená zařízení?

Vitalia.cz: Jíme přesolené potraviny. Zrovna tyhle

Jíme přesolené potraviny. Zrovna tyhle

Lupa.cz: Vydavatelé jsou v háji, ale neumí si to připustit

Vydavatelé jsou v háji, ale neumí si to připustit

DigiZone.cz: Nova: technické pauzy každé 1. pondělí

Nova: technické pauzy každé 1. pondělí

Vitalia.cz: Další Míša má Klasu

Další Míša má Klasu

Měšec.cz: Co s reklamací, když e-shop krachuje?

Co s reklamací, když e-shop krachuje?

Root.cz: Quake slaví 20 let novou epizodou zdarma

Quake slaví 20 let novou epizodou zdarma

DigiZone.cz: Soud zakázal šíření TV Markíza v ČR

Soud zakázal šíření TV Markíza v ČR

DigiZone.cz: TV Nova a její postoj k DVB-T2

TV Nova a její postoj k DVB-T2

Root.cz: Střílejte v obýváku, stačí kamera a projektor

Střílejte v obýváku, stačí kamera a projektor

Root.cz: Nejvýkonnější počítač mají v Číně, podívejte se

Nejvýkonnější počítač mají v Číně, podívejte se

DigiZone.cz: Markíza: tady je předběžné opatření

Markíza: tady je předběžné opatření

DigiZone.cz: Kritické poznámky k DVB-T2

Kritické poznámky k DVB-T2

Vitalia.cz: Ministři se přou o využívání antibiotik

Ministři se přou o využívání antibiotik

DigiZone.cz: Skylink: Nova Sport volně

Skylink: Nova Sport volně

Vitalia.cz: Máte chutě? Nejezděte do světa, ale do Dobřichovic

Máte chutě? Nejezděte do světa, ale do Dobřichovic