Snadné Sledování Systému

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:
  1. za pomoci již zmíněného příkazu command
  2. kombinací příkazu command a regex. Kde regex je regulární výraz, jenž je aplikován na výstup příkazu command
  3. 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
  4. 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:



Příklad z reálného provozu:


Chcete vědět víc?

Na stránce dokumentace najdete popis všech parametrů a několik dalších příkladů.

Valid HTML 4.01 Transitional