Start GNU/Linux Webbasierte Serverüberwachung mit Munin

Webbasierte Serverüberwachung mit Munin

2904
3

Munin ist eine umfassende und sehr einfach zu bedienende Rechner-Überwachungssoftware. Verschiedene Informationen wie die Prozessorauslastung, Festplattenbelegungen oder auch Zugriffe auf Serverdienste eines oder mehrerer Rechner werden permanent gesammelt und können über eine Weboberfläche betrachtet werden…

Munin selber ist als Master/Client-Anwendung aufgebaut. Der Master-Rechner kann den „Munin-Node“ auf weiteren Rechnern im Netzwerk abfragen und so diese Informationen mit anzeigen. Munin eignet sich daher für die Überwachung eines einzigen Rechners wie auch für die Überwachung eines ganzen Rechnerparks. Ein Beispiel einer Munin-Installation zur Überwachung eines ganzen Rechnerfuhrparks findet man hier.

Serverüberwachung mittels Munin. Munin kann so gut wie alles protokollieren. Über einen Webbrowser lassen sich die Daten auch von entfernten Rechner betrachten. Wer über mehrere Server verfügt, kann die Daten auf einem zentralen Rechner sammeln.
Serverüberwachung mittels Munin. Munin kann so gut wie alles protokollieren. Über einen Webbrowser lassen sich die Daten auch von entfernten Rechner betrachten. Wer über mehrere Server verfügt, kann die Daten auf einem zentralen Rechner sammeln.

Munin kann bei allen gängigen Linux Distributionen aus den Paketquellen installiert werden. Dazu müssen je nach Bedarf die Pakete munin und munin-node installiert sein. Je nach Einsatz sollte nur eines der beiden Pakete installiert werden. munin-node sammelt nur die Daten, die dann von munin abgerufen und über einen Webserver dargestellt werden.

Bei der Installation von Munin ist zu beachten, dass ein Webserver auf dem Rechner bereits eingerichtet sein sollte, damit die Informationen auch abgerufen werden können. Informationen hierzu findet man in den Dokumentationen der genutzten Linux-Distribution. Für Ubuntu findet man im Wiki von ubuntuusers.de die benötigten Infos.

Anschließend kann man Munin sofort über die URL http://serverip/munin erreichen. Wie alle anderen Dienste bringt Munin Start/Stop-Skripte mit. Diese Skripte lassen sich natürlich auch zum Kontrollieren des Dienstes gebrauchen.

$ sudo /etc/init.d/munin-node {start|stop|restart|force-reload|try-restart}
  • start — Startet den Dienst.
  • stop – Stoppt den Dienst.
  • restart — Startet den Dienst neu, bestehende Verbindungen auf den Server werden gekappt.
  • force-reload -- Lädt die Konfigurationsdateien neu und beendet laufende Verbindungen.
  • try-restart — Startet den Dienst nur neu, wenn er vorher nicht beendet wurde.

Munin und Munin-Node können nun getrennt voneinander eingerichtet werden. Die Konfiguration erfolgt jeweils über eine Textdatei, die mit einem beliebigen Texteditor sowie Root-Rechten bearbeitet werden kann. Zuerst wie die Konfiguration von Munin selber beschrieben.

Munin

Munin ruft die Informationen der einzelnen Nodes ab und stellt die gewonnen Informationen über einen Webserver dar. Die Konfiguration erfolgt über die Datei /etc/munin/munin.conf. In der Standardeinstellung wird nur der „localhost“, also der eigene Rechner von munin abgefragt.

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

Hier kann man jedoch problemlos weiter Munin-Nodes hinzufügen. Also beispielsweise einfach

[webserver.beispiel]
    address 192.168.0.10
[sqlserver.beispiel]
    address 192.168.0.11

in die Konfigurationsdatei einfügen.

Munin kann beim Überschreiten festgelegter Werte automatisch Warnungen verschicken. So wird man als Administrator rechtzeitig gewarnt, wenn beispielsweise Festplatten überlaufen zu drohen. Dazu muss in der munin.conf erst einmal der Empfänger mittels den Zeilen…

