Icinga 2, Icinga Web 2 unter Debian 9

Diesen Beitrag schrieb ich 5 Jahre und 4 Monate zuvor; die nachfolgenden Ausführungen müssen heute weder genau so nach wie vor funktionieren, noch meiner heutigen Meinung entsprechen. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 3 Minuten

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

Installation von icinga2

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

## file: "/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 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:

## file: "/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:

  • Über http://$HOSTNAME/icingaweb2 rufen wir es grundsätzlich auf bzw.
  • über http://$HOSTNAME/icingaweb2/setup starten wir den Setup Wizard

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.

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

~~~shell
$ icingacli setup config directory --group icingaweb2;
Successfully created configuration directory /etc/icingaweb2
$ 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 zusä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…

Alle Bilder dieser Seite: © Marianne Spiller – Alle Rechte vorbehalten
Hintergrundbild: Screenshot Icinga2 Login Screen, 1500x 690px, Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten

Eure Gedanken zu „Icinga 2, Icinga Web 2 unter Debian 9“

Ich freue mich über jeden Kommentar, es sei denn, er ist blöd. Deshalb behalte ich mir auch vor, die richtig blöden kurzerhand wieder zu löschen. Die Kommentarfunktion ist über GitHub realisiert, weshalb ihr euch zunächst dort einloggen und „utterances“ bestätigen müsst. Die Kommentare selbst werden im Issue-Tracker und mit dem Label „✨💬✨ comment“ erfasst – jeder Blogartikel ist ein eigenes Issue. Über GitHub könnt ihr eure Kommentare somit jederzeit bearbeiten oder löschen.