Wie vergangenes Jahr berichtet, wurde der bekannte Open-Source Monitoring Dienst Nagios geforkt und unter dem Projekt ICINGA in neuem Glanz veröffentlicht. Ich werde hier in den nächsten Wochen meine Erfahrungen schildern und einige HowTo’s dazu veröffentlichen. Der Start erfolgt mit der Installation von ICINGA 1.0.2 + IDOUtils unter Debian Lenny.
Abhängigkeiten und erforderliche Programme installieren
Folgende Voraussetzungen müssen für den Betrieb von ICINGA installiert sein:
*) Apache Webserver
*) MySQL Datenbank + libdbi Treiber
*) GCC Compiler, C/C++ dev libraries
*) GD Library
Installation des Apache Webserver + Mysql Datenbank
Die benötigten libdbi Treiber werden über folgenden Befehl installiert:
apt-get install -y libdbi0-dev libdbd-mysql
Der GCC Compiler und die erforderlichen C/C++ development Libraries werden zusammengefasst als build-essential installiert:
apt-get install -y build-essential
Installation der GD Libraries:
apt-get install -y libgd2-xpm-dev libjpeg62-dev libpng12-dev
Benutzer und Gruppe für ICINGA anlegen
Damit ICINGA funktioniert, benötigt es einen eigenen Benutzer mit dem Namen icinga. Diesen legen wir wie folgt an und vergeben ein Passwort:
useradd -m icinga
passwd icinga
Um das Webinterface mit vollem Funktionsumfang nutzen zu können (Kommandos zu senden) wird noch eine spezielle Gruppe benötigt in welche die beiden User icinga und www-data hinzugefügt werden:
groupadd icinga-cmd
usermod -a -G icinga-cmd icinga
usermod -a -G icinga-cmd www-data
ICINGA downloaden und entpacken
Nach dem die Vorbereitungen soweit getroffen sind, kann ICINGA von Sourceforge downgeloaded, validiert und entpackt werden. Ich benutze dazu immer das Verzeichnis /usr/src. Bitte achtet darauf, dass ihr die aktuelle stable Version runterladet, um keine ältere Version zu installieren. In meinem Fall ist die Version 1.0.2 die momentane stable Version.
cd /usr/src
wget http://sourceforge.net/projects/icinga/files/icinga/1.0.2/icinga-1.0.2.tar.gz/download
wget http://sourceforge.net/projects/icinga/files/icinga/1.0.2/icinga-1.0.2.tar.gz.md5/download
md5sum -c icinga-1.0.2.tar.gz.md5
Folgendes Ergebniss muss beim MD5 Check herauskommen:
icinga-1.0.2.tar.gz: OK
Das Paket wird anschließend mit folgendem Befehl in das /usr/src Verzeichnis entpackt:
tar xvzf icinga-1.0.2.tar.gz
Installation von ICINGA
Wir beginnen jetzt mit der eigentlichen Installation von ICINGA mit den entsprechenden Optionen für IDOUtils
cd /usr/src/icinga-1.0.2
./configure --with-command-group=icinga-cmd --enable-idoutils
make all
make fullinstall
Die jeweiligen Schritte können abhängig vom System einige Zeit in Anspruch nehmen. Die Grundinstallation von ICINGA ist damit abgeschlossen, für den Betrieb sind aber noch einige weitere Konfigurationsschritte notwendig. Eine Bespielkonfiguration wurde bereits im Pfad /usr/local/icinga/etc angelegt.
Download und Installation der Nagios Plugins
ICINGA verwendet die Nagios Plugins um die eigentlichen Checks durchzuführen. Die Plugins sind kleine eigenständige Programme, die auch unabhängig von ICINGA bzw. Nagios verwendet werden können. Der Download ist ebenfalls bei Sourceforge verfügbar und ich empfehle wieder die Verwendung der aktuellsten stable Version. In meinem Fall die Version 1.4.14.
cd /usr/src
wget http://sourceforge.net/projects/nagiosplug/files/nagiosplug/1.4.14/nagios-plugins-1.4.14.tar.gz/download
tar xzvf nagios-plugins-1.4.14.tar.gz
Nach dem Entpacken können die Plugins installiert werden:
cd /usr/src/nagios-plugins-1.4.14
./configure --prefix=/usr/local/icinga --with-nagios-user=icinga
make
make install
Benutzer für das ICINGA Webinterface anlegen
Jetzt definieren wir den User und ein entsprechendes Passwort, mit dem wir uns zukünftig auf dem Webinterface anmelden (icingaadmin kann dabei durch einen beliebigen Usernamen ersetzt werden):
htpasswd -c /usr/local/icinga/etc/htpasswd.users icingaadmin
Anmerkung: Um später weitere User hinzuzufügen muss die Option „-c“ weggelassen werden, da die Datei sonst immer neu generiert und überschrieben wird. Im Anschluss den Apache neu starten:
/etc/init.d/apache2 restart
Konfiguration der MySQL Datenbank und IDOUtils
Damit IDOUtils auch in unsere MySQL Datenbank schreibt, müssen wir eine entsprechende Datenbank anlegen und IDOUtils konfigurieren. Mit folgenden Befehl verbinden wir uns mit der MySQL Server Konsole:
mysql -u root -p
Ihr werdet nun nach eurem Passwort gefragt, das ihr bei der Installation angegeben habt. Nun legen wird die Datenbank und den User icinga an. Bitte password durch ein ensprechendes Passwort ersetzen.
create database icinga;
GRANT USAGE ON *.* TO 'icinga'@'localhost' IDENTIFIED BY 'password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
GRANT SELECT , INSERT , UPDATE , DELETE ON icinga.* TO 'icinga'@'localhost';
flush privileges;
quit
Nachdem die Datenbank und der User erstellt wurde, spielen wir die in den Sourcen mitgelieferte Datenbankstruktur in die Datenbank icinga ein:
cd /usr/src/icinga-1.0.2/module/idoutils/db/mysql
mysql -u root -p icinga < mysql.sql
Jetzt muss IDOUtils noch die Datenbankverbindung mitgeteilt werden. Dazu benennen wir die Beispielkonfigurationen um…
mv /usr/local/icinga/etc/ido2db.cfg-sample /usr/local/icinga/etc/ido2db.cfg
mv /usr/local/icinga/etc/idomod.cfg-sample /usr/local/icinga/etc/idomod.cfg
…und passen die entsprechenden Einträge an (password wieder durch das eingegebene Passwort ersetzen):
vi /usr/local/icinga/etc/ido2db.cfg
db_servertype=mysql
db_host=localhost
db_port=3306
db_name=icinga
db_user=icinga
db_pass=password
Nun muss das idomod-Eventbroker-Modul aktiviert werden. Dazu editieren wir folgende Datei und fügen die entsprechende Zeile ein bzw. entfernen das Kommentarzeichen, falls die Zeile bereits vorhanden ist.
vi /usr/local/icinga/etc/icinga.cfg
broker_module=/usr/local/icinga/bin/idomod.o config_file=/usr/local/icinga/etc/idomod.cfg
Dienste Starten und Autostart konfigurieren
Die entsprechenden Dienste bzw. Init Skripts sollten in dieser Reihenfolge gestartet werden:
/etc/init.d/ido2db start
/etc/init.d/icinga start
Damit beim Systemstart/Shutdown IDOUtils und ICINGA auch automatisch in der richtigen Reihenfolge ausgeführt und beendet werden, benötigen wir noch diese 2 Befehle
update-rc.d ido2db defaults 50 19
update-rc.d icinga defaults 51 18
Das Webinterface
Herzlichen Glückwunsch, euer ICINGA ist nun voll funktionsfähig und überwacht den lokalen Server.
Der erste Stein sollte damit gelegt sein. Jetzt liegt es an Euch, euer ICINGA zu befüllen und eure Serverfarmen zu überwachen. Solltet Ihr bereits ein Nagios im Einsatz gehabt haben, dann ist es mühelos möglich, die Konfigurationsdateien zu übernehmen. So kann in wenigen Schritten das bestehende Nagios durch Icinga ersetzt werden. Weitere Updates, wie Installation von NagVis, NConf und NETWAYS Grapher kommen in den nächsten Tagen und Wochen. Um kein Update zu verpassen, abonniert ihr am Besten meinen RSS Feed oder folgt mir auf Twitter und Facebook.
[sam id=’2′ codes=’true‘]
Der Zugriff auf das Webinterface erfolgt bequem per Browser mit folgender URL:
http://serverip/icinga
Und so sieht das Monitoring am ICINGA Server aus:
Danke für die tolle Anleitung!
Falls Fehler auffallen oder feature requests anfallen, sind wir über einen Eintrag in die issues unter https://dev.icinga.org/ sehr dankbar! 🙂
Grüße
Christian
Besten Dank 😉
Eine super Anleitung.
Zwei kleine Fehler möchte ich nennen:
fasch: /etc/init.d/apache restart
richtig: /etc/init.d/apache2 restart
fasch: flush privileges
richtig: flush privileges;
Wenn jemand mit dem vi nicht so fit ist.
Kurzref hier: http://www.fehcom.de/pub/viref.pdf
Hallo Reiner,
vielen Dank für deine Hinweise. Wie sich immer wieder diese Schlampigkeitsfehler einschleichen 😉
habs auf jeden Fall sofort korrigiert.
lg
Patrick
Hallo,
super Anleitung. Hat auf Anhieb geklappt. Das nen ich mal ne super Sache. Danke
Noch ne kleine Amerkung:
mv /usr/local/icinga/etc/ido2db.cfg-sample
/usr/local/icinga/etc/ido2db.cfg
soll/sollte in einer Zeile sein, dann 110%
Gruß
KLaus
Hallo Klaus,
Danke für das Lob!
besagtes Kommando ist eigentlich in einer Zeile geschrieben, nur reicht der Platz nicht aus um es als eine Zeile darzustellen 😉
Gruß
Patrick
Also mir ist aufgefallen, dass es doch nicht ganz trivial ist, wie der User für das Webinterface heißt – habe erst meinen üblichen nick eingegeben (statt icingaadmin) und hatte so keinen Zugriff auf die Daten im Webinterface.
Ansonsten vielen Dank für dieses Tutorial!!
Gruß, CS
Der WebBenutzer wird unter dem Punkt „Benutzer für das ICINGA Webinterface anlegen“ erstellt und ein entsprechendes Passwort vergeben.
Wo genau liegt denn das Problem?
Gruß
Patrick
Hi,
vielen Dank für dieses nette Howto, hat mir viel Sucharbeit erspart. Jedoch ist mir ein relativ fieser Fehler aufgefallen.
In diesem Szenario ist es eine schlechte Idee update-rc.d zu verwenden bzw. ohne manuelles zutun zu verwenden. Beim Starten der Maschine gibts soweit keine Probleme, aber schau Dir mal ein Shutdown oder Restart an.
Dort wird ido2db (K50) und Icinga (K51) die MySQL Datenbank (default K21) unter dem hintern weg gerissen. Danach wird ido2db beendet und dann Icinga. Dürfte früher oder später Probleme bereiten, im worst case sogar eine inkonsistente Datenbank.
Besser wäre hier wenn erst icinga, dann ido2db und erst dann die Datenbank beendet werden würden. Muss natürlich manuell angepasst werden.
Mit freundlichem Gruß
Matthias
Hallo Matthias,
du hast natürlich vollkommend recht! Ich danke dir für den Hinweis auf dieses Problem.
Natürlich muss man nicht nur auf die richtige Reihenfolge beim Start der Dienste, sondern auch auf den Shutdown achten.
Ich habe das entsprechend im Artikel angepasst.
Danke und freundliche Grüße zurück
Patrick
Klasse, bis dato wusste ich nicht das update-rc.d dieses Problem lösen kann. Habs bisher immer per Hand gelösst… xD
Soviel zum Thema RTFM… 😉
Mit freundlichen Grüßen
Matthias
ja der 2. Wert beim update-rc.d legt die Reihenfolge für den Kill fest. So ist die Lösung am saubersten, und auch fix integriert.
Gruß
Patrick
Ich bekomme da aber eine Warnmeldung unter Debian 6:
update-rc.d icinga defaults 51 18
update-rc.d: using dependency based boot sequencing
update-rc.d: warning: icinga start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (3 4 5)
Bin leider nicht so der Linux-Crack :-/
Hallo Jens,
Die oben angeführte Anleitung ist für Debian Lenny gedacht. In Squeeze wurde init.d auf ein abhängigkeitsbasiertes System umgestellt.
folgender Befehl müsste aber dein Problem lösen:
update-rc.d icinga start 51 3 4 5 . stop 18 0 1 6
Ein entsprechend aktualisierter Guide für Squeeze und der neuesten Icinga Version wird noch kommen.
Gruß
Patrick
Hallo Patrick,
Ja das hat geklappt, vielen Dank. Wieso funktioniert der Aufruf bei der ido2db dann aber?
Gruß
Jens
Hallo Jens,
weil bei ido2db im start/stop Skript die entsprechenden Default Runlevels von Debian eingetragen sind (start: 2 3 4 5)
Und bei icinga wird folgender Wert verwendet. (start: 3 4 5)
Ich werde es mir selber noch genauer unter Squeeze ansehen. Habe mein derzeitiges Icinga Produktivsystem noch auf Debian Lenny.
Wie gesagt, Guide wird folgen 😉 Stay tuned.
Gruß
Patrick
Hallo Patrick,
Danke für die tolle Anleitung. Hattest du schon Zeit für den Squeeze Guide. Ich verwende ido2db und kenn mich leider nicht so gut aus.
Danke
Harald
Hallo Harald,
bin leider zur Zeit beruflich ziemlich eingespannt. Anleitung wird aber sobald wie möglich folgen.
Gruß
Patrick
Guten Tag.
Ich stehe da gerade vor einem kleinen Problem bei der Icinga Einrichtung.
Und zwar wollte ich die Konfigurationsdateien editieren:
vi /usr/local/icinga/etc/icinga.cfg
Allerdings existiert die ‚icinga.cfg‘ bei mir gar nicht. 🙁
Hab nun ein wenig gesucht, aber irgendwie nichts
gefunden, wie man diese Datei neu erstellen kann.
Achja, bin ziemlicher Neuling in Linux. 😉
Gruß
Christian
Hi,
ich denke, die richtige icinga.cfg sollte man sich aus den Sourcen noch rüberkopieren vor dem Editieren:
cp /usr/src/icinga-1.0.2/t/etc/icinga.cfg /usr/local/icinga/etc/icinga.cfg
Macht aber zunächst keinen Unterschied denke ich, da die hier enthaltenen Einstellungen wahrscheinlich eh als Standardwerte gesetzt sind.
Gruß.
Nils
hallo zusammen.
ich hatte den gleichen fehler….
habe nun auf debian 6 das mit -> update-rc.d icinga start 51 3 4 5 . stop 18 0 1 6 ausprobiert…
danach kommt die meldung: „using dependency based boot sequencing“
nach einem init 6 startet der icinga service jedoch trozdem nicht…
jemand ne idee=?
thanks
Hallo Misch,
du kannst das /etc/init.d/icinga Startsktipt editieren und am Beginn folgende Zeilen einfügen:
#!/bin/sh
#
# chkconfig: 345 99 01
# description: Icinga network monitor
### BEGIN INIT INFO
# Provides: icinga
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop Icinga monitoring daemon
# Description: Icinga is a service monitoring system
### END INIT INFO
Gruß
Patrick
Hallöchen,
habe bei mir mehrere Fehler – warum auch immer -, einmal kann die resource.cfg nicht gefunden werden, nachdem ich sie dann mit cp in /usr/local/icinga/etc kopiert habe und in der icinga.cfg den Pfad von ‚etc/resource.cfg‘ auf ‚resource.cfg‘ aendere, ist der Fehler zumindest schonmal beseitigt.
Dann das gleiche Spiel nochmal mit der minimal.cfg und der cgi.cfg – ist aber per cp auch beseitigt.
Nun steh ich vor diesem Fehler: http://hochladen.tv/daten/1330520605_unbenannt.png
Dort weiss ich einfach nicht weiter, habe schon die erforderlichen Rechte in /usr/local/icinga/etc auf die icinga.cfg neu gesetzt, aber bringen tut das leider auch nichts.
Ist vermutlich irgend ne Kleinigkeit aber ich finds einfach nicht :-/
Grüße
Moritz
War mal wieder ein wenig vorschnell und habe mir nun selbst geholfen.
‚make install-config‘ scheint im ‚make fullinstall‘ nicht mit enthalten zu sein – das muss zusätzlich durchgeführt werden.
Danke trotzdem! 🙂
Grüße