# Drop somejuser@fnord.comm and anotheruser@blibb.comm an email everytime
# something changes (OK -> WARNING, CRITICAL -> OK, etc)
contacts me
contact.me.command mail -s "Munin notification ${var:host}" email@foo.bar
contact.me.always_send warning critica

installiert und konfiguriert ist. Anschließend kann man die kritischen Werte definieren, bei denen die Warnung abgeschickt werden soll. Dies geschieht bei jedem einzelnen Host in der Art

[localhost.localdomain]
    address 127.0.0.1
    use_node_name yes
    <plugin>.<feldname>.{critical,warning} <wert>

Hierbei sind für die Platzhalter zu ersetzen:

  • plugin – Den Namen des Plugins bekommt man am einfachsten über die URL des Graphen. Am Ende der URL findet man den Namen wie z.B. beim Plugin zur Festplattenbelegung …/localhost.localdomain-df.html. Das „df“ wäre in diesem der Pluginname.
  • feldname – Die Feldnamen erfährt man wiederum, wenn man sich einen Graphen im Detail ansieht. Auf diesen Seiten sind am Ende die Feldnamen unter der Bezeichnung „Internal name“ aufgeführt.
  • critical,warning – Diese beiden Optionen sind frei wählbar und bestimmt ob eine „Warnung“ oder eine „Kritische Warnmeldung“ verschickt wird.
  • wert – Dieser Wert ist frei wählbar und sollte entsprechend dem Wert gesetzt werden, ab wann die Warnung verschickt werden soll.

Letztendlich sieht dann ein Eintrag beispielsweise so aus:

[localhost.localdomain]
    address 127.0.0.1
    use_node_name yes
    df._dev_evms_hda2.warning 70
    df._dev_evms_hda2.critical 95
    df._dev_mapper_hda5.warning 70
    df._dev_mapper_hda5.critical 70

Munin-Node

Der Munin-Node sammelt Daten über das System. In der Konfigurationsdatei /etc/munin/munin-node.conf gibt es wiederum auch nicht allzu viel einzustellen. Die wichtigste Option ist sicherlich die Möglichkeit, dass der Node von einem anderen Munin-Client abgefragt wird. Die Standardeinstellung limitiert die Abfrage auf den „localhost“, weitere Nodes müssen so wie beispielsweise hier…

# 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$
allow ^192..168.0.5$

…hinzugefügt werden. Von Haus aus sind zahlreiche Plugins aktiviert. Im Verzeichnis /usr/share/munin/plugins findet man nach weitere Module, die man bei Bedarf hinzufügen kann. Prinzipiell geschieht dies durch das Setzen eines Links in das Verzeichnis /etc/munin/plugins/. Alle Plugins, die dort verlinkt sind, werden von Munin-Node beachtet. Es gibt zwei spezielle Arten von Plugins. „Autoconf“ und „Wildcard“-Plugins. Die meisten Plugins konfigurieren sich selber. Über den Befehl…

$ ./<plugin> autoconf

…kann man überprüfen, ob das Modul die Funktion autoconf beherrscht, also nicht konfiguriert werden muss. Ist die Antwort yes, so kann man das Modul ohne weitere Probleme aktivieren. Dazu später mehr. Wildcard Plugins erkennt man daran, dass sie einen Unterstrich „_“ am Ende des Dateinames wie if_ oder sensors_ tragen. Diese Plugins können mehrere Geräte überwachen und benutzen die Angabe nach dem Unterstrich als Variable. Über die Option suggest bekommt man Informationen zu den Möglichkeiten:

$ ./<plugin>_ suggest

Bevor man ein Plugin aktiviert, sollte man es kurz testen. Dazu gibt es das Kommando munin-run. Dieses führt das Plugin aus und zeig die Ergebnisse in einem Terminal an.

