Icinga 2 mit Icinga Web 2

Diesen Beitrag schrieb ich 6 Jahre und 9 Monate zuvor; die nachfolgenden Ausführungen müssen heute nicht unbedingt noch genau so funktionieren. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 2 Minuten

Dieser Artikel entstand ursprünglich Mitte 2015; aufgrund der großen Nachfrage habe ich ihn jedoch vollständig überarbeitet, so dass er seine Gültigkeit behält. Die Installation von Icinga 2 und Icinga Web 2 erfolgt im Artikel unter Debian 8. Ich wünsche euch viel Spaß!

Installation von Icinga 2

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

## file: "/etc/apt/sources.list.d/icinga2.list"
deb http://packages.icinga.com/debian icinga-jessie main
deb-src http://packages.icinga.com/debian icinga-jessie main
$ wget -O - http://packages.icinga.com/icinga.key | apt-key add -
...
OK
$ apt-get update

Installation von icinga2-ido-mysql

Damit ist Icinga 2 schonmal installiert; als nächstes möchte ich icinga2-ido-mysql haben, es dient der Kommunikation zwischen Icinga 2 und dem Webinterface. Bei der Installation wird gefragt, ob eine entsprechende Datenbank angelegt werden soll – ja, soll sie, und in meinem Fall heißt sie icinga2. (Die Daten zu dieser IDO-Verbindung finden sich fortan in /etc/icinga2/features-enabled/ido-mysql.conf) Dann wird installiert, aktiviert und der Service anschließend durchgestartet. Außerdem werden die check commands benötigt, auch die installieren wir nun.

$ 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 enable ido-mysql
$ service icinga2 restart
$ icinga2 feature list
Disabled features: api compatlog debuglog gelf graphite influxdb livestatus opentsdb perfdata statusdata syslog
Enabled features: checker command ido-mysql mainlog notification

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 php5-imagick php5-intl

Für PHP muss die passende Zeitzone eingestellt werden:

## file: "/etc/php5/apache2/php.ini"
...
[Date]
date.timezone = "Europe/Berlin"
...

Und für das Webinterface muss nun eine apache2-Konfiguration erzeugt, an Ort und Stelle gepackt und aktiviert werden. Dazu kann man folgendermaßen vorgehen:

$ 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

Das ist der Punkt, ab dem über das Webinterface gearbeitet werden kann: über http://$DEINHOST/icingaweb2 kann es aufgerufen bzw. über http://$DEINHOST/icingaweb2/setup der Setup Wizard gestartet werden.

Token erstellen, Icinga Web 2 konfigurieren

Im ersten Schritt des Setup Wizard wird ein Configuration Token abgefragt, man erzeugt es folgendermaßen:

$ /usr/bin/icingacli setup config directory --group www-data
Successfully created configuration directory /etc/icingaweb2
$ /usr/bin/icingacli setup token create
The newly generated setup token is: 7632b841189bfbe2

Das Token wird benötigt, um die Konfiguration von Icinga 2 per Webinterface anstoßen zu können. Der folgende Dialog ist hinreichend kommentiert, die Abhängigkeiten werden überprüft, die Einstellungen vorgenommen. Im Wesentlichen war es das: du kannst dich nun einloggen und beginnen, dich mit der (im Vergleich zu Nagios wirklich sehr neuen) Oberfläche vertraut zu machen. Erste Checks auf localhost sind vordefiniert. In /etc/icinga2/ saust die Konfiguration dazu herum, und auch hier ist einiges an Umgewöhnung erforderlich – doch es lohnt sich. Es wird sehr spannend, bestehende Daten in das neue System umzuziehen. Ich jedenfalls bin schon süchtig… ;)


Anhang

Aus Kompatibilitätsgründen belasse ich Teile des alten Beitrags, wie sie sind; sie werden üblicherweise nicht mehr benötigt, helfen so manchem aber gegebenenfalls dennoch weiter.

Icinga 2 ist so konfiguriert, dass es seine Daten in der Datenbank icinga2idomysql ablegt. Soll das Webinterface nun Informationen anzeigen, muss es ebenfalls Zugriff auf diese Datenbank erhalten. Hierzu richtest du am besten einen eigenen Datenbank-User icingaweb2 ein, dem du Rechte auf icinga2idomysql einräumst. Darüberhinaus benötigt icingaweb2 auch eine eigene Datenbank icingaweb2, die in diesem Zuge ebenfalls eingerichtet und für den User icingaweb2 zugänglich gemacht wird.

mysql> CREATE USER 'icingaweb2'@'localhost'
    -> IDENTIFIED BY 'qwertz';
Query OK, 0 rows affected (0.00 sec)
 
mysql> GRANT SELECT, INSERT, UPDATE, DELETE,
    -> DROP, CREATE VIEW, INDEX, EXECUTE
    -> ON icinga2idomysql.*
    -> TO 'icingaweb2'@'localhost';
Query OK, 0 rows affected (0.00 sec)
 
mysql> CREATE DATABASE icingaweb2;
Query OK, 1 row affected (0.00 sec)
 
mysql> GRANT ALL PRIVILEGES ON icingaweb2.*
    -> TO 'icingaweb2'@'localhost';
Query OK, 0 rows affected (0.00 sec)
 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)