Flexibilní program pro monitoring Linuxu
Pokud potřebujete na dálku sledovat stav Vašeho serveru a preferujete jednoduchou obsluhu, zkuste program
Snadné
Sledování
Systému.
Vznikl jako protiklad ke komplikovaným programům na sledování rozsáhlých sítí serverů, které většinou ani plně nevyužijete.
Jak to pracuje:
Cron v pravidelných intervalech spouští tento program. Ten na základě konfiguračního souboru zjistí stav systému, uloží si hodnoty a zakreslí je do obrázku jako graf. Tento obrázek si pak můžete přes WWW server prohlížet odkudkoliv a tak lehce zjistíte co se děje na sledovaném počítači. Navíc je možno nastavit posílání varování při překročení kritických hodnot.
Co potřebujete:
Linux, Python, Python Imaging Library (PIL), textový editor, základní znalost příkazů Linuxu a chvilku času.
A samozřejmě program
Snadné Sledování Systému (verze z 30.3.2008, cca 40KiB).
Python Imaging Library (PIL) není nutný, pokud rezignujete na tvorbu grafů. Uložené hodnoty lze prohlížet přes funkci "show()" v python programu. Podivejte se na
programátorské rozhraní.
Instalace a tutoriál:
Rozbalte balíček do Vámi vytvořeného adresáře, třeba ~/sss a naleznete tam tyto soubory:
sss.py hlavní program, ten bude spouštěn cronem
sss2.py knihovna nutná pro běh sss.py
luximr.ttf TTF font pro text v grafu
Nyní v textovém editoru vytvořte konfigurační soubor, který pojmenujte sss.conf. Dejme tomu, že nás zajímá průměrné zatížení systému (normálně zjistíte příkazem 'w', ten si to zjišťuje ze souboru /proc/loadavg):
default
directory_dump = "/home/user/sss/dump"
directory_image = "/srv/www/htdocs/sss"
service lavg1
text = "Průměrné zatížení za 1 min"
count = 600
interval = "1m"
command = "cut -d' ' -f1 /proc/loadavg"
S poznámkami to bude pochopitelnější. Znakem '#' začínají poznámky, prazdné řádky a mezery před i za se ignorují:
# v sekci default se definují parametry společné pro všechny služby
default
# do tohoto adresáře se ukládají hodnoty
# program musí mít právo čtení a zápisu do tohoto adresáře
directory_dump = "/home/user/sss/dump"
# do výstupního adresáře se ukládají obrázky grafu
# program musí mít právo pro zápis do tohoto adresáře
directory_image = "/srv/www/htdocs/sss"
# co graf, to služba
# každá služba má své jedinečné jméno
# tak se také bude jmenovat výsledný obrázek s grafem
service lavg1
# popis grafu
text = "Průměrné zatížení za 1 min"
# kolik hodnot se má ukládat
count = 600
# v jakých intervalech se má hodnota zjišťovat, m=minuta, h=hodina
# protože interval je jedna minuta a ukládá se 600 hodnot,
# můžete zjistit stav až 10 hodin nazpět
interval = "1m"
# příkaz Linuxu, který se má provést,
# jehož výsledkem musí být právě a pouze jedno číslo
command = "cut -d' ' -f1 /proc/loadavg"
V nové verzi programu existují celkem čtyři možnosti, jak získat hodnotu:
- za pomoci již zmíněného příkazu command
- kombinací příkazu command a regex. Kde regex je regulární výraz, jenž je aplikován na výstup příkazu command
- jestliže není zadán příkaz command, otevře se soubor uvedený jako parametr v atributu filename. Soubor musi obsahovat na prvním řádku jedno číslo
- kombinací filename a regex. Regulární výraz je pak aplikován na soubor filename
Takže, pokud chcete znát průměrné zatížení za 1 min, lze použít místo
command i:
filename = "/proc/loadavg"
regex = "(\d+\.\d+) "
Fajn. Teď v terminálu spusťte pokusně program sss.py. Jediný parametr programu je název a umístění konfiguračního souboru. Pokud se jmenuje sss.conf a je umístěn ve stejném adresáři jako program, není třeba parametr zadávat.
user@computer:~/sss> ./sss.py
Pokud se objevila chyba, zkontrolujte zda máte nainstalovány všechny potřebné věci. Případně zkontrolujte konfigurační soubor.
Jestliže vše správně proběhlo, podívejte se do výstupního adresáře, v našem případě /srv/www/htdocs/sss, bude tam obrázek s názvem lavg1.png.
A v adresáři /home/user/sss/dump se objeví soubor lavg1.dump, zde jsou ukládány naměřené hodnoty
Program sám doplní popisky, zleva doprava nahoře je čas vytvoření grafu, popis grafu a minimální a maximální hodnota za sledované období. Pochopitelně po prvním měření bude vše stejné. Zvýrazněná hodnota ukazuje aktuální hodnotu, to je ještě zdůrazněno svislou pozicí.
Posečkejte minutu a rozjeďte znovu program sss.py, přibyde další hodnota:
Samozřejmě takto pracovat s programem by nebylo pohodlné. Do cronu (crontab -e) zadáme toto:
* * * * * /home/user/sss/sss.py
Což znamená, že program sss.py bude automaticky spouštěn každou minutu.
Po několika hodinách (v 19h byl počítač vypnutý):
Teď můžeme přidat další službu, zajímá nás třeba rychlost stahování z internetu. Zde je nutno jít oklikou, přenesené bajty jsou ukládány v souboru
/proc/net/dev. Nutno ještě vybrat správný řádek s interfejsem, například eth0. Program sss.py si bude ukládat právě tyto bajty. V konfiguračním souboru mu pak řekneme, že má jednotlivé sousedící hodnoty od sebe odečíst (differential = True) a tak získáme počet bajtů přenesených za daný časový úsek. Navíc ještě zadáme, že nás zajímá rychlost (data = "bps") a program sám provede výpočet a zobrazí výsledek. Konfigurační soubor pak vypadá takto (protože parametry count a interval zůstaly stejné je možné je dát do oddělení default):
default
directory_dump = "/home/user/sss/dump"
directory_image = "/srv/www/htdocs/sss"
count = 600
interval = "1m"
service lavg1
text = "Průměrné zatížení za 1 min"
command = "cut -d' ' -f1 /proc/loadavg"
service download
text = "Rychlost downloadu"
differential = True
data = "bps"
command = "awk 'BEGIN {FS=\"[ :]+\"} /eth0/ {print $3}' /proc/net/dev"
Po několika hodinách:
Aby jste měli přehled o všech službách najednou, můžete se vytvořit jednoduchou HTML stránku s názvem index.html, kde budou grafy zobrazeny:
<html>
<head>
<meta http-equiv="refresh" content="60">
<title>SSS</title>
</head>
<body>
<div align=center>
<img src="lavg1.png">
<br />
<img src="download.png">
</div>
</body>
</html>
V prohlížeči pak stačí zadat http://localhost/sss a hned máte přehled o počítači.
Program je dosti variabilní, záleží jen na Vás kolik a jaké služby potřebujete sledovat. Navíc máte velké možnosti změny vzhledu grafu: