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ě.

Podnikatel.cz: Eshopy s dopravou zdarma. Zválcují ostatní?

Eshopy s dopravou zdarma. Zválcují ostatní?

Podnikatel.cz: Šizený guláš na pultě. Jako Lidl to nedělejte

Šizený guláš na pultě. Jako Lidl to nedělejte

Vitalia.cz: Proč máme prasklý chléb nejraději?

Proč máme prasklý chléb nejraději?

120na80.cz: 5 triků, jak zastavit krvácení po holení

5 triků, jak zastavit krvácení po holení

120na80.cz: Velký přehled: 7 očkování proti exotickým nemocem

Velký přehled: 7 očkování proti exotickým nemocem

Podnikatel.cz: Alza radí e-shopům, jak opustit Heureku

Alza radí e-shopům, jak opustit Heureku

DigiZone.cz: Živí mrtví budou na AMC koncem srpna

Živí mrtví budou na AMC koncem srpna

Vitalia.cz: Syndrom PC vidění: stačí dvě hodiny denně

Syndrom PC vidění: stačí dvě hodiny denně

120na80.cz: Zjistěte, zda je vaše klíště infikované

Zjistěte, zda je vaše klíště infikované

Lupa.cz: Babiš: nevím o návodu, jak obejít blokování webů

Babiš: nevím o návodu, jak obejít blokování webů

DigiZone.cz: DAB+ versus FM, ČRo a ČRa proti APSV

DAB+ versus FM, ČRo a ČRa proti APSV

Vitalia.cz: Mražené ryby z Makra byly falšované

Mražené ryby z Makra byly falšované

Vitalia.cz: Tetanus v USA – i po odřeninách

Tetanus v USA – i po odřeninách

Vitalia.cz: 7 nemocí očí, které musíte léčit včas

7 nemocí očí, které musíte léčit včas

Lupa.cz: Zaplatíme ti, když ti seženeme práci

Zaplatíme ti, když ti seženeme práci

Lupa.cz: Přenos hokeje padal kvůli útoku, tvrdí O2

Přenos hokeje padal kvůli útoku, tvrdí O2

Lupa.cz: Nová podoba Instagramu? Katastrofa

Nová podoba Instagramu? Katastrofa

DigiZone.cz: UPC umí televizi sedm dní nazpět

UPC umí televizi sedm dní nazpět

Lupa.cz: Válka e-shopů. Alza končí s Heurekou

Válka e-shopů. Alza končí s Heurekou

Vitalia.cz: Sója a rakovina

Sója a rakovina