BlackBoard Debian Server Tutorial http://www.black-board.net Kapitel 23: Munin ================= (1) Monitoring (1.1) Definition (1.2) Anforderungen (2) Was ist Munin? (3) Installation (4) Konfiguration (4.1) Dateien (4.2) Serverkonfiguration (4.3) Clientkonfiguration (5) Fehlersuche (6) Funktionsweise des RRD-Tools (7) Links (8) Anmerkungen (im Text mit * gekennzeichnet) (1) Monitoring (1.1) Definition Unter Monitoring versteht man im IT-Bereich im Allgemeinen die Überwachung und Kontrolle von IT-Netzwerken und Telekommunikationsnetzen bzw. einzelner Anlagen (z.B. Server). (1.2) Anforderungen Ein gutes Monitoringsystem sollte den folgenden Anforderungen gerecht werden: 1. Monitoring vieler Systeme 2. Messung und Darstellung von Kurz -und Langzeitdaten 3. einfacher Vergleich der selben Messung zwischen verschiedenen Systemen 4. Übersicht aller Messergebnisse auf einem System 5. Plots müssen immer aktuell und überall verfügbar sein 6. das Monitoring sollte keinen Einfluss auf das System haben (die durch das Monitoring genutzten Ressourcen sollten kleiner als 1% der Systemleistung sein) (2) Was ist Munin? Bei Munin handelt es sich um eine Monitoringsofware (genauer gesagt ist es nur das Frontend), welche auf das RRD-Tool aufsetzt und eine Server-Client-Struktur mitbringt. Die Round Robin Database (RRD, näheres siehe 6) stellt eine Weiterentwicklung der Grafik -und Loggingfunktionalität von MRTG (Multi Router Traffic Grapher) dar und stammt vom selben Entwickler (Tobias Oetiker). Munin bringt bereits einige sehr nützliche Plugins mit, beispielsweise zur Überwachung von Mail- oder MySQL-Servern. Die Installation und Konfiguration geht sehr einfach vonstatten, die gewünschten Plugins werden einfach über symbolische Links aktiviert. Somit hat man innerhalb weniger Minuten ein lauffähiges Monitoringsystem. Munin holt sich über einen CronJob alle 5 Minuten die aktuellen Daten und erzeugt dann die entsprechenden Grafiken und HTML-Seiten. Munin live erleben: http://munin.ping.uio.no/ (3) Installation Munin besteht aus 2 Paketen: munin - erzeugt die Grafiken und HTML-Seiten (sozusagen der Server) munin-node - Client Die Installation der Pakete erfolgt mit dem Befehl: apt-get install munin munin-node (4) Konfiguration Wie bereits weiter oben erwähnt ist Munin sehr schnell und einfach zu konfigurieren, und somit gibt es auch nicht viel zu tun um ein lauffähiges Monitoringsystem zu erhalten. Aus diesem Grund wird im folgenden nur auf die grundlegende Konfiguration sowie den einen oder anderen interessanten Punkt eingegangen.* (4.1) Dateien /etc/munin/ - Verzeichnis mit den Configfiles (munin.conf, munin-node.conf) /etc/munin/plugin-conf.d/ - Configfiles für das Verhalten/Umgebung /etc/munin/plugins - symbolische Links zu den PlugIns /usr/share/munin/plugins - Plugins /var/lib/munin - RRD-Files, Statistikfiles etc. /var/www/munin - HTML-Files (darunter Verzeichnisse für die Domänen und dort die einzelnen Files) /var/log/munin - Log-Files /var/run/munin - Run-Files /etc/cron.d/munin - CronJob, welcher /usr/bin/munin-cron ausführt (4.2) Serverkonfiguration Die Konfiguration des Servers erfolgt in der Datei munin.conf _______________ |General Config | |------------------------------------------------------------------------------ |Option Beschreibung | |------------------------------------------------------------------------------| |dbdir Verzeichnis zur Speicherung der RRD-Files | |htmldir HTML-Verzeichnis | |logdir Verzeichnis für die Logfiles | |rundir Run-Files (PID und Lockfile) | |tmpldir Templates | |max_processes max. Anzahl paralleler Munin-Prozesse | |nsca* Optionen für Nagios | |domain_order ändert die Sortierung der Domains | |[foo.com;foo.de] ordnet die Domain foo.de der Domain foo.com zu | |[machine.foo.com] ordnet machine.foo.com der Domain foo.com zu (Kurzform | | von [foo.com;machine.foo.com]) | ------------------------------------------------------------------------------ _____________________ |Domain-level options | |------------------------------------------------------------------- |Option Beschreibung | |-------------------------------------------------------------------| |node_order ändert die Reihenfolge der Clients in der Darstellung | ------------------------------------------------------------------- ___________________ |Node-level options | |------------------------------------------------------------------------ |Option Beschreibung | |------------------------------------------------------------------------| |address IP oder hostname.domain | |use_node_name yes, nur nötig wenn unter address die IP eingetragen ist | ------------------------------------------------------------------------ Minimum-ConfigFile: dbdir /var/lib/munin htmldir /var/www/munin logdir /var/log/munin rundir /var/run/munin [node.foo.com] address 10.10.10.10 (4.3) Clientkonfiguration Die an Munin angeschlossenen Clients lassen sich in 2 Gruppen unterteilen: 1. Linux, BSD, Solaris, AIX Für diese Systeme gibt es die Client-Software munin-node. Somit erfolgt die Konfiguration, nach der Installation des Paketes munin-node, auf dem Client selbst. 2. Windows, Router und der Rest Diese Syteme kann man derzeit nur über SNMP (Simple Network Monitoring Protocol) überwachen. Hier erfolgt die Konfiguration des Monitorings auf dem Server selbst, hier muss also ebenfalls das Paket munin-node installiert sein. Für beide Gruppen ist die Konfiguration also prinzipiell gleich, sie unterscheiden sich nur dadurch, auf welchem System die Konfiguration durchgeführt wird. Ablauf der Konfiguration: 1. Installation der Clientsoftware munin-node (Gruppe 1) Installation eines SNMP-Servers (Gruppe 2, sofern erforderlich z.B. bei Windows) 2. Konfiguration des Clients (/etc/munin/munin-node.conf; Gruppe 1) - Eintragen des Hostnamen #host_name localhost.localdomain host_name munintest.foo.com - dem Server Zugriff auf den Client gewähren allow ^127\.0\.0\.1$ #localhost allow ^192\.168\.0\.1$ #IP des Munin-Servers 3. Einbinden der Plugins Wie bereits weiter oben erwähnt werden die Plugins einfach über einen symbolischen Link eingebunden. Hierbei gibt es einige Besonderheiten, z.B. haben einige Plugins einen Unterstrich am Ende (port_) oder sogar 2 Unterstriche direkt im Namen (snmp__load), an diesen Stellen wird jeweils etwas erwartet. Bespiel: ln -s /usr/share/munin/plugins/port_ /etc/munin/plugins/port_ssh ln -s /usr/share/munin/plugins/snmp__load /etc/munin/plugins/snmp_hostname.domain-des-snmp-hosts_load weitere Plugins: http://munin.projects.linpro.no/wiki/PluginCat 4. Um sicherzustellen das alle Änderungen übernommen werden: /etc/init.d/munin-node restart 5. Einbinden des Clients in die Überwachung: /etc/munin/munin.conf [host.domain] address IP oder Hostname (Hostname welcher in der /etc/hosts des Servers eingetragen ist) Nach dem nächsten Start des CronJobs sollte nun auch der neue Client erscheinen. (5) Fehlersuche Logfiles des Servers: munin-node.log munin-graph.log munin-html.log Logfiles des Clients: munin-node.log Probleme mit Plugins: Die Hauptursache dafür, dass ein Plugin einmal nicht funktioniert, ist dass es eine Bibliothek verwendet, die nicht auf dem System installiert ist. Die Fehler- ursache lässt sich leicht mit folgenenden Befehlen herausfinden (benötigt root und man sollte sich im Verzeichnis /etc/munin/plugins befinden): munin-run plugin munin-run plugin config (6) Funktionsweise des RRD-Tools Das von Tobias Oetiker entwickelte RRD-Tool stellt mittlerweile den Quasi-Standard für die Speicherung von Monitoringdaten dar. Es legt seine Daten in so genannten Round-Robin-Datenbanken (RRD) ab, die dann von diversen Frontends wie Munin, Orca oder Cacti genutzt werden. Die Funktionsweise eines Round-Robin-Archivs (RRA) stellt man sich am besten wie folgt vor: (0:00) 2,5 (0:15) 3,1 <---- (0:05) 4,0 (0:10) 1,7 Im Round-Robin-Archiv liegen die erfassten Messwerte auf einer begrenzten Anzahl von Speicherplätzen, beginnend um 0 Uhr und dann im Uhrzeigersinn bis zum aktuellen Wert von 3,1 um 0:15 Uhr (Pfeil). Da der nächste Messwert 0:20 Uhr aber nicht mehr ins Archiv passt, wird der Wert von 0 Uhr überschrieben. Wäre man nur an den Daten der letzten paar Minuten interessiert, wäre dies kein Problem, aber auch hierfür gibt es eine Lösung ohne dass man riesige Datenmengen speichern muss. Die Lösung heißt Unschärfe, welche über lange Zeiträume akzeptabel ist. Das RRD-Tool legt hierzu weitere Archive an, welche die Durchnittswerte (oder Min/Max-werte speichert). Sind diese Archive erst einmal in einer RRD angelegt, speichert das RRD-Tool kontinuierlich die entsprechenden Messwerte ab. Der sich daraus ergebende Vorteil ist eine schnelle Datenbank mit fester Größe. (7) Links Munin-Homepage: http://munin.projects.linpro.no RRD-Tool Homepage: http://oss.oetiker.ch/rrdtool (8) Anmerkungen * weitere Beispiele/Optionen findet man auf der FAQ-Seite von Munin: http://munin.projects.linpro.no/wiki/faq -- HazardEvil