Munin installeren en configureren voor server monitoring

13 augustus, 2014
Handleidingen
CentOS, Fedora, Monitoring, Ubuntu, Debian

Munin is open source monitoring software waarmee het verbruik van systeembronnen zoals het geheugen, de processor en schijfruimte over lange tijd gevolgd en grafisch in beeld gebracht kan worden. Munin is eenvoudig te installeren op onder meer Debian, Ubuntu, Fedora, Mandriva en Gentoo.

Munin bestaat uit twee onderdelen: munin en munin-node. Een computersysteem dat gemonitord wordt, lokaal of van afstand, heet een node en dient dan ook een installatie van munin-node te bevatten. Dit programma verzamelt, in opdracht van het munin-onderdeel, met behulp van plug-ins allerlei gegevens over het lokale systeem. De munin-master vraagt standaard iedere 5 minuten de gegevens op van alle aangesloten nodes. Deze gegevens worden door munin opgeslagen en omgezet naar historische grafieken. Vervolgens worden HTML-pagina's gegenereerd waarop deze bekeken kunnen worden.

Een voorbeeld van door Munin gegenereerde HTML-pagina's en grafieken vind je onder meer bij de Universiteit van Oslo.

Enkele Linux-distributies hebben Munin opgenomen in de standaard repositories (softwaremagazijnen). In dat geval is het mogelijk de software direct te installeren met behulp van de package manager. Is dat echter niet het geval, dan moet eerst een aanvullende repository toegevoegd worden.

Deze handleiding bevat instructies voor het installeren en configureren van Munin op een systeem met CentOS, Fedora, Ubuntu of Debian. Zowel munin als munin-node worden op hetzelfde systeem geïnstalleerd. Onderaan de pagina vind je instructies om een apart systeem te monitoren.

Let op: om de resultaten van Munin op te kunnen vragen in een web browser, is een webserver zoals Apache nodig. Ook is enige vertrouwdheid met de Linux commandoregel vereist voor het uitvoeren van onderstaande commando's en eventueel het bewerken van configuratiebestanden.

Munin installeren

De installatie van munin en munin-node is eenvoudig uit te voeren op Ubuntu, Debian en Fedora. Voer onderstaand commando uit in de console:

Ubuntu/Debian:

apt-get install munin munin-node

Fedora:

yum install munin munin-node

Gebruik je echter CentOS, dan moet je eerst de EPEL-repository activeren, die de pakketten munin en munin-node bevat.

CentOS 7:

rpm -Uvh http://mirror.proserve.nl/fedora-epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm

CentOS 6:

rpm -Uvh http://mirror.proserve.nl/fedora-epel/6/i386/epel-release-6-8.noarch.rpm

CentOS 5:

rpm -Uvh http://mirror.proserve.nl/fedora-epel/5/i386/epel-release-5-4.noarch.rpm

Weet je niet welke versie van CentOS je hebt, gebruik dan het volgende commando:

