Icinga

2.4. Icinga-Schnellstart auf Linux

2.4.1. Einführung
2.4.2. Voraussetzungen
2.4.3. Installation der Pakete
2.4.4. Benutzerinformationen erstellen
2.4.5. Icinga und die Plugins herunterladen
2.4.6. Icinga kompilieren und installieren
2.4.7. Anpassen der Konfiguration
2.4.8. Installieren und konfigurieren des klassischen Web-Interface
2.4.9. Kompilieren und installieren der Monitoring Plugins
2.4.10. Anpassen der SELinux-Einstellungen
2.4.11. Icinga starten
2.4.12. Anmelden am klassischen Web-Interface
2.4.13. Andere Anpassungen
2.4.14. Fertig

2.4.1. Einführung

[Anmerkung] Anmerkung

Anstatt Icinga von Grund auf zu installieren möchten Sie vielleicht ein Paket benutzen, das es möglicherweise für Ihr Betriebssystem gibt. Bitte werfen Sie einen Blick auf die Tabelle der Pakete.

Bitte bedenken Sie, dass die Upstream-Pakete evtl. relativ alt sind, so dass die Verwendung von Backports-Paketen ein Weg ist, eine aktuelle Version zu bekommen.

Falls Sie aus den Sourcen installieren möchten, dann benutzen Sie bitte die offiziellen Release-Tarballs.

[Wichtig] Wichtig

Bitte benutzen Sie keine GIT-Snapshots, solange Sie kein Problem haben, das in der aktuellen Entwicklerversion ggf. gelöst ist.

Diese Schnellstartanleitung ist dazu gedacht, Ihnen einfache Anweisungen zu liefern, wie Sie Icinga innerhalb von 20 Minuten aus dem Quellcode installieren und Ihren lokalen Rechner damit überwachen.

Hier werden keine fortgeschrittenen Installationsoptionen vorgestellt - lediglich die Grundlagen, die für 95% aller Benutzer funktionieren, die anfangen wollen.

Diese Anleitung enthält momentan Anweisungen für drei verschiedene Linux-Distributionen: Fedora, Ubuntu and openSuSE. Ähnliche Distributionen werden wahrscheinlich auch funktionieren, darunter RedHat, CentOS, Debian und SLES.

[Wichtig] Wichtig

Wenn Sie planen, eine Datenbank zusammen mit IDOUtils zu nutzen oder wenn Sie das neue Web-Interface einsetzen möchten, dann lesen Sie statt dessen die Schnellstartanleitung mit IDOUtils!

Was dabei herauskommt

Wenn Sie diesen Anweisungen folgen, werden Sie am Ende folgendes haben:

2.4.2. Voraussetzungen

Während einiger Teile der Installation benötigen Sie root-Zugang zu Ihrer Maschine.

Stellen Sie sicher, dass die folgenden Pakete installiert sind, bevor Sie fortfahren.

Optional

Zu irgendeiner Zeit möchten Sie wahrscheinlich SNMP-basierte Prüfungen verwenden, so dass es eine gute Idee ist, die benötigten Pakete gleich zu installieren. Anderenfalls werden die Plugins nicht kompiliert und sind nicht verfügbar, wenn Sie diese brauchen.

2.4.3. Installation der Pakete

Sie können diese Pakete mit Hilfe der folgenden Befehle installieren (als root oder mit sudo).

[Anmerkung] Anmerkung

Unglücklicherweise ändern sich manchmal die Paketnamen zwischen verschiedenen Ausgaben der gleichen Distribution, so dass Sie die Suchoption Ihres Paket-Managers nutzen sollten, falls Sie die Fehlermeldung bekommen, dass eins der Pakete nicht gefunden wurde.

  • yum search <package name> ( Fedora/RHEL/CentOS )

  • apt-cache search <package name> ( Debian/Ubuntu )

  • zypper search <package name> ( openSuSE/SLES )

Fedora / RedHat / CentOS

 #> yum install httpd gcc glibc glibc-common gd gd-devel
 #> yum install libjpeg libjpeg-devel libpng libpng-devel
 #> yum install net-snmp net-snmp-devel net-snmp-utils
[Anmerkung] Anmerkung

ggf. sind libjpeg-turbo bzw. libjpeg-turbo-devel zu installieren

Debian / Ubuntu

 #> apt-get install apache2 build-essential libgd2-xpm-dev
 #> apt-get install libjpeg62 libjpeg62-dev libpng12 libpng12-dev
 #> apt-get install snmp libsnmp5-dev
[Anmerkung] Anmerkung

Die Zahlen <62/12> können je nach Distribution abweichen.

[Anmerkung] Anmerkung

Ab Debian 6.0/Ubuntu 10.10 heißt das Paket libpng12-0, der Name des dev-Pakets ändert sich nicht.

