Serverüberwachung mit munin und monit unter Debian Squeeze
Version 1.0
Author: Falko Timme <ft [at] falkotimme [dot] com>, Christian Schmalfeld <c [dot] schmalfeld [at] projektfarm [dot] de>
In diesem Tutorial zeige ich Ihnen, wie Sie Ihren Debian Squeeze Server mit munin und monit überwachen. Munin erstellt ohne große Konfiguration hübsche Grafiken zu beinahe jedem Aspekt Ihres Servers (durchschnittliche Auslastung, Speicherverbrauch, CPU Auslastung, MySQL Datendurchlauf, eth0 Traffic, etc.), während monit die Verfügbarkeit von Diensten wie Apache, MySQL und Postfix anzeigt und die entsprechenden Operationen durchführt, sollte ein Dienst nicht laufen wie geplant, wie z.B. einen Neustart. Die Kombination der beiden gewährt Ihnen komplette Überwachung: mit Hilfe der Grafiken können Sie zukünftige oder aktuelle Probleme erkennen und mit monit sind Ihre überwachten Dienste immer verfügbar.
Obwohl munin auch mehr als einen Server überwachen kann, werde ich an dieser Stelle nur das Überwachen des Servers beschreiben, auf dem es installiert ist.
Dieses Tutorial wurde für Debian Squeeze geschrieben, müsste allerdings, möglicherweise mit kleinen Änderungen, genauso auf anderen Distributionen funktionieren.
Die hier beschriebene Weise, das System aufzusetzen, ist nicht die einzig mögliche. Es ist lediglich die Art und Weise, die ich bevorzuge. Für die Richtigkeit der Inhalte dieses Tutorials gebe ich keinerlei Garantie.
1 Vorbemerkung
Ich benutze den Hostnamen server1.example.com mit die Webseite www.example.com, deren Stammverzeichnis /var/www/www.example.com/web ist.
2 Installation und Konfiguration von munin
Tun Sie folgendes um munin unter Debian Squeeze zu installieren:
apt-get install munin munin-node munin-plugins-extra
Als nächstes müssen Sie die munin Konfigurationsdatei /etc/munin/munin.conf editieren. Entkommentieren Sie die dbdir, htmldir, logdir, rundir und tmpldir Zeilen (die Standardwerte sind in Ordnung). Munin soll in der HTML Ausgabe den Namen server1.example.com statt localhost.localdomain anzeigen, deshalb ersetzen Sie in der simple host tree Sektion localhost.localdomain durch server1.example.com. Ohne die Kommentare sieht die geänderte Datei folgendermaßen aus:
vi /etc/munin/munin.conf
# 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/cache/munin/www logdir /var/log/munin rundir /var/run/munin # # 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 [...] # a simple host tree [server1.example.com] address 127.0.0.1 use_node_name yes [...] |
Sie sollten die Apache Konfigurationsdatei für Munin, /etc/apache2/conf.d/munin, ändern (dies ist eigentlich nur ein Symlink zu /etc/munin/apache.conf) – sie definiert ein Alias namens munin zu munins HTML Ausgabeverzeichnis /var/cache/munin/www, was bedeutet, dass Sie munin von allen Webseiten dieses Servers mit dem relativen Pfad /munin (z.B. http://www.example.com/munin) aufrufen können.
Kommentieren Sie die Zeile Allow from localhost 127.0.0.0/8 ::1 aus und benutzen Sie statt dessen Allow from all (andernfalls können Sie munin nur über localhost benutzen):
vi /etc/apache2/conf.d/munin
Alias /munin /var/cache/munin/www <Directory /var/cache/munin/www> Order allow,deny Allow from all #Allow from localhost 127.0.0.0/8 ::1 Options None # 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/cache/munin/www) must have "AllowOverride all" or something # close to that set. # # AuthUserFile /etc/munin/munin-htpasswd # AuthName "Munin" # AuthType Basic # require valid-user # This next part requires mod_expires to be enabled. # # Set the default expiration time for files to 5 minutes 10 seconds from # their creation (modification) time. There are probably new files by # that time. # <IfModule mod_expires.c> ExpiresActive On ExpiresDefault M310 </IfModule> </Directory> |
Starten Sie Apache neu:
/etc/init.d/apache2 restart
Starten Sie dann munin neu:
/etc/init.d/munin-node restart
Warten Sie nun einpaar Minuten damit munin seine erste Ausgabe erstellen kann und gehen Sie dann mit Ihrem Browser auf http://www.example.com/munin/, wo Sie die ersten Statistiken vorfinden sollten. Nach einpaar Tagen könnte es folgendermaßen aussehen:
(Dies ist nur ein kleiner Ausschnitt der vielen Grafiken, die munin erstellt…)
3 Das munin Ausgabeverzeichnis durch ein Passwort schützen (optional)
Wenn Sie nicht möchten, dass jeder Dahergelaufene die Statistiken Ihres Servers einsehen kann, wäre es gut das Ausgabeverzeichnis durch ein Passwort zu sichern.
Erstellen Sie hierzu die Passwortdatei /etc/munin/munin-htpasswd. Ich möchte mich mit dem Benutzernamen admin anmelden, deshalb benutze ich:
htpasswd -c /etc/munin/munin-htpasswd admin
Geben Sie ein Passwort für admin ein. Öffnen Sie dann erneut /etc/apache2/conf.d/munin…
vi /etc/apache2/conf.d/munin
… und entkommentieren Sie die folgende Sektion:
[...] AuthUserFile /etc/munin/munin-htpasswd AuthName "Munin" AuthType Basic require valid-user [...] |
Starten Sie Apache dann neu:
/etc/init.d/apache2 restart