# Munin (Software)

Die freie Software Munin ist ein Werkzeug zur Überwachung von Rechnern in einem Rechnernetzwerk mit Status- und Prozess-Visualisierung. Ein zentraler Rechner, der sogenannte „Master“, sammelt Leistungsdaten von im Netzwerk verteilten Computern, den „Nodes“, speichert diese und stellt die Daten mittels Webschnittstelle graphisch dar. Die Speicherung der Messwerte geschieht mit Hilfe von RRDtool.
Auf diese Weise wird eine Visualisierung der Leistungsdaten erzeugt, die einen Vergleich der aktuellen Daten mit den Daten anderer Rechner und Daten aus der Vergangenheit (im Regelfall maximal für etwa 400 Tage) gestattet. Dabei nimmt die Datengenauigkeit der historischen Werte mit ihrem Alter ab, so dass die verwendete Datenbank eine konstante Größe besitzt. Wegen dieses Mechanismus liegen die Daten des letzten Tages mit einer Auflösung von 5 Minuten vor, die Daten der letzten Woche mit einer Auflösung von 30 Minuten, die Daten des letzten Monats mit einer Auflösung von 2 Stunden und die Daten des letzten Jahres mit einer Auflösung von einem Tag.

## Plugins

Für Munin gibt es eine Reihe von clientseitigen Plugins, die es möglich machen, verschiedene Dienste eines Servers (z. B. Datenbanken, CPU-Last, Mails, Sensoren, Netzwerk etc.) zu überwachen. Diese Plugins werden von einem Daemon gestartet, der Anfragen des Munin-Masters über eine Netzwerkverbindung entgegennimmt. Während der Daemon mit privilegierten Rechten (root) läuft, sorgt die Konfiguration dafür, dass die Plugins mit eingeschränkten Rechten ausgeführt werden. Die Entwicklung eigener Plugins ist mit grundlegenden Programmier-Kenntnissen möglich. Mit MuninExchange existiert eine Plattform zum Austausch der von Anwendern entwickelten Plugins. Ebenfalls existiert eine Schnittstelle zu Nagios, einer alarmorientierten Überwachungs- und Monitorlösung.

## Unterstützte Plattformen

Munin ist plattformübergreifend in Perl geschrieben, es werden daher alle gängigen Unix-/Linux Plattformen unterstützt. Die Installation ist jedoch auch auf nicht unterstützten Systemen möglich, die Installation von Perl vorausgesetzt. Daneben existiert eine Portierung für MS-Windows, sowie für eingebettete Systeme (wie bspw. OpenWrt). Munin-Plugins können in beliebigen Sprachen programmiert sein. Darüber hinaus ist es möglich, Abfragen per SNMP von beliebigen SNMP-fähigen Geräten (z. B. Switches, WLAN-Access-Points, Thermometer) durchzuführen, womit die Notwendigkeit der Installation eines Munin-Plugins entfällt.

## Funktionsweise

Munin arbeitet mit einem Master-Rechner und beliebig vielen Nodes. Wenn nicht nur ein einziger lokaler Server überwacht werden soll, werden auf den zusätzlichen Computern sogenannte Munin-Nodes (die Clientsoftware) eingerichtet und vom Munin-Master regelmäßig abgefragt. Diese Intervalle werden durch Cronjobs gesteuert, welche bei der Installation von Munin automatisch angelegt werden.
Die so gesammelten Daten werden in ein RRD-Archiv gespeist, durch Munin aufbereitet und auf dem Webinterface dargestellt. An den Webserver werden keine besonderen Ansprüche gestellt, da Munin die Seiten generiert und der Webserver nur statische Seiten ausliefern muss. Allerdings unterstützt Munin bei der Einrichtung eines Passwortschutzes vor der Abfrage der Daten sowie beim Caching der Graphen im Webserver selbst.

## Versionen

Die Versionsnummer setzt sich aus einer Major-, einer Minor- sowie einer Release-Nummer zusammen. Die stabile Version (z. B. 1.2.6) bekommt dabei immer eine gerade Zahl, während die Unstable-Version eine ungerade Zahl enthält (z. B. 1.3.4). Die Unstable-Version enthält Features, die funktionieren, jedoch für Endanwender noch nicht in jedem Fall zu empfehlen sind. Hierzu gehört derzeit die Unterstützung für Mac OS X sowie die Verschlüsselung des Netzwerkverkehrs mit TLS. Die Version, an der die Entwickler derzeit arbeiten (trunk), kann man mittels Subversion herunterladen.

## Trivia

Munin war einer der beiden Raben Odins (Hugin und Munin) und bedeutet übersetzt in etwa so viel wie „Erinnerung“. Es gibt auch eine Software namens Hugin.