openSuSE / SLES

Bitte nutzen Sie YaST für die Installation der Pakete gd, gd-devel, libjpeg, libjpeg-devel, libpng, libpng-devel und -optional- net-snmp, net-snmp-devel und perl-Net-SNMP.

Die Nutzung von zypper sollte ebenfalls funktionieren:

 #> zypper install gd gd-devel libjpeg libjpeg-devel libpng libpng-devel
 #> zypper install net-snmp net-snmp-devel perl-Net-SNMP
[Anmerkung] Anmerkung

Abhängig von der Softwareauswahl bei der Installation des Betriebssystems benötigen Sie evtl. weitere Pakete (z.B. apache2, gcc). Die devel-Pakete sind ggf. auf den SDK-DVDs zu finden.

2.4.4. Benutzerinformationen erstellen

Werden Sie zum root-Benutzer.

 $> su -l

Erstellen Sie ein neues Benutzerkonto icinga und vergeben Sie ein Passwort:

 #> /usr/sbin/useradd -m icinga
 #> passwd icinga  

Bei einigen Distributionen müssen Sie die Gruppe in einem gesonderten Schritt anlegen:

 #> /usr/sbin/groupadd icinga

Damit Sie über das klassische Web-Interface Befehle an Icinga senden können, legen Sie noch eine neue Gruppe icinga-cmd an und fügen Sie den Webbenutzer und den Icingabenutzer dieser Gruppe hinzu.

 #> /usr/sbin/groupadd icinga-cmd
 #> /usr/sbin/usermod -a -G icinga-cmd icinga
 #> /usr/sbin/usermod -a -G icinga-cmd www-data

(oder www, wwwrun, apache je nach Distribution)

[Anmerkung] Anmerkung

Bei einigen usermod-Versionen (z.B. bei OpenSuSE 11 bzw. SLES 11) fehlt die Option -a. In diesen Fällen kann sie entfallen.

[Anmerkung] Anmerkung

Solaris unterstützt nur Gruppennamen bis max. 8 Zeichen, verwenden Sie icingcmd anstelle von icinga-cmd.

2.4.5. Icinga und die Plugins herunterladen

Wechseln Sie in Ihr lokales Source-Verzeichnis, z.B. /usr/src

 #> cd /usr/src

Laden Sie die Sourcen von der Icinga Website.

Vergessen Sie nicht die Monitoring Plugins.

2.4.6. Icinga kompilieren und installieren

Entpacken Sie das Icinga-Archiv (oder wechseln Sie in den GIT Snapshot)

 #> cd /usr/src/
 #> tar xvzf icinga-1.14.tar.gz
 #> cd icinga-1.14

Führen Sie das Icinga-configure-Script aus. Durch die Nutzung des --help-Flags erhalten Sie Hilfe zu den Optionen.

[Anmerkung] Anmerkung

Beginnend mit Icinga 1.9 hat sich der Default geändert, so dass Sie die Kompilation der IDOUtils explizit verhindern müssen.

 #> ./configure --with-command-group=icinga-cmd --disable-idoutils
[Anmerkung] Anmerkung

Beginnend mit Apache 2.4 hat sich der Standard-Konfigurationsordner von /etc/apache2/conf.d in /etc/apache2/conf-available geändert, so dass Sie abhängig von Ihrer Distribution (testing-versionen von Debian / Ubuntu) dem Aufruf von configure diese Option hinzufügen müssen

#> ./configure --with-httpd-conf=/etc/apache2/conf-available

Aktuelle/kommende Distributionen (RedHat/CentOS 7, Fedora 20, Debian 8/Jessie, Gentoo, etc.) unterstützendie Nutzung von systemd statt des SysVinit Systems.

Icinga 1.x enthält bereits die notwendigen Patches mit den erforderlichen systemd-Dateien und die RPMs installieren sie ebenfalls. Die Source-Installation erfordert ggf. etwa folgendes

#> ./configure [...] --with-systemd-unit-dir=/usr/lib/systemd/system --with-systemd-sysconfig-dir=/etc/sysconfig
#> make install-systemd

Dann aktivieren Sie den systemd-Service und starten Icinga

#> systemctl enable icinga
#> systemctl start icinga

Status

#> systemctl status icinga
[Anmerkung] Anmerkung
Es gibt für systemd keine Unterstützung für den "checkconfig/show-errors"-Parameter, wie es für SysVinit der Fall ist.

Kompilieren Sie den Icinga-Source-Code. Um mögliche Optionen zu sehen, rufen Sie lediglich "make" auf.

 #> make all