$ munin-run <plugin>
_dev_evms_hda2.value 50
varrun_var_run.value 1
varlock_var_lock.value 1
procbususb.value 1
udev_dev.value 1
devshm_dev_shm.value 0
lrm_lib_modules_2_6_20_16_generic_volatile.value 11
_dev_mapper_hda1.value 57
_dev_mapper_hda5.value 78

So kann man frühzeitig erkennen, ob das Plugin funktioniert und ob Daten ausgegeben werden. Wie schon gesagt müssen die Plugins aus /usr/share/munin/plugins nur in /etc/munin/plugins/ verlinkt sein, um aktiviert zu werden. Dies geschieht bei einem normalen Plugin in einem Terminal mittels des Befehls…

$ sudo ln -s /usr/share/munin/plugins/ /etc/munin/plugins/

Bei einem Wildcard-Plugin muss man noch die zu übermittelnde Option hinzufügen…

$ sudo ln -s /usr/share/munin/plugins/_ /etc/munin/plugins/_

Nachdem man ein Plugin aktiviert hat, muss man den Munin-Node neu starten, damit das Plugin auch berücksichtigt wird.

Beispiele

Beispiel 1

Munin kann die Daten, die die Programme Lm sensors sowie hddtemp liefern, einbinden. Sind die Programme bei der Installation von Munin-Node bereits installiert, so wird dies meist erkannt und das Plugin aktiviert. Möchte man dies nachholen, so müssen die entsprechenden Programme installiert und dann die Plugins mittels der folgenden Befehle aktivieren werden.

$ sudo ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_fan
$ sudo ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_volt
$ sudo ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_temp

Beispiel 2

In den Standardeinstellungen werden nur die Netzwerkschnittstellen „eth0“ und „eth1“ abgefragt. Besitzt der Rechner eine Anbindung über WLAN oder nutzt eine Einwahlleitung, so kann man diese überwachen lassen.

$ sudo ln -s /usr/share/munin/plugins/if_ /etc/munin/plugins/if_
$ sudo ln -s /usr/share/munin/plugins/if_err_ /etc/munin/plugins/if_err_

Beispiel 3

Auch verschiedene Serverdienste lassen sich abfragen. So z.B. auch der Webserver Apache. Dieser muss jedoch noch so konfiguriert werden, dass er Informationen über seinen Zustand bereitstellt. Dies geschieht in der Konfigurationsdatei /etc/apache/apache2.conf. Hier müssen die Kommentare beim Modul mod_status entfernt und noch ExtendedStatus On eingetragen werden, so dass der Abschnitt am Ende so aussieht:

<IfModule mod_status.c>
    #
    # Allow server status reports generated by mod_status,
    # with the URL of http://servername/server-status
    # Change the ".example.com" to match your domain to enable.
    #
    ExtendedStatus On
    <Location /server-status>
        SetHandler server-status
        Order deny,allow
        Deny from all
        Allow from 127.0.01
    </Location>
</IfModule>

Damit die Änderung aktiv wird muss Apache neu gestartet werden. Nun kann man die Munin-Plugins für Apache aktivieren und Munin zeigt die Zugriffszahlen des Apache Servers an.

$ sudo ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/
$ sudo ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/
$ sudo ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/

3 Kommentare

  1. Hallo,

    netter Artikel.

    Munin ist schon ein recht cooles Monitoring Tool.

    Vielleicht magst du dir ja mal Cacti (www.cacti.net), Zabbix (www.zabbix.com), Zenoss (www.zenoss.com) oder Bloonix (www.bloonix.net) anschauen und darüber mal einen Artikel schreiben. 🙂

    VG
    Sascha

    • Cacti ist leider recht aufwändig zu konfigurieren, darüber könnte man ein Buch schreiben 😉 Die anderen Tools habe ich bislang noch nicht genutzt… mal sehen, wenn sich ein Projekt ergibt, wo ich so ein Werkzeug einsetzen kann, dann wird auch drüber gebloggt 🙂

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein