Legyes.hu

Munin grafikon készítés, kezdő szinten

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

Előre definiált színek:

Forrás: http://munin-monitoring.org/wiki/fieldname.colour

Exit mobile version