Installieren Sie die Binaries, das Init-Script, Beispiel-Konfigurationsdateien, Beispiel-Eventhandler und setzen Sie die Berechtigungen für das External-Command-Verzeichnis.

 #> make install
 #> make install-init
 #> make install-config
 #> make install-eventhandlers
 #> make install-commandmode 

oder kürzer

 #> make fullinstall
 #> make install-config
[Anmerkung] Anmerkung

make install-config ist NICHT mehr in make fullinstall enthalten, um ein versehentliches Überschreiben der Konfigurationsdateien zu verhindern.

[Anmerkung] Anmerkung

Mit make install-eventhandlers werden einige Beispiel-Eventhandler installiert. Das ist lediglich in make fullinstall enthalten, um ein versehentliches Überschreiben der Dateien zu verhindern.

Die Icinga-API wird beim Aufruf von "make install" installiert, wenn Sie nur die Icinga-API (nach)installieren möchten, nutzen Sie:

 # make install-api

Die Icinga-API ist Voraussetzung für das Icinga-Web-Interface (nicht für die klassische Ansicht!).

Bitte starten Sie Icinga noch nicht - es gibt noch ein paar Dinge zu tun...

2.4.7. Anpassen der Konfiguration

Beispiel-Konfigurationsdateien werden durch

 #> make install-config

in /usr/local/icinga/etc/ installiert. Nun fehlt nur noch eine Änderung, bevor Sie fortfahren können...

Ändern Sie die /usr/local/icinga/etc/objects/contacts.cfg-Konfigurationsdatei mit Ihrem bevorzugten Editor und passen die e-Mail-Adresse in der icingaadmin-Kontaktdefinition an, so dass sie die Adresse enthält, die im Falle von Alarmen benachrichtigt werden soll.

 #> vi /usr/local/icinga/etc/objects/contacts.cfg

2.4.8. Installieren und konfigurieren des klassischen Web-Interface

Icinga stellt das klassische Webinterface zur Verfügung ("Classic Web", "die CGIs"). Sie können dieses wie folgt installieren:

 #> make cgis
 #> make install-cgis
 #> make install-html

Wenn Sie (zusätzlich) das neue Icinga Web installieren wollen, lesen Sie bitte Installation des Web-Interface.

Installieren Sie die Icinga-Web-Konfigurationsdatei im Apache conf.d-Verzeichnis (bzw. conf-available ab Apache 2.4).

 #> make install-webconf
[Anmerkung] Anmerkung

Ab Icinga 1.9 installiert der Befehl 'make install-webconf-auth' zusätzlich die Datei htpasswd.users, die Anmeldeinformationen für den Benutzer icingaadmin enthält, so dass Sie den nächsten Schritt überspringen können. Das Passwort lautet icingaadmin.

[Anmerkung] Anmerkung

Beginnend mit Apache 2.4 (testing-Versionen von Debian / Ubuntu) müssen Sie die Konfiguration aktivieren

#> a2enconf icinga

Tun Sie das für das CGI-Modul

#> a2enmod cgi

Legen Sie ein icingaadmin-Konto an, um sich am klassischen Web-Interface anmelden zu können. Merken Sie sich das Passwort, das Sie diesem Konto geben - Sie brauchen es später.

 #> htpasswd -c /usr/local/icinga/etc/htpasswd.users icingaadmin
[Anmerkung] Anmerkung

Abhängig von der Apache-Version müssen Sie ggf. htpasswd2 verwenden.

Wenn Sie das Passwort später ändern oder einen weiteren Benutzer hinzufügen möchten, verwenden Sie den folgenden Befehl:

 #> htpasswd /usr/local/icinga/etc/htpasswd.users <USERNAME>

Starten Sie Apache neu, damit die Änderungen wirksam werden.

Fedora/RedHat/CentOS

 #> service httpd restart

Debian / Ubuntu / openSuSE

 #> /etc/init.d/apache2 reload
[Anmerkung] Anmerkung

Prüfen Sie die Implementierung der verbesserten CGI-Sicherheitsmaßnahmen wie hier beschrieben, um sicherzustellen, dass Ihre Web-Authentifizierungsinformationen nicht kompromittiert werden.

2.4.9. Kompilieren und installieren der Monitoring Plugins

Entpacken Sie die Monitoring Plugins-Quellcode-Archivdatei.

 #> cd /usr/src
 #> tar xzf nagios-plugins-2.1.tar.gz
 #> cd nagios-plugins-2.1

Kompilieren und installieren Sie die Plugins.

 #> ./configure --prefix=/usr/local/icinga \
    --with-cgiurl=/icinga/cgi-bin \
    --with-nagios-user=icinga --with-nagios-group=icinga
 #> make
 #> make install

2.4.10. Anpassen der SELinux-Einstellungen

