Heute mal ein kleines Tutorial für Serverbesitzer. Mein favorisiertes Serverbetriebssystem ist seit einiger Zeit Debian. Die Einrichtung eines typischen LAMP-Server (Linux, Apache, MySQL, PHP) gestaltet sich dabei recht bequem – gewisse Linuxgrundkenntnisse natürlich vorausgesetzt. Eines der wichtigen Elemente beim Betrieb eines Server ist es die Performance-Daten im Blick zu behalten um rechtzeitig durch Tuningmaßnahmen oder Hardwareerweiterungen eingreifen zu können.
Es gibt einige Tools dafür: MRTG, Cacti, HoTsAnIc und auch Munin. Ich habe mich für die Überwachung der wichtigsten Eckdaten via Munin entschlossen, da mir die Einrichtung von Cacti einfach zu komplex und kompliziert war. Bei Munin verläuft die Installation und Einrichtung unter Debian kinderleicht und ist in wenigen Minuten fertig. Ein Vorteil von Munin ist außerdem, dass die Statistiken mehrerer Server an einem Platz gesammelt und dargestellt werden können.
Ich erkläre hier in Kurzform die Installation eines Master-Servers und eines Clients inklusive der Basiskonfiguration um die Daten des Clients auf dem Server darzustellen.
1. Installation und Konfiguration der Pakete auf dem Master-Server
sudo apt-get install munin munin-node
Munin stellt das Hauptpaket dar, dass sich unter anderem darum kümmert die HTML-Seiten und Graphen zu erstellen. Munin-Node ist der Agent, der die Daten abfrägt. Durch die Installation werden automatisch auch die zugehörigen Cronjobs eingerichtet. Alles was zur Erfassung der lokalen Performancedaten nun noch geschehen muss, ist die Einstellung des Verzeichnisses, in das die html-Dateien und Graphen abgelegt werden sollen:
sudo vim /etc/munin/munin.conf
Hinweis: „sudo“ ist in einer Standard-Debian-Installation nicht nötig. Es dient auf meinen Servern lediglich der erhöhten Sicherheit. Infos dazu – wie so oft – bei der Wikipedia.
# 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
Der Wert hinter htmldir muss entsprechend den eigenen Wünschen angepasst werden. Das speichern der Datei reicht aus um nach spätestens 5 Minuten (Standard-Zeitspanne des installierten Cronjobs) das Ergebnis im entsprechenden Verzeichnis zu sehen (richtige Rechtevergabe vorausgesetzt).
2. Installation eines Munin-Clients auf einem anderen Server
Hier läuft das ganze ähnlich ab, wir benötigen aber nur das munin-node Paket.
sudo apt-get install munin-node
Danach muss in der Datei /etc/munin/munin-node.conf die IP-Adresse des anderen Servers für den Zugriff freigeschalten werden:
sudo vim /etc/munin/munin-node.conf
# A list of addresses that are allowed to connect. This must be a
# regular expression, due to brain damage in Net::Server, which
# doesn't understand CIDR-style network notation. You may repeat
# the allow line as many times as you'd like
allow ^127\.0\.0\.1$
Hier einfach die letzte Zeile kopieren und die eigene IP-Adresse entsprechend eintragen. Wichtig ist, dass die Escape-Zeichen entsprechend beinhaltet sind, damit die IP-Adresse für Munin lesbar bleibt.
Der Munin-Node-Agent muss nach den Änderung neu gestartet werden:
sudo /etc/init.d/munin-node restart
Zum Schluß müssen wir jetzt noch den neuen Client auf dem Master-Server eintragen, damit der weiß, dass er die Daten von dort abfragen soll:
sudo vim /etc/munin/munin.conf
# a simple host tree
[srv01.meinserver.tu]
address 127.0.0.1
use_node_name yes
[srv02.meinserver.tu]
address 123.123.123.123
use_node_name yes
Der erste Eintrag ist normalerweise mit localhost.localdomain beschriftet, und kann nach Wunsch hier entsprechend angepasst werden. Für den zweiten Eintrag kopieren wir einfach den ersten und ändern Name und IP-Adresse.
Das war’s. Wenn alle Rechte stimmen und Ports verfügbar sind, wird bei jedem Cron-Run (Standard: 5-Minuten-Takt) auch der zweite Server abgefragt. Diese Abfrage passiert bei den Standardeinstellungen via Port 4949. Über einen Test von Master zu Client kann also schnell getestet werden ob der Zugriff verfügbar ist:
srv01:/$ telnet srv02.meinserver.de 4949
Trying 123.123.123.123...
Connected to srv02.meinserver.de.
Escape character is '^]'.
# munin node at srv02.meinserver.de
Über einige eingebaute Befehle können direkt zum Test ein paar Werte abgegriffen werden. Die Befehle lauten: list, nodes, config, fetch, version und quit..
Das war’s mit einer Grundkonfiguration zur grafischen Auswertung von Performancedaten. Erfasst werden in der Default-Installation schon jede Menge Daten: Netzwerktraffic, Load, CPU, Memory, MySQL Queries, etc. pp.
Wenn jemand sich die Mühe macht und eine erweiterte Konfiguration bastelt die noch mehr Daten erfasst, würde ich mich über einen Hinweis in den Kommentaren freuen. Ich werde dann später gerne nochmal eine Fortsetzung schreiben und auf entsprechende weiterführende Tutorials verweisen.
Weitere Infos, Dokumentationen und Tutorials zu Munin gibt’s auf der Homepage unter http://munin-monitoring.org/
danke für den Artikel, ich habe schon einige Monitoringtools getestet, aber keines funktionierte bisher so problemlos.
Innerhalb von 5 Minuten läuft und arbeitet munin auf meinem vserver.
Erstmal vielen Dank für das Tutorial! Bis jetzt habe ich nur MRTG im Einsatz gesehen was schon sehr beeindrucken ist. Hast du vielleicht einen Screenshot von den HTML Ausgabe (Graphen) die Munin erstellt?
Man sollte noch dazu schreiben das die Statistik dann unter folgender Adresse zu finden ist:
http://SERVERIP/munin/
@Foppens: Das hängt natürlich von der Konfiguration des Webservers ab, daher hab ich’s nicht dazu geschrieben – die Statistiken sind natürlich so zu erreichen, wie man’s in der Config eingerichtet hat.
Ich habe Munin gerade mal installiert. Im Moment ist auf den Grafiken noch nichts zu sehen. Wie lange dauer das in etwa?
Danke für das gute Tutorial! Hat mir sehr viel gebracht!