Nagios Installation/Plugins Erweiterungen

aus PUG, der Penguin User Group
Wechseln zu: Navigation, Suche

Navigation

Überblick

Durch die Community und vielen Aktivisten rund um Nagios, werden ständig neue Plugins und Programme publiziert, die das Leben eines Nagios Admins vereinfachen können. Auf dieser Seite werden Plugins und Erweiterungen vorgestellt, die einen Blick wert sind und helfen sollen, sie einzubinden.

Grafische Frontends

Da Admins ab einer gewissen Anzahl von Hosts und Services bei den zahlreichen Abhängigkeiten und Vorlagen (aka Templates) leicht den Überblick verlieren können, helfen Frontends aus dieser Misere heraus.
Es gibt sie in verschiedenen Ausführungen und Geschmacksrichtungen, sodass für jeden das Passende dabei sein sollte. Hier werden die Interessantesten von ihnen vorgestellt und ihre Installation erklärt.

NagiosAdmin

NagiosAdmin ist ein noch sehr junges - auf PHP5 basierendes - Projekt, das erst so richtig um März08 das Licht erblickte. Dieses Frontend zeichnet sich vor allem durch seine Nagios 3 Kompatibilität aus und die Unterstützung von Templates, was zu den unverzichtbaren Funktionen von größeren Installationen zählt.
Leider unterstützt NagiosAdmin derzeit noch keine Import-Funktion, sodass alles überführt werden muss. Daher eignet sich das Projekt derzeit am Besten bei einer Neuinstallation/Neueinrichtung.

NagiosAdmin Installation

Apache vorbereiten
Sobald die generelle Funktion von Nagios sichergestellt wurde, kann NagiosAdmin relativ schnell installiert werden. Je nach Distribution müssen unterschiedliche Pakete nachinstalliert werden, die zumeist mit PHP5 in Verbindung stehen. Als Grundlage dient das FrameWork Symfony was - laut Wikipedia - Ruby on Rails nachempfunden ist, um die Entwicklung zu vereinfachen. Daher müssen zuvor entsprechende Pakete installiert werden, um diese Funktionen nutzen zu können.
  • Debian
Debian-term.png
master: ~# apt-get install php5 php5-mysql php5-gd php5-cli php5-xsl
Das Modul wird in der Regel automatisch eingebunden und Apache neugestartet, sodass nach der Installation PHP funktionieren sollte. Überprüfen lässt sich dies einfach mit folgendem:
Gnome-terminal.png
master: ~# echo '<?php phpinfo(); ?>' > /var/www/htdocs/test.php
Diese Datei sollte nun über den Webbrowser aufgerufen werden (http://<Servername>/test.php) und dann sollte sich eine Seite öffnen, die Informationen über PHP selbst, verschiedene Variablen, etc. anzeigt. Sollte dagegen der Inhalt dargestellt oder die Datei zum Herunterladen angeboten werden, ist PHP noch nicht aktiviert. Dies kann dann einfach nachgeholt werden:
Debian-term.png
master: ~# a2endmod php5 && apache2ctl -t -D DUMP_MODULES && apache2ctl -k graceful
In der Auflistung der Module sollte dann ein php5_module (shared) auftauchen.
  • SuSE
Unter SuSE sind ebenfalls entsprechende Pakete notwendig
Suse-term.png
master: #~ yast -i php5 php5-ctype php5-dom php5-gd php5-mysql php5-xsl
Auch unter SuSE sollten diese Module nach einem Neustart des Webservers aktiv sein.
Messagebox info.png

Für andere Linux Distributionen und *BSD ist es wichtig zu beachten, dass oftmals die DOM, XML, XSL und CTYPE Erweiterungen zumeist separat nachzuinstallieren sind.

Auf der PHP-Infoseite sollten in jedem Fall die Unterstützung für XML, DOM, XSL und CTYPE vorhanden sein. Ist dies nicht der Fall, so kann es während der Einrichtung der Datenbank von NagiosAdmin zu Problemen kommen.
Apache-Konfiguration
Da bereits feststeht, wo NagiosAdmin landen wird, können wir unsere Apache-Konfiguration gleich anpassen. Dazu öffnen wir die entsprechende /etc/apache2/conf.d/nagios.cfg Datei und tauschen den Inhalt weitestgehend durch folgende Zeilen aus:
  • /etc/apache2/conf.d/nagios.cfg
Ascii.png
<dmin_flag magic_quotes_gpc 0

ScriptAliasMatch ^/(nagios|nagios-ext)/cgi-bin/(.*) /usr/local/$1/sbin/$2
Alias /nagios/images/logos/nagiosimages /usr/local/nagios/share/admin/web/uploads/os_images

Alias /nagios-ext /usr/local/nagios-ext/share
<DirectoryMatch "/usr/local/(nagios/sbin|nagios-ext/sbin|)/">
   Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /usr/local/nagios/etc/htpasswd.users
   Require valid-user
</DirectoryMatch>

Alias /nagios "/usr/local/nagios/share"
<DirectoryMatch "/usr/local/(nagios/share|nagios-ext/share|)/">
   Options None
   AllowOverride All
   Order allow,deny
   Allow from all
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /usr/local/nagios/etc/htpasswd.users
   Require valid-user
</DirectoryMatch>
Damit müssen wir uns nur einmal authentifizieren, um alle wichtigen Verzeichnisse erreichen zu können und sparen uns zudem noch Code.
Ein 'apache2ctl -t && apache2ctl graceful sollte mit einem Syntax OK enden.
NagiosAdmin
Das Paket kann von der Webseite besorgt werden.
Da ich versuche alles beieinander zu halten, wandert das Programm mit ins Nagios-Verzeichnis:
Gnome-terminal.png
master: ~# cd /usr/local/nagios/share
master:  /usr/local/nagios/share # wget http://www.nagiosadmin.de/nagiosadmin-0.9.1.tar.bz2 
master:  /usr/local/nagios/share # tar xjf nagiosadmin-0.9.1.tar.bz2
master:  /usr/local/nagios/share # mv nagiosadmin-0.9.1 admin
master:  /usr/local/nagios/share # cd admin
Nun können wir die Datenbank einrichten
Gnome-terminal.png
master: /usr/local/nagios/share/admin # mysqladmin -p create nagiosadmin && mysql -p
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER,INDEX,DROP
        ON nagiosadmin.*
	TO 'nagiosadmin'@'localhost'
	IDENTIFIED BY 'secret';
	flush privileges;
	quit
Das Kennwort (hier secret) ist natürlich anzupassen ;-)
Ist dies soweit geschehen, kannn NagiosAdmin konfiguriert werden. Dazu sind drei Dateien anzupassen:
  • /usr/local/nagios/share/admin/config/propel.ini
