Icinga

Icinga-Schnellstart mit IDOUtils

Einführung

Diese Schnellstartanleitung ist dazu gedacht, Ihnen einfache Anweisungen zu liefern, wie Sie Icinga innerhalb von 30 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 Anweisungen für drei verschiedene Linux-Distributionen: Fedora, Ubuntu und openSuSE. Ähnliche Distributionen werden wahrscheinlich auch funktionieren, darunter RedHat, CentOS, Debian und SLES.

Wenn Sie planen, Icinga OHNE IDOUtils zu nutzen, dann lesen Sie statt dessen „Icinga-Schnellstart auf Linux“!

Was dabei herauskommt

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

Voraussetzungen

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

IDOUtils benutzt die libdbi und die libdbi-Treiber für verschiedene Datenbanken. Die Development-Libraries werden ebenfalls benötigt. Die folgenden Beispiele zeigen, wie die IDOUtils mit libdbi für MySQL oder PostgreSQL installiert werden.

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

Neue Features für die IDOUtils:

SSL-Verschlüsselung zwischen idomod und ido2db

Wenn Sie SSL-Verschlüsselung verwenden möchten, werden zusätzlich die Pakete openssl und openssl-devel/libssl-dev benötigt!

[Anmerkung] Anmerkung

SSL muss auch bei allen idomod-Clients aktiviert werden, sonst gehen Daten verloren!!!

Oracle-Datenbankunterstützung

Wenn Sie Oracle als RDBMS einsetzen möchten, müssen Sie installieren:

Stellen Sie sicher, dass die Libraries in der Path-Variablen enthalten sind. Oder setzen Sie die den Oracle Library Path mit --with-oracle-lib=/path/to/instantclient

Download des ocilib-Treiber von http://orclib.sourceforge.net/ und verweisen Sie beim configure auf Ihre Oracle-Libraries und die Header-Files, z.B. die des Oracle Instant-Client:

 #> ./configure --with-oracle-headers-path=/path/to/instantclient/sdk/include --with-oracle-lib-path=/path/to/instantclient/
 #> make
 #> make install

Installation der Pakete

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

Fedora / RedHat / CentOS:

 #> yum install httpd gcc glibc glibc-common gd gd-devel
 #> yum install libjpeg libjpeg-devel libpng libpng-devel

MySQL:

 #> yum install mysql mysql-server libdbi libdbi-devel libdbi-drivers libdbi-dbd-mysql

PostgreSQL:

 #> yum install postgresql postgresql-server libdbi libdbi-devel libdbi-drivers libdbi-dbd-pgsql

Debian / Ubuntu:

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

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

MySQL:

 #> apt-get install mysql-server mysql-client libdbi0 libdbi0-dev libdbd-mysql

PostgreSQL:

 #> apt-get install postgresql libdbi0 libdbi0-dev libdbd-pgsql

openSuSE:

Benutzen Sie yast zur Installation der Pakete für das RDBMS, das Sie verwenden möchten, also "mysql", "mysql-devel" und "mysql-client" bzw. "postgresql", "postgresql-devel" und "postgresql-server". Bei OpenSuSE 11 (SLES 11) lautet der Name des Packages statt "mysql-devel" nun "libmysqlclient-devel".

Es ist ziemlich wahrscheinlich, dass es keine libdbi-Packages gibt, so dass Sie die Sourcen herunterladen und kompilieren müssen. Ersetzen Sie dabei <rdbm> durch Ihr RDBM wie mysql oder pgsql. Bitte beachten Sie, dass der Oracle-Treiber noch nicht funktioniert. Lesen Sie daher den entsprechenden Abschnitt zu ocilib (anstatt libdbi).

  1. Laden Sie die tar.gz-Dateien herunter und entpacken Sie diese

    http://libdbi.sourceforge.net/download.html

    http://libdbi-drivers.sourceforge.net/download.html

     #> tar xvzf libdbi-0.8.3.tar.gz
     #> tar xvzf libdbi-drivers-0.8.3-1.tar.gz
  2. Installieren Sie die libdbi. Möglicherweise brauchen Sie beim configure weitere Optionen (set --prefix=/usr ... )

     #> cd libdbi-0.8.3
     #> ./configure --disable-docs
     #> make
     #> make install
  3. Installieren Sie die libdbi-Treiber

     #> cd libdbi-drivers-0.8.3-1
     #> ./configure --with-<rdbm> --disable-docs
     #> make
     #> make install
    [Anmerkung] Anmerkung

    Bei den 64-bit-Versionen müssen Sie die Pfade zu den include- und lib-dir-Verzeichnissen explizit angeben:

     #> ./configure --with-<rdbm> --with-<rdbm>-incdir=/usr/include/<rdbm>/ --with-<rdbm>-libdir=/usr/lib64/ --disable-docs

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. 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.

Icinga und die Plugins herunterladen

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

 #> cd /usr/src

Holen Sie den aktuellen icinga-core-Snapshot aus dem Icinga GIT

 #> git clone git://git.icinga.org/icinga-core.git

oder von der Icinga-Website.

Vergessen Sie nicht die Nagios Plugins.

Icinga und die IDOUtils kompilieren und installieren

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

 #> cd /usr/src/ 
 #> tar xvzf icinga-1.0.3.tar.gz 
 #> cd icinga-1.0.3
[Anmerkung] Anmerkung

Dieser absolute Pfad ist gemeint, wenn im Nachfolgenden von '/path/to/icinga-src/' die Rede ist.

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

 #> ./configure --with-command-group=icinga-cmd --enable-idoutils
[Achtung] Achtung

Das Kompilieren auf Solaris kann wegen unerfüllten Bibliotheksabhängigkeiten von gethostbyname fehlschlagen. Wenn dies der Fall ist, führen Sie folgenden Befehl vor configure aus:

 #> export LIBS=-lsocket -lnsl

Mit SSL-Verschlüsselung:

 #> ./configure --with-command-group=icinga-cmd --enable-idoutils --enable-ssl

Mit Oracle-Datenbankunterstützung:

 #> ./configure --with-command-group=icinga-cmd --enable-idoutils --enable-oracle

Wenn Ihre Oracle Libraries nicht in der Path-Variablen enthalten sind, können Sie sie im configure angeben:

 #> ./configure --with-command-group=icinga-cmd --enable-idoutils --enable-oracle \
 --with-oracle-lib=/path/to/instantclient

Wenn Sie die ocilib nicht im Standardpfad (/usr/local) installiert haben, können Sie configure die lib/inc Verzeichnisse angeben:

 #> ./configure --with-command-group=icinga-cmd --enable-idoutils --enable-oracle \
 --with-ocilib-lib=/path/to/ocilib/lib --with-ocilib-inc=/path/to/ocilib/include

[Anmerkung] Anmerkung

Wenn Sie von einer Oracle-Datenbank auf ein anderes RDBMS wechseln möchten, dann müssen Sie die IDOUtils erneut kompilieren und installieren!

 #> make distclean
 #> ./configure --enable-idoutils

Kompilieren / Installieren

Kompilieren Sie den Icinga-Source-Code. Es gibt auch eine extra Option für IDOUtils (make idoutils), wenn Sie nur dieses Module erneut kompilieren möchten. Um mögliche Optionen zu sehen, rufen Sie lediglich "make" auf.

 #> make all

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

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

oder kürzer

 #> make fullinstall

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...

Anpassen der Konfiguration

Beispiel-Konfigurationsdateien werden durch

 #> make install-config

in /usr/local/icinga/etc/ installiert.

Ä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
 #> cd /usr/local/icinga/etc
 #> mv idomod.cfg-sample idomod.cfg
 #> mv ido2db.cfg-sample ido2db.cfg

Wenn Sie die IDOUtils mit ssl kompiliert haben, aktivieren Sie ssl in der idomod.cfg mit

 use_ssl=1
 output_type=tcpsocket
 output=127.0.0.1

(Passen Sie die IP-Adresse an, wenn sich Ihre Datenbank nicht auf localhost befindet!) und der ido2db.cfg mit

 use_ssl=1
 socket_type=tcp 
[Anmerkung] Anmerkung

Vergessen Sie nicht, alle anderen idomod-Clients auch neu zu kompilieren und auf ssl umzustellen, anderenfalls werden Sie Daten verlieren!!!

Aktivieren Sie das idomod-Eventbroker-Modul. Editieren Sie /usr/local/icinga/etc/icinga.cfg und suchen Sie nach "broker_module" und aktivieren Sie diese Zeile bzw. fügen Sie die folgende Zeile hinzu (passen Sie die Namen an, falls nötig).

 broker_module=/usr/local/icinga/bin/idomod.o config_file=/usr/local/icinga/etc/idomod.cfg

Konfigurieren von Datenbank und IDOUtils

[Anmerkung] Anmerkung

Wenn Sie wie weiter oben beschrieben das Datenbanksystem neu installiert haben, dann müssen Sie den Datenbank-Server starten, bevor Sie eine Datenbank anlegen können. Im Falle von MySQL erfolgt der Start z.B. mit /etc/init.d/mysql start.

MySQL:

Anlegen von Datenbank, Benutzer und Berechtigungen

[Anmerkung] Anmerkung

Falls Sie gerade ein neues Datenbanksystem installiert haben, dann müssen Sie den Datenbank-Server-Prozess starten, bevor Sie eine Datenbank anlegen können. Im Falle von MySQL benutzen Sie /etc/init.d/mysqld start.

 #> mysql -u root -p
  
 mysql> CREATE DATABASE icinga;
  
 GRANT USAGE ON *.* TO 'icinga'@'localhost' IDENTIFIED BY 'icinga' 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
 #> cd /path/to/icinga-src/module/idoutils/db/mysql
 #> mysql -u root -p icinga < mysql.sql
 #> vi /usr/local/icinga/etc/ido2db.cfg
  
 db_servertype=mysql
 db_port=3306
 db_user=icinga
 db_pass=icinga

PostgreSQL:

Anlegen von Datenbank und Benutzer

 #> su - postgres
  $psql
  postgres=# CREATE USER icinga;
  postgres=# ALTER USER icinga WITH PASSWORD 'icinga';
  postgres=# CREATE DATABASE icinga;

Debian:

 #> vi /etc/postgresql/8.x/main/pg_hba.conf

Fedora / RedHat / CentOS:

 #> vi /var/lib/pgsql/data/pg_hba.conf

Editieren Sie die Konfiguration z.B. wie folgt (dem lokalen Benutzer muss vertraut werden)

 # database administrative login by UNIX sockets
 local    all        postgres                  ident
 # TYPE   DATABASE   USER       CIDR-ADDRESS   METHOD 
 #icinga
 local    icinga     icinga                    trust
 # "local" is for Unix domain socket connections only
 local    all        all                       trust
 # IPv4 local connections
 local    all        all        127.0.0.1/32   trust
 # IPV6 local connections
 local    all        all        ::1/128        trust

Neuladen und konfigurieren des Datenbankschemas

 #> /etc/init.d/postgresql-8.x reload
 #> cd /path/to/icinga-src/module/idoutils/db/pgsql/
 #> psql -U icinga -d icinga < pgsql.sql

Editieren der DB-Konfigurationsdatei, um die IDOUtils anzupassen

 #> vi /usr/local/icinga/etc/ido2db.cfg
 db_servertype=pgsql
 db_port=5432
 db_user=icinga
 db_pass=icinga

Oracle:

Erstellen Sie ein Datenbank-Schema und eine username/password-Kombination (lesen Sie dazu die Oracle-Dokumentation unter http://www.oracle.com oder fragen Sie Ihren DBA). Importieren Sie das Datenbank-Schema mit sqlplus (oder Ihrer bevorzugten Methode). Kopieren Sie module/idoutils/db/oracle/oracle.sql nach $ORACLE_HOME

 #> su - oracle
 $ sqlplus dbuser/dbpass
 SQL> @oracle.sql

Editieren Sie das DB-Config-File, um die IDOUtils anzupassen. Denken Sie daran, dass Oracle den DB-Host ignoriert, nutzen Sie statt dessen db_name, um auf //DBSERVER/DBNAME zu verweisen

 #> vi /usr/local/icinga/etc/ido2db.cfg
  db_servertype=oracle
  db_port=1521
  db_user=icinga
  db_pass=icinga

Installieren und konfigurieren des klassischen Web-Interface

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

 #> cd /path/to/icinga-src
 #> make cgis
 #> make install-cgis
 #> make install-html

Wenn Sie stattdessen das neue Icinga Web installieren wollen, lesen Sie bitte Installation des Web-Interface.

Installieren Sie die Icinga-Web-Konfigurationsdatei im Apache conf.d-Verzeichnis.

 #> cd /path/to/icinga-src
 #> make install-webconf

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 / RHEL / CentOS:

 #> service httpd restart

Ubuntu / openSuSE:

 #> service apache2 restart

Debian:

 #> /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.

Kompilieren und installieren der Nagios-Plugins

Entpacken Sie die Nagios-Plugins-Quellcode-Archivdatei.

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

Kompilieren und installieren Sie die Plugins.

 #> ./configure --prefix=/usr/local/icinga --with-nagios-user=icinga
 #> make
 #> make install

IDOUtils und Icinga starten

IDOUtils muss vor Icinga gestartet werden

IDOUtils starten

Fedora / openSuSE/Ubuntu:

 #> service ido2db start

Debian:

 #> /etc/init.d/ido2db start 

IDOUtils beenden

Fedora / openSuSE/Ubuntu:

 #> service ido2db stop

Debian:

 #> /etc/init.d/ido2db stop

Automatischer Start von IDOUtils

Fügen Sie IDOUtils 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 / openSuSE:

 #> chkconfig --add ido2db
 #> chkconfig ido2db on 

Debian / Ubuntu:

 #> update-rc.d ido2db defaults

Icinga starten:

Start von Icinga

Überprüfen Sie die Icinga-Beispielkonfigurationsdateien.

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

Wenn es dabei keine Fehler gibt, starten Sie Icinga.

Fedora / openSuSE/Ubuntu:

 #> service icinga start

Debian:

 #> /etc/init.d/icinga start

Automatischer Start von Icinga

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 / openSuSE:

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

Debian / Ubuntu:

 #> update-rc.d icinga defaults

Anpassen der SELinux-Einstellungen

Fedora wird mit installiertem SELinux (Security Enhanced Linux) ausgeliefert und läuft 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:

 #> chcon -R -t httpd_sys_content_t /usr/local/icinga/sbin/
 #> chcon -R -t httpd_sys_content_t /usr/local/icinga/share/

Besuchen Sie das NagiosCommunity.org-Wiki unter http://www.nagioscommunity.org/wiki, um Informationen darüber zu erhalten, wie die Icinga-CGIs im Enforcing-Modus mit einer Targeted-Richtlinie ausgeführt werden.

Anmelden am klassischen Web-Interface

Sie sollten nun auf das klassische Icinga-Web-Interface zugreifen können. Sie werden nach dem Benutzernamen (nagiosadmin) 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.

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, suchen Sie im Web oder gucken Sie im NagiosCommunity.org-Wiki 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

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...