A Munin a lusta rendszergazdák barátja, mert egyszerű vele megoldani monitorozott értékek látványos megjelenítését. Az alábbiakban bemutatok pár alap dolgot vele kapcsolatban, valamint a plugin készítés alapjait. Az online demo oldalak megtekinthetők a hivatalos oldalon, például itt. Mit lehet megjeleníteni a grafikonon? Hát mindent, ami valamilyen módon számosítható.
Szeretnem megjegyezni, hogy nem vagyok Linux guru. Nem vagyok a pingvin lelkének professzionális értője. Ha ezt olvasod, nyilván te sem. Az alábbiakban azt szeretném bemutatni, hogy minimális tudással, hogyan is használhatjuk ezeket a szolgáltatásokat. Úgy vélem, hogy a leírtak adnak egy jó alapot.
A cikk terjedelmétől nem kell megijedni, a szuper-kezdő rész nagyon könnyű és a bejegyzés elején olvasható.
A telepítés
Én általában Debian alapú rendszereket használok és az apt csomagkezelőt. A folyamat rendkívül egyszerű és nulla konfigurálással is látványos eredményt ad:
apt-get install munin munin-node
Ahol a munin
csomag a grafikonokat rajzoló szervert jelenti, a munin-node
pedig azt a szolgáltatást, ami az előbbinek az értékeket szolgáltatja. Így ha más rendszereket is monitorozni akarunk, akkor azokra már elegendő a node-ot telepíteni. A program 5 percenként készíti a statisztikákat alapbeállításban, így kb. negyed óra után várhatjuk az első grafikonokat. Ez kicsit megnehezíti a hibakeresést, de a telepítés már eleve tartalmaz alapértelmezetten bekapcsolt pluginokat (hálózat, háttértár, processzor, …).
A grafikonok weboldala
A program statikus HTML fájlokat generál, így bármilyen webszerver szoftver alkalmas a feladatra. Az egyszerűség kedvéért most egy alap konfigos nginx-szet veszek alapul ( apt-get install nginx
), ami a weboldal gyökerét a /var/www/html
mappából veszi.
A generált statikus HTML alapértelmezésben a /var/cache/munin/www nappában jön létre, ez természetesen beállítható. Az egyszerűség kedvéért csak egy szimbolikus linket hozunk létre munin néven:
ln -s /var/cache/munin/www /var/www/html/munin
Ennek hatására a http://ip_cim/munin címen érjük majd el az automatikusan előállított oldalt. Ahogy korábban is említettem, a telepítés után érdemes pár percet várni, hogy az első ötperces futás biztosan létrehozza a fájlokat.
Ha minden jól alakul – a néhány perces várakozás után – akkor az alábbihoz hasonlót kell látnunk a weboldalon. A [] jelek közötti linkekre kattintva már láthatjuk is az első (nyilvánvalóan üres) grafikonokat.
Ha megelégedünk az alapbeállítás grafikonjaival, akkor már végeztünk is. Ha szeretnénk kicsit állítgatni, finomítani, valamint saját bővítményt készíteni, akkor érdemes tovább olvasni.
Testreszabás, saját bővítmény
A Munin (program) alapvető beállításai
A beállítás fájlt a /etc/munin/munin.conf
helyen találjuk. Itt állíthatók be a grafikon generálás alapjai: az RRD adatbázis, a generált statikus HTML, a logok helye. A HTML sablon, stb. Bővebb leírás és magyarázat a készítő oldalán.
Ami minket érdekelhet a host neve rész, ami telepítés után [localhost.localdomain]
értékkel rendelkezik, ezt bátran átírhatjuk, megtartva a domain nevek szabályait persze. Itt vehetünk fel további node-okat is.
A Node (adatforrás) alapvető beállításai
A konfig a /etc/munin/munin-node.conf
; útvonalon érhető el. Dokumentációja itt található. Számunkra talán egyetlen fontos rész van, az allow paraméter, amely azt adja meg, hogy mely IP címeknek válaszol a node. Ezt akkor kell módosítanunk, ha csak a node-ot telepítjük, de a munin grafikont rajzoló szolgáltatás egy másik gépen fut. A konfig végén található még, hogy melyik IP címhez rendeljük hozzá, ami akkor hasznos ha több hálózati kártya is van a gépben. A host *
beállítás azt jelenti, hogy az összes IP címen elérhető a node által szolgáltatott adat. Ezt érdemes a belső hálózatos IP-re állítani. A működést kipróbálhatjuk, ha telnettel rákapcsolódunk az ott szereplő portszámra (4949, de a plugin készítésnél erről majd bővebben).
A bővítmények
Minden egyes grafikont egy bővítmény állít elő. Ezek egyszerű futtatható scriptek, – amelyek bármilyen nyelven íródhatnak – csak annyi a lényeg, hogy a megfelelő formátumú kimenetet generálják. Az elérhető pluginok listája a /usr/share/munin/plugins
mappában található. Ezek nem mindegyike futtatható le egyszerűen, mert vannak olyanok, amik külső paramétert is várnak. A saját magunk által készített bővítményt is célszerű ide létrehozni. Azokat, amelyeket használni szeretnénk, a /etc/munin/plugins
mappába kell szimbolikus linkelni, például:
ln -s /usr/share/munin/plugins/sajatplugin /etc/munin/plugins
A bővítményt a Munin egy config
argumentummal hívja meg, aminek hatására a bővítmény visszaadja a grafikon paramétereit: feliratok, szín, számítás típusa, stb. A config argumentum nélkül futás hatására pedig csak az értékeket adja vissza.
Példa a plugin kimenetére config argumentummal:
pi@raspberrypi:~ $ /usr/share/munin/plugins/rpi_temp config graph_title Pi2 Temperature graph_vlabel Celsius graph_category Sensors temperature.label Temperature temperature.type GAUGE temperature.colour COLOUR0 temperature.draw AREA
és nélküle:
pi@raspberrypi:~ $ /usr/share/munin/plugins/rpi_temp temperature.value 41.698
A plugin config paraméterei
Ha szeretnénk jobban beleásni magunkat a témába, akkor a referencia itt található. Csupán 2 paraméter kötelező graph_title
és {ertek}.value
( pl. „temperature.velue” ) . Az előbbi a grafikon tetején található címsor alapja, az utóbbi pedig maga az érték, amit ábrázol.
Fontos, hogy a generált tartalom nem tartalmazhat extra szóközöket, tabulátort, ékezetet, valamint a megnevezésekben írásjeleket. Az operációs rendszerre jellemző sor vége karaktert kell alkalmaznunk (ami például PHP esetén a PHP_EOL sor végéhez fűzésével lehetséges). A megjelenítendő érték csak pontot tartalmazhat tizedes elválasztó karakterként.
Példa egy PHP scripttel geneált Munin bővítményre, amely a Raspberry Pi2 belső hőmérsékletét monitorozza:
#!/usr/bin/php <?php if ( count($argv) == 2 && $argv[1] == 'autoconf' ) { exit('yes'); } if ( count($argv) ==2 && $argv[1] == 'config' ) { echo 'graph_title Pi2 Temperature'.PHP_EOL; echo 'graph_vlabel Celsius'.PHP_EOL; echo 'graph_category Sensors'.PHP_EOL; echo 'temperature.label Temperature'.PHP_EOL; echo 'temperature.type GAUGE'.PHP_EOL; echo 'temperature.colour COLOUR0'.PHP_EOL; echo 'temperature.draw AREA'.PHP_EOL; exit(); } $temp = (int) file_get_contents('/sys/class/thermal/thermal_zone0/temp'); echo 'temperature.value '.($temp/1000).PHP_EOL; ?>
Ez a kód tartalmazza az alapvető dolgokat. Nézzük mik is ezek:
grap_title
– A grafikon címsorában megjelenő szöveg, az ékezeteket és írásjeleket kerülni kell (kötelező paraméter!)
graph_vlabel
– A függőleges tengely szövege
graph_category
– A generált HTML-ben a kategóriákhoz gyorslinkeket hoz létre, annak azonosítója állítható itt be. Megadható saját kategória is (angol alfanumerikus karakterekkel)
{fieldname}.label
– A grafikon alatti, értékhez tartozó jelmagyarázat szövege
{fieldname}.type
– Az érték számításának módját határozza meg. Hagyományos értéknél ez jellemzően GAUGE (pl. hőmérséklet), folyamatosan növekvő értéknél pedig COUNTER (pl. hálózati forgalom, ami a továbbított adat értékét tárolja, így folyamatosan növekszik)
{fieldname}.colour
– Az értékhez tartozó színt definiálja előre beállított színpaletta vagy RGB (RRGGBB, # nélkül) formátumban.
{fieldname}.draw
– Alapértelmezésben LINE értékű, ami egy vonalat ábrázol. Az AREA pedig kitölti az érték alatti területet.
{fieldname}.value
– A mért értéket tartalmazza
További lehetőségekért olvassuk el a referenciát itt vagy itt.
Ha egy grafikonon több értéket is ábrázolni akarunk egyszerre, akkor például az alábbi módon kell a generált tartalomnak kinéznie:
graph_title Temperature and humidity graph_vlabel Celsius and percent graph_category Sensors temperature.label Temperature temperature.type GAUGE temperature.colour COLOUR0 temperature.draw AREA humidity.label Humidity humidity.type GAUGE humidity.colour COLOUR1 temperature.value 26 humidity.value 32
Hozzáadás a node-hoz
Ha elkészült a bővítményünk, készítsünk egy szimbolikus linket rá a /etc/munin/plugins
mappába, például:
ln -s /usr/share/munin/plugins/mikrotik /etc/munin/plugins
Majd indítsuk újra a a munin-node -ot service munin-node restart
vagy /etc/init.d/munin-node restart
paranccsal. Természetesen legalább 5 percet várni kell, hogy megjelenjen a generált weboldalon.
A plugin tesztelése
Először próbáljuk ki, hogy a pluginunk futtatható-e (rendelkezik-e futtatás joggal, pl. chmod +x pluginnev
). Futtassuk le a config paraméterrel, ellenőrizzük a kimenetet, nem-e gépeltünk el valamit, nincs-e felesleges karakter. Majd a config nélkül futtatva csak <paraméter>.value <szám>
lehet.
A hivatalos program erre a munin-run
, futtatása munin-run pluginnev
.
Ha a fentiek jónak tűnnek, akkor telneteljünk a localhost 4949-es portjára:
telnet localhost 4949
Majd adjuk ki a fetch pluginnev parancsot:
pi@raspberrypi:~ $ telnet localhost 4949 Trying ::1... Connected to localhost. Escape character is '^]'. # munin node at raspberrypi fetch mikrotik wanrx.value 60774300714 wantx.value 73587316 .
Tipikusan elkövetett hibák
- a munin felhasználójának nincs joga futtatni a plugint, vagy a plugin által olvasott paramétert
- elgépelés, felesleges szóköz/tabulátor/írásjel
- a value értéke nem szám, vagy a tizedes elválasztó nem pont
- nincs futtatás jog a pluginon
- nincs benne a /etc/munin/plugins mappában (szimbolikus link)
Előre definiált színek:
…