Agaton.cz

Calstats - Je monitorovací program, vhodný doplňek je konfigurační utilita Positioner

yum install guile fping

Vlastní program Calstats se již nevyvíjí, poslední verze je někdy z roku 2004, nicméně až na trošku neohrabanou konfiguraci je to výborný pomocník pro jednoduché monitorování dostupnosti síťových prvků. Calstats je dostupný na adrese http://www.mobilnews.cz/honza/calstats . Pro jeho konfiguraci je však lepší použít utilitu Positioner, která dokáže potřebné soubory vygenerovat. Ale i pomocí Positioneru není nastavení triviální. Positioner je dostupný na http://artax.karlin.mff.cuni.cz/~zajio1am/software/positioner/

Po stažení potřebných souboru rozbalíme Calstats do adresaře /usr/local/calstats a Positioner do adresáře /usr/local/positioner.

Nejprve je zapotřebí vytvořit soubory (nebo upravit vzorové)  mynetwork.config a mynetwork.legend. Jméno "mynetwork" je zde i v následujícím textu uvedeno jen jako příklad, samozřejmě se použije jméno dle vlastního výběru.

soubor /usr/local/calstats/data/mynetwork.config:

MyNetwork;1250;1750;3;1;EEEEEE;

Na první pozici je text, který se bude zapisovat do výsledného obrázku jako jméno sítě. Následují dvě číselné hodnoty - šířka a výška vytvořeného obrázku. Následuje číselné vyjádření  pozice textu "MyNetwork" (0 - 4), a určení, zda výsledný obrázek bude mít zvýrazněný okraj (0 - vypnuto, 1 - zapnuto). Poslední údaj je barva pozadí vytvořeného obrázku.

soubor /usr/local/calstats/mynetwork.legend:

12;WiFi Link;
42;Ethernet 100mbit;
82;3,5 GHz Link;
62;5 GHz Link
72;5 GHz Dual-Nstreme;
53;10 GHz 40Mbps;
23;11 GHz 155Mbps;

Zde je přiřazena index odpovídajícím síťovým spojům (index se dále použije při konfiguraci pomocí utility Positioner). Čisla mají význam pro barvu čáry (první čislice) a tloušťku čáry (druhá čislice). Za středníkem následuje legenda.

Soubory mynetwork.comp a mynetwork.link budou později vytvořeny utilitou Positioner, soubor mynetwork.state vytváří calstats jako "resume" po každém průběhu.

Dále je zapotřebí zkontrolovat/upravit cesty a vybrat si způsob testování (editace souboru /usr/local/calstats/gen_stats - prvních cca 20řádků). Způsob testovaní (proměnná STATS_TYPE) je vhodné změnit na "fping" - je to nejrychlejší.

Nyní je zapotřebí nakonfigurovat Positioner. V editoru si otevřeme soubor /usr/local/positioner/positioner.scm a změníme řádky

(define INPUT-COMPS "mynetwork.comp-input")
(define OUTPUT-COMPS "/usr/local/calstats/data/mynetwork.comp")
(define INPUT-LINKS "mynetwork.link-input")
(define OUTPUT-LINKS "/usr/local/calstats/data/mynetwork.link")
(define XWIDTH 1250); width of image

hodnota proměnné XWIDTH musí odpovídat šírce obrázku definované v /usr/local/calstats/data/mynetwork.config:

Monitorovaná sít je popsána ve dvou vstupních souborech - /usr/local/positioner/mynetwork.comp-input a /usr/local/positioner/mynetwork.link-input.

mynetwork.comp-input:

("Router1" "192.168.1.1" 1)
("Router2" "192.168.1.2" 1)
("Router3" "192.168.1.3" 3)
("Router4" "192.168.1.4" 1)
("Server1" "10.20.30.40" 1)
("Server2" "10.20.30.50" 3)
.......

Zde jsou vypsány všechny monitorované prvky v pořadí     Jméno  IP  rámeček

Jméno prvku a IP adresa musí být v uvozovkách, šířka rámečku je číselná hodnota. Oddělovač je mezera. Každý řádek je uzavřen do samostatné závorky. Překlepy s chybějící nebo naopak přebývající uvozovkou nebo závorkou se obtížně hledají - program nevyhodí číslo řádku s chybou, jen se ukončí s chybovým hlášením.

mynetwork.link-input:

("Internet"    (0 23 "Router1"))
("Router2"     (0 42 "NAT"))
("Router3"     (1 62 "Porici")
.              (1 62 "Rip" "Snezka" "")
.              (0 62 "Vapenka" "" ""))
("Router4"     (1 42 "KS")
.              (2 42 "" "KPE")
.              (2 42 "" "MT2")
.              (9 42 "SWITCH")
.              (0 42 "" "AL"))
("MT2"         (0 62 "Server1")
.              (1 62 "" "" "Server2"))

*tečky na začátku řádku být nemají, to jenom zatím nevím, jak do Joomly dostat pevnou mezeru :-)

Tento soubor je na první pochopení dost složitý. Jména monitorovaných prvků musí přesně odpovídat jménům, definovaným v souboru mynetwork.comp-input. První sloupec se dá nazvat jako "source", data ve vnitřních závorkách jako "destination". Tedy při stromovém zobrazení se source může rozvětvit do několika "destination", přičemž můžou být jak na stejném řádku, tak i na více řádcích. Na prvním řádku musí být na pozici "source" vždy prvek s názvem Internet (pokud by se měl jmenovat jinak, je zapotřebí jméno změnit v souboru positioner.scm, v řádku (define ROOT "Internet") ; root of tree).
Položky ve vnitřních závorkách ("destination") mají následující význam: první údaj je relativní posun v řádcích od zdrojového prvku k cílovému (k cílovým). Může mít kladné hodnoty (posun směrem dolů), záporné hodnoty (nahoru), nebo může být 0 (stejný řádek). Následuje index spoje (dle souboru mynetwork.legend) a dále jednotlivé cílové prvky. Oddělovačem je mezera. Pokud má být (z důvodu přehlednosti) na cílovém místě mezera, použijí se prázdné uvozovky. Pokud je cílový prvek na stejném řádku, jako zdrojový, nelze jej umístit vlevo od zdrojového, vždy jen vpravo.

Index spoje je číslo, složené z barvy (první číslice) a tloušťky spoje (druhá číslice), přičemž tloušťka spoje si nemusí v těchto dvou souborech odpovídat - naopak v souboru mynetwork.legend se může z důvodu přehlednosti zvolit úmyslně silnější. Pouze v případě, že jsou vyčerpány všechny barvy, nebo se má tloušťkou spoje rozlišit různá rychlost na stejném médiu, je vhodné dodržet v těchto dvou souborech stejné hodnoty.

První konfigurace je dost složitá, takže je nejlepší začít od několika málo prvků a pak postupně přidávat další vždy až po "zkušebním" překladu.

Pokud jsou oba konfigurační soubory pro Positioner vytvořeny, je možné Positioner spustit. Pokud překlad proběhne v pořádku, v adresáři pro calstats se vytvoří soubory mynetwork.link a mynetwork.comp. V opačném případě nastane hledání zapomenutých závorek a uvozovek v konfiguračních souborech. I když překlad proběhne v pořádku, stále nejsou vidět žádné grafické výsledky - o to se postará až Calstats. Při vytváření konfigurace je možné jej spouštět ručně (příkaz gen_stats), pro rutinní užívání je potřeba jej spouštět periodicky cronem. Jen je zapotřebí správně zvolit časový interval. Při příliš dlouhém intervalu pak není včas vidět výpadek, při příliš krátkém intervalu a rozsáhlých sítích nestihne program dokončit cyklus před novým spuštěním. Už proto je lépe při konfiguraci zvolit fping místo klasického pingu, protože fping testuje cílové objekty najednou. Vhodná doba se mi jeví jako 2 až 5 minut.

Do souboru /etc/crontab přidáme následující řádek

*/2 * * * * root /usr/local/calstats/gen_stats

Když je již dvojice Calstast + Positioner funkční, je zapotřebí ještě výsledný obrázek ( /usr/local/calstats/out/mynetwork.png ) nějak prezentovat, a zároveň zajistit automatické obnovování webové stránky.

mkdir  /var/www/html/calstats
ln -s /usr/local/calstats/out/mynetwork.png /var/www/html/calstats/calstats.png

a dále vytvořit základní index.html

<HTML>
<HEAD>
<TITLE>Calstats</TITLE>
<META HTTP-EQUIV="Refresh" CONTENT="60">
<META HTTP-EQUIV="Cache-Control" content="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="Mon, 20 Sep 2004 09:59:05 GMT">
</HEAD>

<BODY bgcolor="#ffffff" text="#000000" link="#000000" vlink="#000000" alink="#000000">

<IMG BORDER=1 SRC="../images/calstats.png"></A><BR>
</BODY>
</HTML>

Samozřejmě je možné si vytvořit index.html vlastní, dle svých představ - já mám například vytvořen index.php, který si navíc testuje soubor /usr/local/calstats/data-mynetwork.state a podle toho, zda všechny prvky sítě běží, nastaví barvu okraje stránky (pokud je totiž okno browseru zmenšené, nebo je výsledný obrázek příliš velký, není bez nutností pohybu okna vidět okamžitý stav sítě).

Tento výsledný obrázek je monitoring >150 klíčových routerů, méně důležité routery zde nejsou s ohledem na přehlednost monitorovány. Pro tento účel běží na serveru ještě jeden Calstats, s delší periodou testů (15 minut) a výsledky nejsou uspořádány hierarchicky, ale tabulkově - pro tyto účely se zvolí "neviditelná" čára s hodnotou -1. Z pochopitelných důvodů je ilustrační obrázek zmenšen k nečitelnosti :-)