Server Monitoring mit Munin auf Debian Lenny installieren und einrichten
Sobald der Server steht muss man ihn beobachten um mögliche Probleme früh zu erkennen. Server Monitoring mit Munin ist schnell und einfach installiert und bietet viele Möglichkeiten der Anpassung an die eigenen Bedürfnisse. Diese Anleitung beschreibt die Installation und Konfiguration von Munin auf Debian Lenny. Munin benutzt das RRDTool zum speichern der gesammelten Daten und teilt sich in Server und Client (Node) auf. In diesem Beispiel installiere ich den Client und Server auf dem gleichen Rechner. Das muss natürlich nicht so sein, aber der Einfachheit halber gehe ich davon aus das nur 1 Rechner zur Verfügung steht. Ein Server kann die Daten von mehreren Clients abfragen und gesammelt an einer Stelle zur Verfügung stellen. Das ermöglicht die effektive Überwachung auch von größeren Netzwerken.
Munin verwendet sogenannte Plugins um Daten des Clients regelmäßig (alle 5 Minuten) zu sammeln und zu speichern. Diese Daten werden dann vom Server abgerufen und in einigermaßen schöne Graphen umgewandelt, die man sich im Webbrowser ansehen kann. Plugins sind meist einfache Perl Scripte, was das hinzufügen von eigenen oder das anpassen vorhandener Munin Plugins sehr einfach macht. In der Standardinstallation sind schon eine recht große Anzahl von Plugins dabei. CPU, Speicher oder MySQL Überwachung ist damit zum Beispiel schon möglich. Wer nun sehen möchte was Munin kann, kann sich hier das Resultat einer Beispielinstallation angucken.
Munin Server
Die Installation des Munin Servers ist auf Debian gewohnt einfach.
$ aptitude install munin $ nano /etc/munin/munin.conf
Als zweites legen wir fest in welchen Verzeichnis Munin die Graphen ablegen soll. Ich benutze einen eigenen vhost dafür um eine saubere Trennung zu erreichen.
htmldir /var/www/vh-munin/htdocs/public
Der Ordner muss dem User munin und der Gruppe munin gehören.
$ chown munin:munin /var/www/vh-munin/htdocs/public
Das war es schon. Die anderen Einstellungen in der munin.conf sind für den Anfang uninteressant. Wer trotzdem mehr wissen will, kann sich hier informieren. Wenn der Server selbst auch mit Hilfe von Munin überwacht werden soll, dann muss hier der Node ebenfalls installiert werden. Das abrufen der Daten von den Clients passiert übrigens auch alle 5 Minuten.
Munin Client
Der Munin Client ist genauso einfach installiert.
$ aptitude install munin-node $ nano /etc/munin/munin-node.conf
In der Config muss dem Server noch erlaubt werden die Daten abzurufen. Standardmäßig ist die localhost IP Adresse eingetragen.
allow ^127\.0\.0\.1$ #die IP des Servers. Aufpassen auf die Slashes!
Damit die Änderung übernommen wird, starten man den node einmal neu.
$ /etc/init.d/munin-node restart
Munin Serverkonfiguration anpassen
Jetzt müssen wir dem Server nur noch sagen welchen Client er abfragen soll.
$ nano /etc/munin/munin.conf
[server2.example.com] address 127.0.0.1 use_node_name yes
Als erstes gibt man den Hostnamen in eckigen Klammern an. Hier kann man auch fiktive Namen benutzen oder Gruppen festlegen. Bei der Verwendung von fiktiven Hostnamen sollte man darauf achten, das der Client sich auch mit diesem Namen melden muss. Das kann man in der Node Config mit dem Befehl host_name erreichen.
Die address Zeile sollte klar sein. Hier kommt natürlich die Client IP rein und use_node_name stelle ich auf yes. Das Munin Manual sagt dazu:
You will almost never want to set this to anything, as setting it to "yes" tends to break things. If set to a true value ("yes", "y", "1"), Munin fetches all configured plugins associated with the given node, both plugins that report the nodes host_name and none at all.
Aus dem Text werde ich nicht ganz schlau. Sollte man es eigentlich nie setzen oder sollte man es nie auf etwas anderes als yes setzen? In allen Tutorials und Howtos die ich finden konnte wurde es immer mit angegeben und es stand immer auf yes, deshalb lasse ich es auch so. Meine Server/Clients funktionieren jedenfalls.
Nach dem gleichen Schema kann man nun weitere Clients hinzufügen.
$ /etc/init.d/munin-node restart
Das war es schon. Munin sollte nun alle 5 Minuten Daten sammeln und Graphen erstellen.
Zugriff auf das Monitoring beschränken
Da ich nicht jedem Zugriff auf mein Monitoring gewähren will, setze ich noch eine einfache htaccess Passwortabfrage davor.
$ nano /var/www/vh-munin/htdocs/public/.htaccess
AuthType Basic
AuthName "Members Only"
AuthUserFile /var/www/vh-munin/htdocs/.htpasswd
<limit GET PUT POST>
require valid-user
</limit>
$ htpasswd -c /var/www/vh-munin/htdocs/.htpasswd admin
Die Pfade können natürlich angepasst werden und der Name auch.
Munin Plugins
Was für Munin Plugins nach der Installation laufen, hängt vom Server ab. Wie man weitere Plugins installiert oder einige wieder los wird beschreibe ich jetzt.
Die zur Verfügung stehenden Plugins liegen bei Debian unter /usr/share/munin/plugins/ Dies werden um sie zu aktivieren per symlink nach /etc/munin/plugins/ gelinkt. Es gibt einige Plugins die mit einem _ enden. Das sind Wildcard Plugins und diese erwarten einen Namen hinter dem _ (beim linken) Welche Namen möglich sind gibt ein Plugin Aufruf mit dem Parameter suggest aus.
$ /usr/share/munin/plugins/if_ suggest
Mit munin-node-configure kann man sich recht einfach eine Übersicht über die möglichen Plugins machen.
$ munin-node-configure #zeigt die möglichen Plugins an $ munin-node-configure --suggest #zeigt alle Plugins mit den suggests an $ munin-node-configure --shell #zeigt alle cmds zum anlegen der Symlinks an
Einige Plugins kann man noch weiter konfigurieren. (z.B. den User unter dem sie ausgeführt werden sollen) Das macht man in /etc/munin/plugin-conf.d/munin-node. Nachdem man neue Plugins gelinkt und konfiguriert hat noch den Node neu starten.
$ /etc/init.d/munin-node restart
Debian hat auch noch ein Paket mit weiteres Plugins. Ob da etwas dabei ist was man brauchen könnte kann man hier nachlesen. Wenn ja installiert man es wie folgt.
$ aptitude install munin-plugins-extra
Wenn man immer noch nicht das hat was man will, kann man beim Munin Plugin Exchange vorbei gucken. Auf dieser Seite stellen viele Munin Benutzer eigene Plugins zur Verfügung. Die Seite ist etwas gewöhnungsbedürftig, aber wie ich schon erwähnt habe, ist da erstellen von Plugins sehr einfach. In einem späteren Artikel werde ich vielleicht ein paar eigene Plugins vorstellen.
Festplatten Überwachung mit Smart
Hier noch eine Anleitung wie man die Festplatten mir Smart überwachten kann. Das ganze ist auf Basis eines Hetzner Servers mit 2 SATA Platten.
$ aptitude install smartmontools $ ln -s /usr/share/munin/plugins/smart_ /etc/munin/plugins/smart_sda $ ln -s /usr/share/munin/plugins/smart_ /etc/munin/plugins/smart_sdb $ ln -s /usr/share/munin/plugins/hddtemp_smartctl /etc/munin/plugins/hddtemp_smartctl $ nano /etc/munin/plugin-conf.d/munin-node
[smart_*] user root group disk [smart_sda] env.smartargs -H -l error -d ata [smart_sdb] env.smartargs -H -l error -d ata [hddtemp_smartctl] user root env.drives sda sdb env.type_sda ata env.type_sdb ata
$ /etc/init.d/munin-node restart
Troubleshooting
Auf alle möglichen Fehler kann ich natürlich nicht eingehen, aber die die mich schon genervt haben möchte hier doch etwas näher beleuchten.
Für einen Client werden keine Graphen erstellt
Hier waren bei mir die schon angesprochenen fiktiven Hostnamen schuld. Seltsamer weise funktioniert es manchmal ohne die Angabe des Hostnames in der config und auf dem nächsten Client funktioniert es nicht...
Das Munin FAQ war hier aber sehr hilfreich:
If a configured host does not appear or has no graphs at all it is likely because the server and the node have inconsistent name information for the node. Munin wants the host names to match between its configuration and what the munin-node calls itself.
Wie dort angegeben kann man das ganze per Telnet testen. Kurz gesagt sollte man einfach darauf achten das der Node den gleichen Namen verwendet wie der Server zum abrufen der Daten und schon hat man keine Probleme.
Das war bisher das einzige was nicht auf Anhieb funktioniert hat. Wenn es doch mal Probleme geben sollte, hilft vielleicht ein Blick in die Logfiles. Diese findet man unter /var/log/munin/
Abschluss und Ausblick
Munin kann darüber hinaus noch viel mehr. So kann man sich zum Beispiel beim erreichen von bestimmten Werten ( Festplattenkapazität bei 95%) informieren lassen. Außerdem kann man Munin auch mit Nagios kommunizieren lassen, dazu aber ein anderes mal.
Zum Abschluss noch ein paar bunte Bilder.
15 Kommentare
Dani
schrieb am 11.10.2009 um 23:55 Uhr
Vielen Dank für die Anleitung. Auf einem nackten Server funktioniert es problemlos.
Ich habe jetzt ISPconfig installiert und ich erhalte folgenden fehler:
p: accessing `/var/www/clients/client1/web1/web/munin/’: Permission denied
cp: accessing `/var/www/clients/client1/web1/web/munin/’: Permission denied
cp: accessing `/var/www/clients/client1/web1/web/munin/’: Permission denied
Cannot mkdir /var/www/clients/client1/web1/web/munin/meinserver.com: Permission denied at /usr/share/munin/munin-html line 184.
chown munin:munin /var/www/clients/client1/web1/web/munin wurde gemacht.
Dani
schrieb am 12.10.2009 um 00:12 Uhr
meine Lösung: ordner “web” auf chmod 755
kostaki
schrieb am 12.10.2009 um 12:59 Uhr
Stimmt. Der Munin User braucht natürlich auch auf die vorgelagerten Ordner Lese Rechte. Da es Verzeichnisse sind braucht er auch noch Ausführungsrechte auf die Ordner.
Also ist 755 auf den Ordner web genau richtig.
Viktor
schrieb am 20.12.2009 um 23:29 Uhr
ich habe das Problem das sich der Traffic nicht anzeigen lässt. Alles anderen geht wunderbar
Habt ihr eine Idee woran es liegen kann ?
Stan
schrieb am 21.12.2009 um 09:29 Uhr
Hm da meinst du bestimmt das Plugin if_ oder?
hast du mal geguckt was er für Geräte anbietet?
/usr/share/munin/plugins/if_ suggest
Ansonsten mal ins munin-node.log schauen ob es vielleicht einen Fehler gibt.
vi /var/log/munin/munin-node.log
kostaki
schrieb am 21.12.2009 um 16:16 Uhr
das was Stan gesagt hat
Viktor
schrieb am 26.03.2010 um 09:48 Uhr
Das zeigt er mir an
eth0
eth1
venet0
kostaki
schrieb am 26.03.2010 um 11:55 Uhr
Sind die den gelinkt?
ln -s /usr/share/munin/plugins/if_ /etc/munin/plugins/if_eth0
ln -s /usr/share/munin/plugins/if_ /etc/munin/plugins/if_eth1
ln -s /usr/share/munin/plugins/if_ /etc/munin/plugins/if_venet0
Damit sollten sie von Munin überwacht werden. Du kannst dir auch mal aus Ausgabe von munin-node-configure angucken.
munin-node-configure –shell
rene
schrieb am 22.06.2010 um 21:45 Uhr
Hallo,
Erst mal sehr gute Anleitung !!!
Leider hab ich da noch 2 Probleme,
1. Die Informationen vom server selbst werden nicht angezeigt. Die von den hosts schon. Hab auch den munin-node installiert. (Debian lenny)
2. Das mit den htaccess geht nicht. Die Seite geht auf ohne Abfrage… hab sie im VZ /var/www/munin/ liegen.
Es wäre echt super wenn da jemand nen Lösungsansatz für hätte.
Danke
mfg Rene
kostaki
schrieb am 23.06.2010 um 08:11 Uhr
zu 1. Hast du dem Server den einen eigenen Block in der munin.conf spendiert? Das zum Beispiel:
Ansonsten schau doch mal in die Munin Logfiles (/var/log/munin/). Ansonsten kannst du noch versuchen ob du dich per Telnet auf den Munin Node einloggen kannst.
zu 2. Nochmal prüfen ob der Pfad zu der htpasswd in der htaccess stimmt und ob der Webserver die Dateien auch lesen kann. Auch hier kann sich ein Blick in die Webserver Logfiles lohnen.
rene
schrieb am 23.06.2010 um 10:25 Uhr
Hmm
Da werd ich heute abend glatt mal nachschauen.
bei meinem glück ist es ein Schreibfehler. Baer danke schon mal für die Hilfe.
Wenn ich die KLösung gefunden hab schreib ich es.
rene
schrieb am 23.06.2010 um 19:25 Uhr
Hallo nochmal
also in der munin.conf hab ich einen Block eingetragen
[service1.XXXXXXXXXX.de]
address 127.0.0.1
use_node_name yes
in der Node config hab ich auch
host_name service1.xxxxxxx.de gesetzt
mit allow ^127\.0\.0\.1
im Log zeigt er mir auch an das er ne Verbindung afugebaut hat und sie wieder closed
connection from xxxxxxx.de -> service1.xxxxxx.de (16949)
Jun 23 18:20:01 [16947] – connection from xxxxxxx.de -> service1.xxxxxxxx.de (16949) closed
CONNECT TCP Peer: “127.0.0.1:42980″ Local: “127.0.0.1:4949″
2010/06/23-18:25:01 CONNECT TCP Peer: “127.0.0.1:45204″ Local: “127.0.0.1:4949″
Ich hab ich nen gedanken fehler..
kostaki
schrieb am 25.06.2010 um 08:41 Uhr
Hm wie sieht es denn auf der Munin Seite aus? Steht dort der Server, aber komplett ohne Daten? Nach den Settings die du gepostet hast sieht eigentlich alles gut aus. Haste schon mal probiert per Telnet drauf zu connecten? Wenn ja wird dort der richtige Servername zurück gegeben?
Guido L.
schrieb am 04.08.2011 um 00:05 Uhr
Hallo liebe User,
wer hat es schon mal geschaft Munin aufzusetzen ? Bitte dringend melden, brauche diesen für mein Homeserver und wenn es geht ein Überwachung, die eine mail versendet, wenn der Server überlastet ist, bitte bei mir melden, ich würde mich freuen.
Gruss euer Guido
Guido L.
schrieb am 04.08.2011 um 00:06 Uhr
Kontakt per icq: 318341049 oder msn: support@xtreme-servers.de ^^ Gruss Guido