Dialog-warning.png
Symfony ist äußerst empfindlich, wenn es um Leerzeichen, Tabulatoren und Co. geht. Daher keinesfalls irgendwelche Einrückungen vornehmen, sondern nur die entsprechende Werte ändern!
Ascii.png
propel.project             = nagiosadmin
propel.database            = mysql
propel.database.createUrl  = mysql://localhost/
propel.database.url        = mysql://nagiosadmin:secret@localhost/nagiosadmin
Wie wir sehen, müssen wir die Datenbank Informationen hinterlegt werden. Nun folgt eine weitere Datei:
  • /usr/local/nagios/share/admin/config/databases.yml
Ascii.png
prod:
  propel:
    param:
      host:   localhost

all:
propel:
 class:                sfPropelDatabase
  param:
  phptype:            mysql
  hostspec:           localhost
  database:           nagiosadmin
  username:           nagiosadmin
  password:           secret
  port:
  encoding:           utf8 
  persistent:         true
Zum Schluss die letzte, in der wir NagiosAdmin mitteilen, wo er die ausführbaren Dateien nagios, sudo und killall findet
  • /usr/local/nagios/share/admin/apps/backend/modules/generator/config/module.yml
Ascii.png
config_check_command:           /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios/nagios.cfg 2>&1
reload_nagios_command:          /usr/bin/sudo /usr/bin/killall -HUP nagios
Ist die Aufgabe erfolgreich abgeschlossen worden, können wir die Datenbank und Dateien initialisieren, füllen sowie prüfen lassen:
Gnome-terminal.png
master: /usr/local/nagios/share/admin/ # for i in fix-perms propel-insert-sql propel-insert-sql check; do ./symfony $i; done
Dies sollte selbstverständlich alles ohne Fehler durchlaufen.
Damit nun auch der Apache nun auch unseren Sudo Befehl absetzen darf, muss dieser natürlich noch entsprechend hinzugefügt werden:
  • Debian
Debian-term.png
master: ~# echo 'www-data ALL=NOPASSWD: /usr/bin/killall -HUP nagios' >> /etc/sudoers
master: ~# su - www-data -c 'sudo /usr/bin/killall -HUP nagios'
Zeile 1 fügt den Benutzer www-data (als welcher der Apache unter Debian läuft) hinzu, damit er dem Nagios Prozess ein -HUP Signal senden kann.
Die zweite Zeile testet, ob es funktioniert.
  • SuSE
Suse-term.png
master: ~# echo 'wwwrun ALL=NOPASSWD: /usr/bin/killall -HUP nagios' >> /etc/sudoers
master: ~# su - wwwrun -c 'sudo /usr/bin/killall -HUP nagios'
Der Abschluss des Ganzen bildet die Anpassung von Nagios selbst, bzw. seiner Dateien, die er einbinden soll. Dazu begeben wir uns in die /usr/local/nagios/etc/nagios.cfg
  • /usr/local/nagios/etc/nagios.cfg
Ascii.png
[...]
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_dir=/usr/local/nagios/share/admin/data/nagios
[...]
Nun sollten sämtliche Beispielkonfigurationen (also localhost.cfg, router.cfg etc.) auskommentiert werden, bis auf diese zwei.
Damit steht einem Aufruf http://master/nagios/admin nichts mehr im Wege und es kann getestet werden.