Munin telepítése és beállítása (Jessie)
A Munin egy Perl-ben írt framework hálózatba kötött számítógépek adatainak gyűjtésére és (grafikus) prezentálására. Az adatszolgáltatók a Munin kliensek, ezeken a munin-node komponens fut, amely egyszerű szöveges protokollal (akár telnet konzolon) megszólítható. A node a kapott kérésre meghívja a beépülő (plugin) adatgyűjtőket (ezek lehetnek shell programok, ELF, exe binárisok, stb.), és az általuk szolgáltatott adatokat szövegesen visszaadja; ezekből a Munin szerver (aggregátor) komponens periodikusan (alapértelmezésben 5 percenként) frissít egy round-robin adatbázist és készít prezentációs grafikonokat illetve weboldalakat. A dolog azért (relatív) biztonságos, mert az önállóan, periodikusan lefuttatott plugin-ok semmilyen paramétert nem kapnak a hívásból - minden a kliensgép konfigurációs állományaiban van meghatározva, így rosszindulatú hívásokkal (relatív) kevéssé lehet fejre állítani a klienst, valamint az aggregátor oldalán sem on-demand történik a számítás illetve grafikon-készítés, így az aggregátort sem könnyű túlterhelni.
Ha a monitorozott gép képes weboldalak megjelenítésére (fut rajta webszerver), érdemes lehet standalone beállítást használni (ekkor a node és az aggregátor is ezen a gépen vannak, a lekérdezés a localhoston történik), így a gép (általában authentikációhoz kötött, önmaga által szolgáltatott weboldalon) prezentálni tudja a saját állapotát.
Az egyszerű szöveges protokoll hátránya a lehallgathatóság, ezért külső aggregátor esetén (ha nem a localhoston történik a lekérdezés) a Munint érdemes SSH tunnelbe ágyazva használni (TODO!).
Tartalomjegyzék
- 1 Munin kliens telepítése
- 2 Munin adatkezelő - aggregátor illetve standalone megjelenítő - telepítése
Munin kliens telepítése
Minden gépre érdemes feltenni, standalone gépre és az aggregátorra is. Debian csomagból telepítjük:
apt-get install munin-node # +: munin-plugins-core, munin-plugins-extra, gawk, különféle library-k
A telepítés a /etc/munin/munin-node.conf szerinti beállításokkal elindítja a munin-node démont, amely alapértelmezésben a localhost:4949 TCP porton várja az aggregátor kérdéseit. Ezt egy gyorsteszttel ellenőrizhetjük is:
telnet localhost 4949 [...] # munin node at FQHN list
A parancs listázza a rendelkezésre álló pluginokat. Egy-egy konkrét mérési értéket a fetch Munin paranccsal kérhetünk el, a Munin konzolból a quit paranccsal lehet kilépni.
Munin pluginok beállítása
A telepítő lefuttatja a munin-node-configure scriptet, amely igyekszik a releváns pluginokat kiválogatni és a /etc/munin/plugins könyvtárba symlinkeléssel aktiválni. Ezen felül magunk is tölthetünk le és aktiválhatunk további pluginokat.
Módosított vagy saját Munin pluginok
A Debian terjesztésben nem szereplő pluginok beszerezhetőek pl. a Munin Plugin Exchange weboldalról. Ezeket a Debian terjesztésbeliektől elkülönítve, a /usr/local/share/munin könyvtárba telepítjük, és ugyanúgy, a /etc/munin/plugins-ból symlinkeljük. Hozzuk létre ezt a könyvtárat:
mount -o remount,rw /usr # átmenetileg írni kell bele mkdir -p /usr/local/share/munin/plugins chown -R root:staff /usr/local/share/munin chmod -R 2775 /usr/local/share/munin
Ezután töltsük le és könyvtárhelyesen csomagoljuk ki a munin-plugins tarball legfrissebb verzióját, illetve opcionálisan a /usr/local/share/munin/plugins könyvtárba töltsük le a Munin Plugin Exchange oldalon kiszemelt Munin plugin-okat (root:staff, 755 jogosultságokkal). Letöltés illetve kicsomagolás után a/usr csak olvashatóan visszacsatolható:
mount -o remount /usr
A szükséges pluginokat symlinkeléssel aktiváljuk, illetve, ha szükséges, a plugin egyéni beállításait a plugin nevével megegyező, az /etc/munin/plugin.d alatt létrehozott állományba vegyük fel (a tarball-beli pluginok beállításait másoljuk át és szükség szerint szerkesszük meg). Általában az alábbi saját beállításokat illetve pluginokat érdemes aktiválni:
# Apache-2 webszerver és MySQL CPU load és memóriafoglalás cp /usr/local/share/munin/plugin-conf.d/cpuload /etc/munin/plugin-conf.d/ ln -s /usr/local/share/munin/plugins/cpuload_ /etc/munin/plugins/cpuload_lampserver cp /usr/local/share/munin/plugin-conf.d/memsize /etc/munin/plugin-conf.d/ ln -s /usr/local/share/munin/plugins/memsize_ /etc/munin/plugins/memsize_lampserver # Urlcheck (Apache-2 és wsm esetén) cp /usr/local/share/munin/plugin-conf.d/urlcheck /etc/munin/plugin-conf.d/ ln -s /usr/local/share/munin/plugins/urlcheck /etc/munin/plugins/urlcheck # A hasonló funkciójú http_loadtime plugint ez esetben nem használjuk rm /etc/munin/plugins/http_loadtime # GRSecurity kernel patch miatti override-ok cp /usr/local/share/munin/plugin-conf.d/if-grsec /etc/munin/plugin-conf.d/ cp /usr/local/share/munin/plugin-conf.d/processes-grsec /etc/munin/plugin-conf.d/
A fent aktivált pluginok általában elegendőek és nem igényelnek külön beállításokat (a Munin Plugin Exchange-ről opcionálisan letöltöttek igényelhetnek). Aktiválás után indítsuk újra a munin-node-ot:
systemctl restart munin-node
IPMI pluginok
TODO!
sensors_ pluginok
Az lm-sensors-hoz kapcsolódó pluginokat általában nem ismeri fel a suggest funkció, így (ha a hardware monitorozása ezzel történik és a sensors parancs egyébként lefut) manuálisan kell felvenni a symlinkeket:
ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_fan ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_temp ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_volt # Érvényesítés systemctl restart munin-node
SNMP pluginok
TODO!
NTP pluginok részleges törlése
Talán nem szükséges minden, a maintainer által beállított grafikon, elég az ntp_offset megtartása:
rm $(ls -1 /etc/munin/plugins/ntp* | grep -iv 'ntp_offset') # Érvényesítés systemctl restart munin-node
Uptime plugin törlése
Erre a pluginra (szerintem) nincs szükség:
rm /etc/munin/plugins/uptime # Érvényesítés systemctl restart munin-node
Munin node távoli lekérdezése SSH tunnelen keresztül
Ez a beállítás nem szükséges standalone Munin használata esetén (ha nincs és nem is lesz külső aggregátor).
Előkészítés
Mivel a Munin titkosítalan szöveges adatforgalmat használ, azt célszerű SSH tunnelen keresztül vezetni. Ehhez hozzunk létre a munin Linux felhasználó home könyvtárában (/var/lib/munin) egy tárhelyet az aggregátor publikus kulcsa számára:
mkdir -m 750 /var/lib/munin # a Jessie telepítő nem hozza létre a munin felhasználó home könyvtárát - vajon miért? chown munin:munin /var/lib/munin mkdir -m 700 /var/lib/munin/.ssh # kulcsok könyvtára chown munin:munin /var/lib/munin/.ssh touch /var/lib/munin/.ssh/authorized_keys2 chown munin:munin /var/lib/munin/.ssh/authorized_keys2 chmod 400 /var/lib/munin/.ssh/authorized_keys2 chattr +i /var/lib/munin/.ssh/authorized_keys2 # kulcs bemásolása előtt chattr -i -vel kinyitni, utána visszazárni!
Külső aggregátor engedélyezése
Ha van külső aggregátorunk, az imént létrehozott állományba másoljuk be az aggregátor nyilvános kulcsát az alábbi, korlátozó előtagokkal:
from="IP.IP.IP.IP",command="/bin/false",no-pty,no-X11-forwarding,no-agent-forwarding,no-port-forwarding,permitopen="localhost:4949" ssh-dss AAAA...
ahol a from tagban az aggregátor IP címe szerepel. Ezekkel a megkötésekkel ez a kulcs kizárólag a Munin forgalmának a from-ban rögzített IP felé tunnelezésére alkalmas.
Az aggregátorra belépve ellenőrizzük a kapcsolatfelvételt:
ssh -f -N -T -L 4949:localhost:4949 -i /PATH/TO/PRIVATE/KEY munin@FULLY.QUALIFIED.HOSTNAME telnet localhost 4949
parancsokra a telepítés alatt álló szerver Munin konzoljának kell bejelentkeznie. Sikeres teszt esetén ne felejtsük kill-lel leállítani az SSH tunnelt!
Ezzel a külső aggregátor használatát előkészítettük, a további beállításokat már azon kell elvégeznünk.
A munin-node bejegyzése a Tiger által ismert démonok közé
A munin-node démon állandóan fut, valamint jogosan figyel a 4949 TCP porton, így a biztonsági figyelmeztetések elkerülése érdekében be kell jegyezni azt a tigerrc állományba:
-rw-r--r-- root root /etc/tiger/tigerrc [...] Tiger_Listening_ValidUsers='[...]|munin|[...]' [...] Tiger_Listening_ValidProcs='[...]|munin-node|[...]' [...] Tiger_Running_Procs='[...] /usr/sbin/munin-node [...]' [...]
Munin adatkezelő - aggregátor illetve standalone megjelenítő - telepítése
Ezek a szolgáltatások webfelületen prezentálják a más gépekről, eszközökről (aggregátor) illetve saját magukról (standalone) gyűjtött adatokat. Az esetleges logszerverrel integrált központi aggregátoron (TODO!) kívül hasznos, ha (authentikáció után) megtekinthetőek a saját szerver Munin ábrái minden web megjelenítésre képes szervergépen is, ezeket tehát telepítsük standalone megjelenítőként.
Érdemes az alábbiakat a Munin kliens telepítése és beállítása után elvégezni. A Munin adatkezelőt Debian csomagból telepítjük:
apt-get install munin # +: rrdtools, sok font és fontkönyvtár
Telepítés után a beállítás idejére kommentezzük ki a /etc/cron.d/munin-ban az ötpercenkénti futtatást.
A Munin beállításai
A telepítés létrehozza a Munin által létrehozandó statikus webállományok alapkönyvtárát, amit a webes házirend teljesülése érdekében symlinkelve áthelyezünk a /var/cache alól a /var/www alá és megváltoztatjuk a jogosultságokat:
mv /var/cache/munin/www /var/www/munin # áthelyezzük ln -s /var/www/munin /var/cache/munin/www # symlinkkkel követjük chown -h munin:munin /var/cache/munin/www # csak szépség :-) chown munin:www-data /var/www/munin; chmod 2750 /var/www/munin
Ezután ellenőrizzük az adatkezelő konfigurációját - elegendő az alábbi sorokat meghagyni:
mv /etc/munin/munin.conf /etc/munin/munin.conf.bak # mentjük a régit mcedit /etc/munin/munin.conf # készítünk egy újat
-rw-r--r-- root root /etc/munin/munin.conf # Configuration file for Munin # The next three variables specifies where the location of the RRD # databases, the HTML output, and the logs, severally. They all # must be writable by the user running munin-cron. dbdir /var/lib/munin htmldir /var/www/munin logdir /var/log/munin rundir /var/run/munin # Where to look for the static www files staticdir /etc/munin/static # Where to look for the HTML templates tmpldir /etc/munin/templates # (Exactly one) directory to include all files from. # includedir /etc/munin/munin-conf.d # Make graphs show values per minute instead of per second #graph_period minute # a simple (local)host tree (supposed, we're monitoring the localhost also) [FULLY.QUALIFIED.HOSTNAME] address 127.0.0.1 use_node_name yes
(a localhost-ra vonatkozó node definíció feltételezi, hogy a telepítés alatt álló szerveren már be van állítva a munin-node).
Ezután a Munin periodikus (ötpercenkénti) futása engedélyezhető a /etc/cron.d/munin-beli comment eltávolításával. Ezzel az adatgyűjtést megkezdtük, a továbbiakban a megjelenítést állítjuk be.
Webfelület beállítása Apache-2 környezetben
Apache-2 környzezetben a telepítő a Munin webfelületét /munin aliasként publikálja minden virtualhost alatt, illetve CGI-t is engedélyez - ezt szüntessük meg:
a2disconf munin systemctl reload apache2
és a /var/www/munin alatt keletkező statikus webtartalmat kizárólag az alapértelmezett virtualhost webcímén publikáljuk az alábbi symlink elhelyezésével:
ln -s /var/www/munin /var/www/FULLY.QUALIFIED.HOSTNAME/munin chown -h webadmin:www-data /var/www/FULLY.QUALIFIED.HOSTNAME/munin
Gyorstesztként az adatgyűjtés megkezdését követően várjuk meg a /var/www/munin első feltöltését (legfeljebb 5 perc), majd egy, a telepítés alatti szervergépet http protokollon elérő munkaállomás grafikus böngészőprogramjában kérjük el a http:/FULLY.QUALIFIED.HOSTNAME/munin weboldalt, és tekintsük meg a generált grafikonokat.
HTTPS és authentikáció beállítása
Nyilvános webszervernél (tulajdonképpen mindig) célszerű a webfelület megtekintését authentikációhoz kötni - ilyenkor https-re irányítjuk a látogatót, és a https konfigurációban valamilyen - pl. a webstatisztikával azonos - azonosítást követelünk meg:
-rw-r--r-- root root /etc/apache2/sites-enabled/000-default.conf [...] <VirtualHost *:80 > [...] <IfModule mod_rewrite.c> [...] # Logfiles. [...] # Munin graphs. RewriteRule ^/munin(.*) https://%{HTTP_HOST}/munin$1 [L,R,QSA] [...] </Virtualhost> # Administration and special features via SSL. <IfModule mod_ssl.c> <VirtualHost *:443 > [...] # DAV administration settings. <Directory /var/www/FULLY.QUALIFIED.HOSTNAME> [...] </Directory> [...] # Munin settings. <LocationMatch "^/(munin(/.*)*$)"> <IfModule mod_dav.c> # Unfortunately, DAV Off cannot be used to turn off a subtree of a DAV-enabled location. # https://wiki.apache.org/httpd/ListOfErrors AH00578 #DAV off </IfModule> Options +FollowSymLinks AuthType Basic AuthBasicProvider file AuthName "Monitoring" AuthUserFile /etc/apache2/auth.d/FULLY.QUALIFIED.HOSTNAME/FULLY.QUALIFIED.HOSTNAME.user AuthGroupFile /etc/apache2/auth.d/FULLY.QUALIFIED.HOSTNAME/FULLY.QUALIFIED.HOSTNAME.group <Limit GET HEAD OPTIONS> Require group stats </Limit> <LimitExcept GET HEAD OPTIONS> Require all denied </LimitExcept> </LocationMatch> [...]
Ne feledkezzünk el a tényleges FULLY.QUALIFIED.HOSTNAME beírásáról!
A beállítások a webszerver konfiguráció újratöltésével érvényesíthetőek:
systemctl reload apache2
Gyorstesztként egy, a telepítés alatti szervergépet http és https protokollon elérő munkaállomás grafikus böngészőprogramjában kérjük el a http:/FULLY.QUALIFIED.HOSTNAME/munin weboldalt, és az automatikus https-re váltás, majd auditor-ként bejelentkezés után tekintsük meg a generált grafikonokat.
Webfelület beállítása Lighty környezetben
Lighty-t (lighttpd-t) használó szervergépen a Munin eléréséhez szükséges beállítások a házirend szerinti telepítésben eleve szerepelnek.
Gyorstesztként egy, a telepítés alatti szervert http és https protokollon elérő munkaállomás grafikus böngészőprogramjában kérjük el a http:/IP.IP.IP.IP/munin/ weboldalt (a záró slash sajnos kell az alias miatt! - TODO), és az automatikus https-re váltás, majd auditor-ként bejelentkezés után tekintsük meg a generált grafikonokat (vegyük figyelembe, hogy a Munin 5 percenként generál, így értékelhető grafikont esetleg csak 10-15 perc múlva láthatunk).
Munint monitorozó pluginok engedélyezése
Minden grafikus eredményt is szolgáltató gépre érdemes telepíteni a Munin saját működését (munin-stats, munin-update) monitorozó pluginokat is - ezek tájékoztatást adnak arról, hogy a monitorozás (elsősorban a grafikonok készítése) mennyire terheli az adott gépet. A pluginok a Debian terjesztésben benne vannak, csak symlinkelni kell azokat (és a munin-node-ot újraindítani):
ln -s /usr/share/munin/plugins/munin_stats /etc/munin/plugins/munin_stats #ln -s /usr/share/munin/plugins/munin_update /etc/munin/plugins/munin_update # csak aggregátorra telepítsük! # Érvényesítés systemctl restart munin-node
Standalone (a grafikonokat önmagban szolgáltató) webszerver esetén a Munin beállításával készen vagyunk.
Aggregátor funkciók beállítása
Ezek a beállítások csak aggregátoron szükségesek, standalone szervergépen nem.
TODO! - még ne vedd komolyan!
SSH tunnel előkészítése
- Töltsük le és könyvtárhelyesen csomagoljuk ki az ssh-tunnels tarballt;
- beütemezés boot-kor (nem muszáj, a cron is elindítja, legkésőbb negyed óra múlva):
sysv-rc-conf -p
- tunnelek életben tartása:
-rw-r--r-- root root /etc/cron.d/ssh-tunnels # Crontab fragment: esetleg megszakadt SSH tunnelek negyedorankenti ujraepitese. # kovacs.zoltan@mimoza.hu 2007-01-03 2,17,32,47 * * * * root /etc/init.d/ssh-tunnels start >/dev/null 2>&1
Munin node lekérdezésének beállítása az aggregátoron
Ha az SSH tunnelezett kapcsolat megvan, azt állítsuk be állandóra:
-rw-r--r-- root root /etc/default/ssh-tunnels [...] # lport:rhost:rport user@remotehost keyfile pathname (W/O passphrase!) LPORT:localhost:4949 munin@FULLY.QUALIFIED.HOSTNAME /PATH/TO/PRIVATE/KEY
ahol LPORT egy tetszőlegesen választott magas portszám (az aggregátoron localhost:LPORT-on látszik a telepítés alatti szerver Muninja). Indítsuk újra az ssh-tunnels-t:
/etc/init.d/ssh-tunnels start
ami a meglévő tunneleket nem bántja, viszont felépíti a kapcsolatot a telepítés alatti szerverrel.
Ezután közöljük a Muninnal az új node létezését:
-rw-r--r-- root root /etc/munin/munin.conf [...] [FULLY.QUALIFIED.HOSTNAME] address localhost port LPORT use_node_name yes
A Munin aggregátor következő lefutása (alapértelmezett időzítés esetén legfeljebb 5') után a webfelületen láthatóak az új node adatai.