Donnerstag, 24. Mai 2012


Artikel

Juli 2006 | Artikel

Nagios: Netzwerküberwachung Open Source

(Link zum Artikel: http://www.entwickler.de/php//000866)

Mit dem Prozessmonitoring-Framework alles im Blick

Text: Rouven Homann
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share
Server, Router, Firewalls oder auch wichtige Systemprozesse sind oft kritische Komponenten in Unternehmen. Bei akuten Problemen wird es dann schnell hektisch im Büro des Systemadministrators. Dieser Artikel zeigt Ihnen, wie Sie mit dem Open-Source-System- und Prozessmonitoring-Framework Nagios den Überblick behalten, Probleme schnell lokalisieren und entsprechend zielgerichtet reagieren können.
Teil 1   Teil 2   Teil 3   Teil 4   

Mit der Anfang des Jahres fertig gestellten Version 2.0 optimiert Nagios-Gründer und -Entwickler Ethan Galstad seine auf C-Code basierte Software in vielen Punkten. Das Open-Source-Projekt ist nach einer kurzen "Ruhephase" wieder richtig aktiv. Galstad arbeitet seit einiger Zeit bereits Fulltime an Nagios und gab vor mehr als einem Jahr die erste Betaversion für Nagios 2 frei, bis nun Anfang Februar 2006 die Version 2.0 als stable gekennzeichnet wurde. Die in der Zwischenzeit nachgereichten Versionsnummer 2.1 und 2.2 sind lediglich Bugfixing-Releases, neue Features sollen nur noch in die kommende Version 3 eingehen, mit deren Entwicklung in Kürze begonnen werden soll. Prominente Firmen wie eBay, Sun Microsystems, Symantec und Yahoo! nutzen Nagios bereits heute, in Deutschland ist Nagios vor allem im Mittelstand präsent.

Drei Schritte zum Basissystem
Schon bei der Installation der neuen Version 2 werden eingesessene Nagios-Anhänger feststellen, dass der Datenbank-Support weggefallen ist. Von Ethan Galstad als "nicht ausgereift" betitelt, fanden die MySQL- und PostgreSQL-Versionen trotzdem eine große Verbreitung in der Community durch zahlreiche Distributionen wie SuSE oder auch Debian. Mit der neuen Version ist damit Schluss, der native DB-Support wurde auf Version 3 und damit auf eine neue, auf Perl und PHP basierende Oberfläche verschoben. Um bis zum Release der 3.0-Version nicht gänzlich auf den Komfort einer Datenbank verzichten zu müssen, gibt es einige Datenbank basierende Tools zur Administration der Konfigurationsdateien, wie z.B. das auf MySQL basierte Webinterface NagiosQL. Für einfache "Alive"-Checks und Ressourcen-Überprüfungen genügt vorerst die offizielle Nagios-Plug-in-Sammlung den Ansprüchen einer Basisinstallation.
Der erweiterte Dreisatz
Wer nicht Red-Hat- bzw. Fedora-Core-User ist, der wird zurzeit nicht um die Sourcecode-Installation herumkommen. Fertige RPMs für SuSE oder DEBs für Debian-Systeme werden noch einige Zeit brauchen, bis dahin greift man zur typischen Quellcode-Installation. Auf der Nagios-Website [1] gibt es den Link zu den erwähnten Red-Hat-Paketen und natürlich auch den Sourcecode für die folgende Installationsanleitung.
Nagios benötigt für die Darstellung der Symbole im Webinterface Boutells GD Library (libgd), die im Vorwege installiert werden sollte. Nach erfolgreichem Entpacken steht ein erweiterter Dreisatz an. Als Beispiel dient hier eine typische Nagios-Systemumgebung. Wer eine Installation nach /usr/local vorzieht, lässt den Rattenschwanz einfach weg, und wer sich an Embedded Perl (bessere Performance, aber schlechte Kompatibilität zu alten Perl-Plug-ins) wagen möchte, fügt dem Ganzen einfach --enable-embedded-perl --with-perlcache hinzu:
  1. ./configure --with-init-dir=/etc/init.d --with-cgiurl=/
  2. nagios/cgi-bin --with-htmurl=/nagios --with-lockfile=/
  3. var/run/nagios.pid --prefix=/usr --exec-prefix=/usr/
  4. sbin --bindir=/usr/sbin --sbindir=/usr/lib/nagios/
  5. cgi --libexecdir=/usr/lib/nagios/
  6. plugins --datadir=/usr/share/
  7. nagios --sysconfdir=/etc/
  8. --localstatedir=/
  9. var/log/nagios
Es folgen die typischen Befehle ./make all und ./make install (legt auch die Gruppe und User nagios an). Doch damit ist es noch nicht geschafft:
  • ./make install-init (installiert das init-Skript nach /etc/init.d/)
  • ./make install-commandmode (setzt die Berechtigungen für das CommandFile)
  • ./make install-config (erstellt einfache Beispielkonfigurationsdateien nach /etc/nagios/)
Sofern die Installation fehlerfrei durchgelaufen ist, ist Nagios grundsätzlich einsatzbereit. Es fehlt lediglich die Anpassung des Webservers, um den ersten Startbildschirm von Nagios betrachten zu können.
Apache-Konfiguration
Mit Einführung der Nagios 2.0 Beta 6 wurden zu Gunsten der Sicherheit einige Anpassungen an die Apache-Konfiguration gemacht. Eine Beispieldatei liegt nach der Installation im Sourcecode-Verzeichnis unter sample-config/httpd.conf (Listing 1). Ist die Apache-Konfiguration um diese Zeilen ergänzt, sollte bereits die Nagios-Startseite zu sehen sein. Einige Nagios-Webseiten sind jedoch noch nicht zu erreichen. Dafür ist die Authentifizierung eines Nagios-Benutzers nötig, für die ein so genanntes "Apache AuthUserFile" angelegt werden muss:
  1. linux:# htpasswd -c /etc/nagios/
  2. htpasswd.users nagiosadmin
Nach Eingabe des Passworts ist auch diese Hürde gemeistert. Ein Apache-Restart sollte fehlerfrei funktionieren und unter webserver/nagios sollte nach Eingabe der Userdaten die Nagios-Startseite erscheinen. Ob die Authentifizierung über Apache funktioniert, kann man an dem Benutzernamen "nagiosadmin" erkennen, der zumindest auf der Seite Configuration => View Config oben auf der Seite eingeblendet sein sollte. Die anderen Seiten liefern noch Fehler zurück, was bis zu diesem Zeitpunkt aber in Ordnung ist.
Nagios-Webinterface-Konfiguration
Nagios erlaubt die Konfiguration von Benutzern für unterschiedliche Rechte auf das Webinterface. Für diese Basisinstallation werden dem soeben eingerichteten User „nagiosadmin“ sämtliche Rechte auf das Webinterface eingerichtet. Dafür sind die folgenden Konfigurationsoptionen in der /etc/nagios/cgi.cfg zuständig, die nach der Installation noch auskommentiert sind:
  1. authorized_for_system_information=nagiosadmin
  2. authorized_for_configuration_information=nagiosadmin
  3. authorized_for_system_commands=nagiosadmin
  4. authorized_for_all_services=nagiosadmin
  5. authorized_for_all_hosts=nagiosadmin
  6. authorized_for_all_service_commands=nagiosadmin
  7. authorized_for_all_host_commands=nagiosadmin
Nagios-Plug-ins
Bei der Installation der offiziellen Nagios-Plug-in-Sammlung [2] kann die ausführliche ./configure-Zeile aus der Nagios-Installation nach dem Download und Entpacken erneut benutzt werden, auch wenn einige Parameter obsolet sind. Im Laufe des ./configure wird auf fehlende Bibliotheken aufmerksam gemacht, da einige Plug-ins spezielle Libraries zum Kompilieren benötigen. Grundsätzlich sind diese fehlenden Libraries nicht für jedes Plug-in Pflicht, benötigt werden diese meist nur von speziellen Prüf-Plug-ins wie z.B. MySQL, PostgreSQL, Radius oder auch LDAP, Näheres liefert der Programmoutput. Gefolgt von einem make und einem make install erfolgt die Installation der Plug-ins dann getreu dem typischen Dreisatz. Die fertigen Plug-ins liegen bei Angabe des libexecdir wie aus der Nagios-Installation unter /usr/lib/nagios/plugins. Eine zusätzliche Quelle für so genannte Third-Party-Plug-ins bietet NagiosExchange [3], dort gibt es zahlreiche Plug-ins für erweitertes Hardwaremonitoring, Speziallösungen, aber auch Ergänzungen zu bestehenden Plug-ins. Die Plug-ins sind zumeist Quellcode-offene Shell- oder Perlskripte und lassen sich nach Überprüfung der Pfade einfach in das Plug-in-Verzeichnis kopieren und sofort benutzen.
Nagios 2 – was gibt’s Neues?
Eine komplette Liste der Änderungen würde den Rahmen des Artikels sicherlich sprengen, der "What’s New"-Bereich [6] des Handbuchs beträgt rund dreieinhalb ausgedruckte Seiten. Eine kleine Übersicht der wichtigsten Änderungen:
  • kein nativer DB-Support
  • Konfigurationsdateien rekursiv durch Verzeichnisse einlesbar
  • Servicegroups hinzugefügt (z.B. zur Abbildung von Geschäftsprozessen)
  • Event Broker API für die Entwicklung von Modulen erstellt
  • Benachrichtigung bei Flapping Detection (schnell wechselnde Service/Host-Status)
  • Nagios Statistik Tool hinzugefügt (nagiostats)
  • Performance Tuning der Webseiten
  1. Listing 1
  2. ----------
  3. ScriptAlias /nagios/cgi-bin "/usr/lib/nagios/cgi"
  4. <Directory "/usr/lib/nagios/cgi">
  5. # SSLRequireSSL
  6. Options ExecCGI
  7. AllowOverride None
  8. Order allow,deny
  9. Allow from all
  10. # Order deny,allow
  11. # Deny from all
  12. # Allow from 127.0.0.1
  13. AuthName "Nagios Access"
  14. AuthType Basic
  15. AuthUserFile /etc/nagios/htpasswd.users
  16. Require valid-user
  17. </Directory>
  18. Alias /nagios "/usr/share/nagios"
  19. <Directory "/usr/share/nagios">
  20. # SSLRequireSSL
  21. Options None
  22. AllowOverride None
  23. Order allow,deny
  24. Allow from all
  25. # Order deny,allow
  26. # Deny from all
  27. # Allow from 127.0.0.1
  28. AuthName "Nagios Access"
  29. AuthType Basic
  30. AuthUserFile /etc/nagios/htpasswd.users
  31. Require valid-user
  32. </Directory>

Teil 1   Teil 2   Teil 3   Teil 4   

Kommentare