Munin ist ein nettes Tool, um einzelne oder mehrere Linux-Server bequem zu überwachen und deren Leistungsdaten zu visualisieren. Dabei werden alle relevanten Daten wie RAM-Verbrauch oder CPU-Last als übersichtliche Grafiken dargestellt.
Eine Munin-Installation besteht aus zwei Komponenten. Die eine Komponente ist der “Master”-Server, der alle von den zu überwachenden Servern gesammelten Daten zusammenträgt und visualisiert. Die andere Komponente wird als “Munin-Node” bezeichnet. Ein Node ist ein Server, der von dem Munin-Master überwacht werden soll. Dazu werden von jedem Node die Leistungsdaten so aufbereitet, dass der Master diese Daten “abholen” und verarbeiten kann.
0. Einleitung
Jedes Munin-System braucht einen Master-Server, der die Munin-Nodes kontaktiert und alle dort gesammelten Daten zusammenträgt und visualisiert. Dabei kann ein Server zugleich Master und Node sein, wenn man beispielsweise nur einen Server überwachen will oder der überwachende Server ebenfalls überwacht werden soll. Zur Visualisierung erstellt der Munin Master-Server HTML-Seiten, welche die Grafiken mit den Leistungsdaten enthalten. Aus diesem Grund muss auf dem Master-Server auch ein Webserver installiert werden. Ich empfehle wie üblich den nginx-Webserver.
Die Zahl der Nodes, die durch einen Master abgefragt werden können, ist nicht begrenzt. Abgesehen von Munin selbst ist auf den Nodes auch keine weitere Software erforderlich, weshalb die Überwachung mit Munin recht ressourcenschonend ist. Allein auf dem Master-Server entsteht eine gewisse Last, da die Grafiken generiert und durch den Webserver ausgeliefert werden müssen. Bei einer überschaubaren Zahl von überwachten Nodes hält sich die Serverlast allerdings sehr in Grenzen, zumal die durch Munin erstellten Websites vollkommen statisch sind und keine zusätzliche Skript-Sprache wie PHP benötigen.
Im folgenden Szenario setzen wir ein Munin-Cluster mit einem Master und einem Nodes auf. Der Master soll dabei selbst auch ein Node sein, um die Leistungsdaten des Masters visualisieren zu können. Auf beiden Servern ist eine Minimalinstallation von Debian Squeeze installiert. Bei anderen Linux-Distributionen dürfte die Vorgehensweise ähnlich sein, aber bitte u.A. auf die Pfade der Konfigurationsdateien und das Paketmanagement achten.
1. Munin Master-Server installieren
Unter Debian und dessen Derivate befindet sich Munin in Form der Pakete munin und munin-node im Paket-Repository. Munin lässt sich über Plugins erweitern, sodass noch weitere Dienste überwacht werden können. Einige Plugins sind im Paket munin-plugins-extra enthalten. Auf die Installation eines Webservers wird an dieser Stelle nicht weiter eingegangen, da habe ich zum Beispiel hier schon etwas darüber geschrieben.
Im ersten Schritt sollte in der Konfiguration des Webservers ein neuer vHost für den Speicherort der Munin-Ausgaben angelegt werden. Anschließend muss der DocumentRoot dieses vHosts mit chown munin:munin dem Munin-Benutzer zugeteilt, sonst kann Munin die Report-Websites mangels Schreibrechten nicht abspeichern. Auch sollte der DocumentRoot mit einem Passwort geschützt werden, sonst kann jeder, der den Webroot von Munin kennt, sämtliche Server-Statistiken einsehen. Ganz praktisch für Angreifer, können diese doch direkt nachprüfen, ob z.B. der Arbeitsspeicher dank einer Flooding-Attacke langsam aber sicher überläuft.
Anschließend geht es an die Grundlegende Konfiguration des Munin-Masters. Die Konfiguration wird in der Datei /etc/munin/munin.conf gespeichert. Dort passen wir zunächst den Parameter htmldir an den DocumentRoot des Munin-vHosts an. Jetzt können wir uns testweise einmal als Benutzer munin anmelden und mit folgendem Befehl den Munin-Cronjob starten: /usr/bin/munin-cron. Jetzt sollte eine Übersichtsseite von Munin erscheinen, wenn man im Webbrowser den für Munin konfigurierten DocumentRoot aufruft.
Dann wird in der munin.conf der Block “a simple host tree” durch ein “#” an den Beginn jeder Zeile auskommentiert, denn wir wollen für jeden Munin-Node eine eigene Konfigurationsdatei anlegen. Dies erhöht meiner Meinung nach die Übersichtlichkeit, gerade wenn mehrere Munin-Nodes überwacht werden sollen.
Nun legen wir für den Munin-Master eine neue Konfigurationsdatei im Verzeichnis /etc/munin/munin.conf.d/ an. Den Namen der Konfigurationsdatei kann man frei wählen, allerdings empfehle ich, dort den Hostnamen des Servers zu nehmen.
Die Konfigurationsdatei wird nach folgendem Muster aufgebaut:
[Hostname.Domainname]
address 127.0.0.1
use_node_name yes
Für den Master-Server können wir die IP-Adresse 127.0.0.1 beibehalten. Mithilfe des Domainnamen lassen sich die überwachten Server in Gruppen einteilen, denn alle Munin-Nodes mit dem gleichen Domainnamen werden in der Munin-Übersicht gruppiert dargestellt.
2. Munin-Node installieren und zum Munin-Master hinzufügen
Die Installation eines Munin-Nodes geht wesentlich einfacher vonstatten. Zuerst muss das Paket munin-node installiert werden. Damit der Munin-Master mit dem Munin-Node kommunizieren kann, muss man in der Konfigurationsdatei des Nodes – zu finden unter /etc/munin/munin-node.conf – die IP-Addresse des Munin-Masters hinzufügen. Dazu ergänzen wir die Konfigurationsdatei um die Zeile allow xx.xx.xx.xx, wobei xx.xx.xx.xx für die IP-Adresse des Munin-Masters steht. Abschließend muss der Munin-Node neu gestartet werden.
Damit der Munin-Master den Node auch kontaktiert, um die Leistungsdaten einzusammeln, müssen wir für den Node eine neue Konfigurationsdatei im Verzeichnis /etc/munin/munin.conf.d anlegen. Auch hier kann wieder der Name für die Datei frei gewählt werden. Die Konfigurationsdatei wird nach folgendem Muster aufgebaut:
[Hostname.Domainname]
address xx.xx.xx.xx
use_node_name yes
Hier muss xx.xx.xx.xx an die IP-Adresse des Munin-Nodes angepasst werden.
Auf diese Weise können beliebig viele Munin-Nodes hinzugefügt werden.
3. Optional: Zusätzliche Plugins aktivieren
Standardmäßig überwacht Munin die Festplatte, den Munin-Prozess selbst, das Netzwerk, alle Prozesse, Sendmail sowie einige Systemparameter wie RAM- oder CPU-Auslastung. Im Verzeichnis /usr/share/munin/plugins befinden sich noch viele weitere Plugins, mit denen z.B. auch die Auslastung des MySQL-Servers visualisiert werden kann. Um ein Plugin zu aktivieren, genügt es, einen Symlink zum Verzeichnis /etc/munin/plugins zu setzen und den Munin-Node anschließend neuzustarten.
Fragen, Anregungen, Anmerkungen sind wie immer gerne gesehen!
0 Kommentare.