cat /etc/*release*

Vervolgens kun je, net als op Fedora, munin en munin-node installeren met het volgende commando:

yum install munin munin-node

Munin is in de programmeertaal Perl ontwikkeld, en maakt ook gebruik van andere software, zoals RRDtool om grafieken te genereren. Om die reden zal het systeem naast munin en munin-node ook nog een reeks andere softwarepakketten (dependencies, ofwel afhankelijkheden) downloaden en installeren.

Munin (her)starten en stoppen

Munin-node is een zogeheten daemon: een proces dat altijd op de achtergrond aanwezig is. Het wacht immers op opdrachten van de munin-master. Deze daemon kunnen we op elk moment stoppen en (her)starten. Een herstart is nodig na bijvoorbeeld het wijzigen van een configuratiebestand.

/etc/init.d/munin-node start
/etc/init.d/munin-node stop
/etc/init.d/munin-node restart

Niet alle distributies ondersteunen deze commando's om met munin-node te communiceren. Probeer in dat geval het volgende alternatief:

service munin-node start
service munin-node stop
service munin-node restart

Is munin-node niet direct na installatie opgestart, probeer hem dan handmatig op te starten met bovenstaand startcommando.

Om de continuïteit van het monitoren te waarborgen, moet munin-node automatisch opgestart worden wanneer het systeem zelf is herstart:

Ubuntu/Debian:

update-rc.d munin-node defaults

CentOS/Fedora:

chkconfig munin-node on

Munin configureren

Munin is voor een groot deel plug-and-play software, oftewel: na installatie werkt het gewoon. Toch kan het nodig zijn om enkele instellingen te wijzigen. De programma's munin en munin-node hebben elk een eigen configuratiebestand. Deze bestanden, munin.conf en munin-node.conf, vind je in /etc/munin/.

In munin.conf worden onder meer alle nodes geconfigureerd, evenals de mappen waarin de grafieken en HTML-pagina's worden opgeslagen:

# Example configuration file for Munin, generated by 'make build'

# The next three variables specifies where the location of the RRD
# databases, the HTML output, logs and the lock/pid files. They all
# must be writable by the user running munin-cron. They are all
# defaulted to the values you see here.
#
#dbdir /var/lib/munin
#htmldir /var/www/html/munin
#logdir /var/log/munin
#rundir /var/run/munin

(...)

# a simple host tree
[localhost]
address 127.0.0.1
use_node_name yes

Elke regel die met een hekje (#) begint, is een commentaarregel, die door het programma genegeerd wordt op het moment dat het het bestand leest. Om bijvoorbeeld de map waarin de HTML-bestanden worden opgeslagen te wijzigen, verwijder je het hekje voor htmldir en pas je het bijbehorende pad aan.

Let op: de map waarin de HTML-bestanden standaard worden opgeslagen, kan per Linux-distributie en Munin-installatie verschillen. Gebruik eventueel onderstaand commando om de huidige instelling van htmldir te achterhalen:

cat /etc/munin/munin.conf | grep htmldir

Werking van Munin controleren

Zodra Munin geïnstalleerd en gestart is, en er tenminste vijf minuten zijn gepasseerd, kun je controleren of het programma reeds met succes de HTML-pagina's en grafieken heeft gegenereerd. Hiervoor heb je de locatie van htmldir nodig (zie bovenstaand commando).

Is de htmldir ingesteld op /var/www/html/munin, gebruik dan het volgende commando, of vervang dit met de correcte locatie op jouw systeem:

ls -l /var/www/html/munin

Als alles goed werkt, komt een lijst van bestanden tevoorschijn die vergelijkbaar is met het onderstaande:

total 196
-rw-r--r-- 1 munin munin 9291 Aug 13 07:20 disk-day.html
-rw-r--r-- 1 munin munin 9311 Aug 13 07:20 disk-month.html
-rw-r--r-- 1 munin munin 9301 Aug 13 07:20 disk-week.html
-rw-r--r-- 1 munin munin 9301 Aug 13 07:20 disk-year.html
-rw-r--r-- 1 munin munin 3374 Aug 13 07:20 index.html
drwxr-xr-x 3 munin munin 4096 Aug 13 07:10 localhost
-rw-r--r-- 1 munin munin 6267 Aug 13 07:20 network-day.html
-rw-r--r-- 1 munin munin 6279 Aug 13 07:20 network-month.html
-rw-r--r-- 1 munin munin 6273 Aug 13 07:20 network-week.html
-rw-r--r-- 1 munin munin 6273 Aug 13 07:20 network-year.html
-rw-r--r-- 1 munin munin 3803 Aug 13 07:20 nfs-day.html
-rw-r--r-- 1 munin munin 3807 Aug 13 07:20 nfs-month.html
-rw-r--r-- 1 munin munin 3805 Aug 13 07:20 nfs-week.html
-rw-r--r-- 1 munin munin 3805 Aug 13 07:20 nfs-year.html
-rw-r--r-- 1 munin munin 4839 Aug 13 07:20 problems.html
-rw-r--r-- 1 munin munin 5556 Aug 13 07:20 processes-day.html
-rw-r--r-- 1 munin munin 5566 Aug 13 07:20 processes-month.html
-rw-r--r-- 1 munin munin 5561 Aug 13 07:20 processes-week.html
-rw-r--r-- 1 munin munin 5561 Aug 13 07:20 processes-year.html
drwxr-xr-x 2 munin munin 4096 Aug 13 07:04 static
-rw-r--r-- 1 munin munin 9144 Aug 13 07:20 system-day.html
-rw-r--r-- 1 munin munin 9166 Aug 13 07:20 system-month.html
-rw-r--r-- 1 munin munin 9155 Aug 13 07:20 system-week.html
-rw-r--r-- 1 munin munin 9155 Aug 13 07:20 system-year.html

Webserver configureren

Als de Apache HTTP Server (httpd) reeds op het systeem staat zodra Munin wordt geïnstalleerd, wordt een bestand genaamd munin.conf automatisch in de map /etc/httpd/conf.d geplaatst. De inhoud van die configuratiebestand zal er ongeveer als volgt uit zien:

# This file can be used as a .htaccess file, or a part of your apache
# config file.
#
# For the .htaccess file option to work the munin www directory
# (/var/www/html/munin) must have "AllowOverride all" or something close
# to that set.
#
# As a config file enclose it in like so:
#
<directory /var/www/html/munin>
AuthUserFile /etc/munin/munin-htpasswd
AuthName "Munin"
AuthType Basic
require valid-user

# This next part requires mod_expires to be enabled.
#
# We could use around here, but I want it to be
# as evident as possible that you either have to load mod_expires _or_
# you coment out/remove these lines.

# Set the default expiery time for files 5 minutes 10 seconds from
# their creation (modification) time. There are probably new files by
# that time.

ExpiresActive On
ExpiresDefault M310

</directory>
ScriptAlias /munin-cgi/munin-cgi-graph /var/www/cgi-bin/munin-cgi-graph

Na een herstart van Apache zal het mogelijk zijn om via het IP-adres de Munin-resultaten te bereiken. Is het IP-adres van de server bijvoorbeeld 146.185.129.85, dan zijn de HTML-pagina's van Munin op te vragen via de URL http://146.185.129.85/munin/.

CentOS/Ubuntu/Debian:

/etc/init.d/httpd restart

Fedora:

service httpd restart

De /munin/-map is standaard beveiligd, waardoor je gevraagd zult worden om in te loggen. Een wachtwoord kun je instellen met het volgende commando:

htpasswd -cm /etc/munin/munin-htpasswd munin_web

Waarbij munin_web de gebruikersnaam is. Vul deze gegevens vervolgens in de web browser in om toegang tot de Munin-resultaten te krijgen.

Authenticatie is eventueel uit te schakelen door de vier regels van "AuthUserFile" tot en met "require valid-user" te verwijderen.

Wil je vanaf elke aan de webserver gekoppelde domeinnaam (virtual host) Munin kunnen bereiken, voeg dan bovenin /etc/httpd/conf.d/munin.conf de onderstaande regel toe, gebruik makend van de exacte locatie van de munin map op je systeem. In het geval van /var/www/html/munin wordt dat:

Alias /munin /var/www/html/munin

Na wederom een herstart van Apache, zul je Munin nu ook via bijvoorbeeld http://www.jouwdomeinnaam.nl/munin/ kunnen bereiken.

Voorbeeldconfiguraties voor andere webservers, zoals nginx en litespeed, zijn te vinden in de officiële Munin documentatie.

Plug-ins toevoegen en verwijderen

De onderdelen van het systeem waar Munin statistieken over geeft, worden bepaald door geïnstalleerde plug-ins. Deze zijn opgeslagen in de map /usr/share/munin/plugins, maar Munin leest hiervoor de map /etc/munin/plugins uit. Laatstgenoemde map bevat enkel verwijzingen (symbolische links) naar plug-ins uit de eerstgenoemde map. Zo kan een plug-in eenvoudig uit de statistieken gehaald worden, zonder de plug-in zelf te verwijderen.

Om bijvoorbeeld de statistieken met betrekking tot de uptime van het systeem uit Munin te verwijderen:

rm /etc/munin/plugins/uptime

Alleen de link wordt nu verwijderd. Het bestand /usr/share/nginx/plugins/uptime blijft behouden.

Om dezelfde (of een andere) plug-in weer toe te voegen, maken we een nieuwe link aan:

ln -s /usr/share/munin/plugins/uptime /etc/munin/plugins/uptime

Een overzicht van geïnstalleerde plug-ins vind je met het commando:

ls /usr/share/munin/plugins/

Na elke (reeks) wijziging(en) dient munin-node herstart te worden.

Wachten op statistieken

Zodra Munin succesvol geïnstalleerd is, statistieken genereert, en we deze via de web browser kunnen bekijken, is het een kwestie van tijd voordat de grafieken gevuld zijn met nuttige gegevens, waarmee je de gezondheid van het systeem in de gaten kunt houden, en knelpunten kunt ontdekken.

Meerdere systemen monitoren

Wanneer je met één munin-master meerdere systemen wilt monitoren, zorg er dan voor dat op elk systeem munin-node geïnstalleerd en actief is, en dat binnenkomend verkeer naar poort 4949 niet door een firewall geblokkeerd wordt. Pas dan op de master het bestand /etc/munin/munin.conf aan:

# a simple host tree
[localhost]
address 127.0.0.1
use_node_name yes

[server2]
address 192.168.0.2
use_node_name yes

Waarbij server2 de naam is die je in Munin aan de betreffende node wilt geven, en 192.168.0.2 het IP-adres van die node.

Munin verwijderen

Ben je uiteindelijk niet tevreden over Munin, dan kun je het natuurlijk altijd weer verwijderen.

Ubuntu/Debian:

apt-get remove munin munin-node

CentOS/Fedora:

yum remove munin munin-node