aus PUG, der Penguin User Group
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.
|
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:
|
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:
|
master: ~# a2endmod php5 && apache2ctl -t -D DUMP_MODULES && apache2ctl -k graceful
|
- In der Auflistung der Module sollte dann ein php5_module (shared) auftauchen.
- Unter SuSE sind ebenfalls entsprechende Pakete notwendig
|
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.
|
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
|
<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:
|
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
|
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
|
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!
|
|
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
|
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
|
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:
|
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:
|
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.
|
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
|
[...]
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.