RHEL und ähnliche Distributionen wie Fedora oder CentOS werden mit installiertem SELinux (Security Enhanced Linux) ausgeliefert und laufen im "Enforcing"-Modus. Dies kann zu "Internal Server Error"-Fehlern führen, wenn Sie versuchen, die Icinga-CGIs aufzurufen.

Schauen Sie, ob SELinux im Enforcing-Modus läuft.

 #> getenforce

Setzen Sie SELinux in den "Permissive"-Modus.

 #> setenforce 0

Damit diese Änderung dauerhaft wird, müssen Sie diese Einstellung in /etc/selinux/config anpassen und das System neustarten.

Statt SELinux zu deaktivieren oder es in den Permissive-Modus zu versetzen, können Sie den folgenden Befehl benutzen, um die CGIs im Enforcing/Targeted-Modus laufen zu lassen. Der semanage-Befehl wird automatisch Einträge in die Datei /etc/selinux/targeted/contexts/files/file_contexts.local einfügen:

 #> semanage fcontext -a -t httpd_sys_script_exec_t '/usr/local/icinga/sbin(/.*)?'
 #> semanage fcontext -a -t httpd_sys_content_t '/usr/local/icinga/share(/.*)?'
 #> semanage fcontext -a -t httpd_sys_rw_content_t '/usr/local/icinga/var(/.*)?'

Sobald Sie die notwendigen Kontexte definiert haben, müssen die Einträge aktiviert werden.

 #> chcon -R /usr/local/icinga/sbin
 #> chcon -R /usr/local/icinga/share
 #> chcon -R /usr/local/icinga/var

Einzelheiten finden Sie unter http://www.linuxquestions.org/questions/blog/sag47-492023/selinux-and-icinga-34926/ (englisch).

2.4.11. Icinga starten

Fügen Sie Icinga zu der Liste der System-Services hinzu und sorgen Sie für einen automatischen Start, wenn das System hochfährt (stellen Sie sicher, dass Sie vorher das Init-Script installiert haben).

Fedora / RedHat / CentOS / openSuSE

 #> chkconfig --add icinga 
 #> chkconfig icinga on 

Debian / Ubuntu

 #> update-rc.d icinga defaults

Überprüfen Sie die Icinga-Beispielkonfigurationsdateien.

 #> /usr/local/icinga/bin/icinga -v /usr/local/icinga/etc/icinga.cfg

Anstatt die Pfade für das Binary und die Konfigurationsdatei anzugeben können Sie auch den folgenden Befehl eingeben:

 #> /etc/init.d/icinga show-errors

Die Ausführung ergibt einen OK-Meldung, wenn alles in Ordnung ist, oder eine Reihe von Zeilen, die zeigen, wo der/die Fehler zu finden sind.

Wenn es dabei keine Fehler gibt, starten Sie Icinga.

Fedora / openSuSE

 #> service icinga start

Debian / Ubuntu

 #> /etc/init.d/icinga start

2.4.12. Anmelden am klassischen Web-Interface

Sie sollten nun auf das klassische Icinga-Web-Interface zugreifen können. Sie werden nach dem Benutzernamen (icingaadmin) und Passwort gefragt, das Sie vorhin angegeben haben.

 http://localhost/icinga/

oder

 http://yourdomain.com/icinga/

Klicken Sie auf den "Service Detail"-Verweis in der Navigationsleiste, um Details darüber zu erhalten, was auf Ihrer lokalen Maschine überwacht wird. Es wird ein paar Minuten dauern, bis Icinga alle mit Ihrer Maschine verbundenen Services geprüft hat, weil die Prüfungen über eine gewisse Zeit verteilt werden.

2.4.13. Andere Anpassungen

Stellen Sie sicher, dass die Firewall-Einstellungen Ihrer Maschine einen Zugriff auf das klassische Web-Interface ermöglichen, wenn Sie von anderen Rechnern darauf zugreifen wollen.

 #> iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Die Konfiguration von e-Mail-Benachrichtigungen ist nicht Gegenstand dieser Anleitung. Icinga ist konfiguriert, um e-Mail-Benachrichtigungen zu versenden, aber möglicherweise ist auf Ihrem System noch kein Mail-Programm installiert bzw. konfiguriert. Schauen Sie in Ihre Systemdokumentation oder suchen Sie im Web nach genauen Anweisungen, wie Ihr System konfiguriert werden muss, damit es e-Mail-Mitteilungen an externe Adressen versendet. Mehr Informationen zu Benachrichtigungen finden Sie hier.

2.4.14. Fertig

Glückwunsch! Sie haben erfolgreich Icinga installiert. Ihre Reise in die Überwachung hat gerade begonnen. Sie werden ohne Zweifel mehr als nur Ihre lokale Maschine überwachen wollen, so dass Sie u.a. das folgende Kapitel lesen sollten...