Der ursprüngliche Artikel entstand Mitte 2015 und wurde bereits mehrfach überarbeitet und angepasst; statt das nun wieder zu tun mache ich lieber eine neue Version des Artikels, um die Übersicht ein wenig zu wahren. In diesem Artikel hier skizziere ich euch Installation und Inbetriebnahme von Icinga 2 und Icinga Web 2 unter Debian 9 („stretch“).

Einbindung der Icinga 2-Paketquelle

Um Icinga 2 auf mein Debian zu bringen, fügen wir zuerst die Paketquellen hinzu.

## /etc/apt/sources.list.d/icinga2.list
deb http://packages.icinga.com/debian icinga-stretch main
deb-src http://packages.icinga.com/debian icinga-stretch main

Anschließend müssen wir den korrekten Schlüssel hinterlegen und können dann die eigentliche Installation von Icinga 2 vornehmen.

$ wget -O - http://packages.icinga.com/icinga.key | apt-key add -
...
OK
$ apt-get update
$ apt-get install icinga2

Installation von icinga2-ido-mysql

Damit ist Icinga 2 schonmal installiert; auch wenn wir alle irgendwie auf die IcingaDB warten – noch ist es nicht so weit, also brauchen wir als nächstes icinga2-ido-mysql. Der Installer fragt, ob er eine entsprechende Datenbank anlegen soll, und: ja, das soll er – nennen wir sie einfach mal icinga2. Die Zugangsdaten zu dieser IDO-Verbindung finden sich übrigens fortan in /etc/icinga2/features-enabled/ido-mysql.conf – für den Fall, dass das Passwort mal benötigt werden sollte zum Beispiel. Anyway: jetzt wird installiert, aktiviert und der Service anschließend durchgestartet. Außerdem benötigen wir die check commands, also installieren wir die in diesem Zuge gleich mit.

$ apt-get -y --no-install-recommends install nagios-nrpe-plugin nagios-plugins-basic nagios-plugins-common nagios-plugins-contrib
$ apt-get -y install mariadb-server icinga2 icinga2-ido-mysql
$ icinga2 feature enable command
$ icinga2 feature disable notification
$ service icinga2 restart
$ icinga2 feature list
Disabled features: api compatlog debuglog gelf graphite influxdb livestatus opentsdb perfdata statusdata syslog notification
Enabled features: checker command ido-mysql mainlog

Um die Notifications kümmere ich mich klassischerweise zum Schluss erst, in Testsystemen deaktiviere ich sie vollständig; auch hier sorgen wir erstmal für Ruhe, wir müssen uns vorerst auf anderes konzentrieren.

Installation von Icinga Web 2

Inzwischen gibt es auch hübsche Pakete für Icinga Web 2. Das ist sehr praktisch und erspart einem doch so einiges an Arbeit: so zieht der Installationsaufruf auch apache2 nach sowie PHP, beide dringend benötigt.

$ apt-get install icingaweb2 php-imagick php-intl php-gd

Für PHP stellen wir gleich mal noch die korrekte Zeitzone ein:

## vim /etc/php/7.0/apache2/php.ini
...
[Date]
date.timezone = "Europe/Berlin"
...

Icinga Web 2 benötigt eine apache2-Konfiguration: diese müssen wir erzeugen, an die richtige Stelle packen und aktivieren, und das tun wir folgendermaßen:

$ cd /etc/apache2/sites-available
$ /usr/bin/icingacli setup config webserver apache --document-root /usr/share/icingaweb2/public > icingaweb2.conf
$ a2ensite icingaweb2.conf
$ a2enmod rewrite
$ service apache2 restart

Ab diesem Punkt können wir nun über das Webinterface arbeiten:

Token erstellen und Icinga Web 2 konfigurieren

Bevor wir so richtig loslegen, müssen wir einen User anlegen und eine Datenbank, auf welche der User zugriffsberechtigt ist.

MariaDB [mysql]> CREATE DATABASE icingaweb2;
Query OK, 1 row affected (0.00 sec)

MariaDB [mysql]> GRANT ALL ON icingaweb2.* TO icingaweb2@localhost IDENTIFIED BY '03HH2aDKI2Qc';
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

Der erste Schritt des Setup Wizard wird ein Configuration Token erfragen, deshalb erzeugen wird es direkt:

$ icingacli setup config directory --group icingaweb2;
Successfully created configuration directory /etc/icingaweb2
root@lns-2163:/etc/apache2/sites-available# icingacli setup token create;
The newly generated setup token is: 30901c3940a01ec7

Dieses Token wird benötigen wir, um die Konfiguration von Icinga 2 per Webinterface anstoßen zu können: der Dialog ist ausführlich kommentiert, wir lesen aufmerksam und folgen den Anweisungen. Abhängigkeiten werden überprüft, benötigte Einstellungen vorgenommen; dass der Installer fehlende PostgreSQL-Module anmahnt ist okay, so lange wir MySQL nutzen möchten (und umgekehrt). Der initialen Konfiguration gebe ich vor, als User-Backend eine lokale Datenbank zu nutzen – später werde ich zustätzlich den LDAP-Bestand integrieren, aber ich lege großen Wert auf die Möglichkeit mich mit einem lokalen User einloggen zu können – denn üblicherweise ist das Monitoring genau dann am wichtigsten, wenn so gut wie nichts mehr geht, und das schließt beispielsweise die LDAP-Konnektivität mit ein.

Im Wesentlichen war es das: wir können uns nun einloggen und beginnen, uns mit der Oberfläche vertraut zu machen; erste Checks auf localhost sind vordefiniert. Vergesst nicht, zum Schluss mit icinga2 feature enable notifications die Benachrichtigungen zu aktivieren – in einem produktiven System wollt ihr die bestimmt haben. Schaut euch auch mal auf Icinga Exchange um; hier findet ihr inzwischen einige Themes, mit denen ihr das Erscheinungsbild eures Icinga Web 2 ein wenig aufhübschen könnt. Oder ihr schreibt ein eigenes Theme? Ich für meinen Teil schnitze nebenher an einem neuen – mein Yoga, da ich gerade eine komplette Puppet-PuppetDB-Icinga-Landschaft aufziehe…

Unterschrift
:wq!
Vielleicht sollte ich da auch ein bisschen was zu bloggen, was meint ihr?