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?
DigiZone.cz: Jaký byl Pražský výběr v režii TV Prima

Jaký byl Pražský výběr v režii TV Prima

Root.cz: Bitcoin začal vyplácet jen půlku odměn

Bitcoin začal vyplácet jen půlku odměn

DigiZone.cz: Sat novinky: Skylink skončil s kanály ČT

Sat novinky: Skylink skončil s kanály ČT

120na80.cz: Jaké plavecké pomůcky vaše dítě ochrání?

Jaké plavecké pomůcky vaše dítě ochrání?

120na80.cz: SOS aneb spálená pokožka

SOS aneb spálená pokožka

Podnikatel.cz: Polská vejce na českém pultu Albertu

Polská vejce na českém pultu Albertu

Vitalia.cz: Cvičení tabata: na hubnutí i posilování?

Cvičení tabata: na hubnutí i posilování?

Podnikatel.cz: 3 velké průšvihy obchodních řetězců

3 velké průšvihy obchodních řetězců

Podnikatel.cz: Tahle praktika stála šmejdy přes milion

Tahle praktika stála šmejdy přes milion

Lupa.cz: Vodafone umí volání přes Wi-Fi. Z ciziny jako v ČR

Vodafone umí volání přes Wi-Fi. Z ciziny jako v ČR

Vitalia.cz: Pepsi Cola mění sirup za cukr

Pepsi Cola mění sirup za cukr

DigiZone.cz: Skylink o půlnoci vypnul 12 525

Skylink o půlnoci vypnul 12 525

DigiZone.cz: DAB už i z Košic. A překvapivě!

DAB už i z Košic. A překvapivě!

Měšec.cz: Se stavebkem k soudu už (většinou) nemusíte

Se stavebkem k soudu už (většinou) nemusíte

Lupa.cz: eIDAS: Nepřehnali jsme to s výjimkami?

eIDAS: Nepřehnali jsme to s výjimkami?

Podnikatel.cz: Profese budoucnosti? Úředník nepřežije

Profese budoucnosti? Úředník nepřežije

Vitalia.cz: Největší chyby při podávání vína?

Největší chyby při podávání vína?

Měšec.cz: Kurzy platebních karet: vyplatí se platit? (TEST)

Kurzy platebních karet: vyplatí se platit? (TEST)

Lupa.cz: Největší pitominy s logem “nyní smart a připojené”

Největší pitominy s logem “nyní smart a připojené”

Lupa.cz: Největší torrentový web KickassTorrents padl

Největší torrentový web KickassTorrents padl