Select Page

NETWAYS Blog

Icinga Web und Icinga DB Web auf Ubuntu 20.04 / 22.04 installieren

Damit du Daten, die dein Icinga Monitoring (auch bekannt als Icinga 2) sammelt, grafisch darstellen und daraus Erkenntnisse gewinnen kannst, ist eine grafische Oberfläche für viele User nicht wegzudenken.
Icinga Web ist das Frontend des Icinga Stack und die optimale Lösung, wenn es darum geht, die Abläufe und Checks deines Open Source Monitoring zu visualisieren.
Dieser Guide hilft dir bei der Installation und Konfiguration von Icinga Web und Icinga DB Web auf Ubuntu 20.04 / 22.04.

Wenn du bereits unseren Guide zur Installation und Konfiguration von Icinga und Icinga DB durchgeführt hast, kannst du direkt loslegen. Wenn du noch kein Icinga installiert hast, dann solltest du jetzt zu unserem Icinga Installationsguide wechseln und anschließend hier weiterlesen.

Voraussetzungen für die Icinga Web und Icinga DB Web-Installation

Damit dieser Guide erfolgreich umgesetzt werden kann, gibt es einige wichtige Voraussetzungen:

  • Ein bereits vorhandenes Icinga bestehend aus:
    • Ubuntu 20.04 / 22.04 Server mit mindestens 2 GB RAM und 20 GB freiem Speicherplatz
    • IcingaIcinga DBIcingaDB-Redis und MySQL/MariaDB/PostgreSQL
  • sudo – Benutzer ist auf dem Server eingerichtet und du hast das Recht ihn zu nutzen
  • Die aktuellste PHP-Version
  • Eine Internetverbindung auf den Server
  • Ein Webserver (Apache, Nginx, etc.) ist auf dem Server installiert

Du kannst hinter alle diese Punkte einen Haken setzen? Dann legen wir los!

Anmerkung: Alle nachfolgende Schritte werden als root-User durchgeführt. Überprüfe, ob du den richtigen Benutzer verwendest!

Schritt 1: Icinga Repository hinzufügen

Dieser Schritt sollte bereits bei der Installation von Icinga 2 ausgeführt worden sein und muss grundsätzlich nicht wiederholt werden. Falls diese Installation jedoch eine Weile her ist oder du auf “Nummer sicher” gehen willst, sind hier die Befehle, mit denen du das offizielle Icinga-Repository zu deinem System hinzufügst:

apt update 
apt -y install apt-transport-https
wget gnupg wget -O - https://packages.icinga.com/icinga.key | gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg
. /etc/os-release; if [ ! -z ${UBUNTU_CODENAME+x} ]; then DIST="${UBUNTU_CODENAME}"; else DIST="$(lsb_release -c| awk '{print $2}')"; fi; \
 echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-${DIST} main" > \
 /etc/apt/sources.list.d/${DIST}-icinga.list  
echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-${DIST} main" >> \
 /etc/apt/sources.list.d/${DIST}-icinga.list
apt update

Schritt 2: Icinga Web und Icinga DB Web auf Ubuntu 20.04 / 22.04 installieren

Bevor es mit der Konfiguration von Icinga Web losgeht, wird das icingadb-web Paket installiert. Dieser Schritt ist nötig, damit im späteren Verlauf der Icinga Web Installationsanleitung das Modul direkt aktiviert und konfiguriert werden kann. Zu Installation nutzt du:

apt-get install -y icingadb-web

Der Vorteil dieses Befehls ist, dass dabei NICHT NUR das angesprochene Modul installiert wird!
Zusätzlich installiert dieser Befehl direkt alle noch nicht vorhandenen Abhängigkeiten direkt mit. Namentlich sind das unter anderem Icinga Web, icingacli und libapache2-mod-php.

Dieser kleine Befehl ist somit das Multifunktionstool der Installation. Weiter geht es mit der Konfiguration und Webinstallation von Icinga Web 2.

Schritt 3: Icinga Web konfigurieren und installieren

Um einen besseren Überblick und Verständnis für die einzelnen Punkte zu schaffen, wird dieser Schritt in einzelne Teilschritte unterteilt.


Schritt 3.1: Konfigurationsdatei für den Webserver anlegen

Ob du den folgenden Befehl ausführen musst, ist von der Wahl deines Webservers abhängig.
Hast du dich für Apache entschieden, ist eine Konfigurationsdatei für die Nutzung von Icinga Web bereits installiert. Nutzt du Nginx, musst du eine Konfigurationsdatei erstellen und sie im Konfigurationsverzeichnis von Nginx speichern.

icingacli setup config webserver nginx --document-root /usr/share/icingaweb2/public

Schritt 3.3: Authentifizierungs-Token erstellen

Damit du Icinga Web mit dem Icinga Web Setup Wizard schnell und einfach installieren und konfigurieren kannst, benötigst du ein Token zu Authentifizierung. Dieses erstellst du ganz einfach mit folgendem icingacli-Befehl:

icingacli setup token create

Für den Fall, dass das Token zu einem späteren Zeitpunkt erneut aufgerufen werden muss, gibt es diesen Befehl:

icingacli setup token show

Schritt 3.3: Icinga Web Datenbank anlegen

Ein weiterer wichtiger Schritt ist das Anlegen einer Icinga Web Datenbank und eines Icinga Web Datenbank-Nutzers.
Diese beiden Befehle kann Icinga Web aufgrund von Sicherheitseinschränkungen des lokalen Systems nicht automatisiert durchführen. In diesem Guide nutze ich MariaDB als Datenbank. Andere Datenbanken wie etwa PostgreSQL sind ebenfalls möglich. Die Anleitung hierfür findest du in den Icinga Docs.

mysql -u root -p 
CREATE DATABASE icingaweb2;
CREATE USER 'icingaweb2'@'localhost' IDENTIFIED BY 'USE_A_SECURE_PASSWORD_HERE';
GRANT ALL ON icingaweb2.* TO icingaweb2@localhost;

Damit sind alle Vorbereitungen abgeschlossen und die eigentliche Einrichtung von Icinga Web kann beginnen.

Schritt 4: Icinga Web im Browser einrichten

Um das Icinga Web 2 Setup zu starten du die IP-Adresse deiner Icinga-Instanz im Browser auf und hängst /icingaweb2/setup hinten an.

Icinga Token einfügen

Auf der ersten Seite trägst du das in Schritt 3.2 erzeugt Token ein und beginnst damit das Setup:

Screenshot des Icinga Web Setups, bei dem die Eingabemaske für das Icinga Token zu sehen ist

Hier fügst du das in Schritt 3.2 erzeugt Token ein und klickst auf Next.

Icinga Web Module auswählen

Auf dieser Seite wählst du aus den fünf vorgeschlagenen Modulen die aus, die du nutzen willst. Standardmäßig ist bereits das Icingadb Modul ausgewählt, was beibehalten werden muss!

WICHTIG: Da wir eine aktuelle Installation von Icinga 2 und Icinga Web 2 durchführen, kommt Icinga DB anstelle der bisher verwendeten IDO zum Einsatz. Von daher kann auf das Modul Monitoring verzichtet werden!

Ansicht der Icinga Web Setup Oberfläche zur Einrichtung von Icinga Web Modulen (dunkelblauer Hintergrund, hellblauer Header). In der aktuellen Ansicht ist das Modul IcingaDB zur EInrichtung ausgewählt.

Icinga Web PHP Module überprüfen

Du erhältst eine Übersicht über alle benötigten und vorhandenen Bauteile, die Icinga Web benötigt. Hier kannst du überprüfen, ob alle kritischen Abhängigkeiten vorhanden sind.

Ansicht der Icinga Web Setup Oberflächemit einer Übersicht der aktiven PHP Module (dunkelblauer Hintergrund, hellblauer Header). In der aktuellen Ansicht sind ausser ein optionales Modul alle PHP Module aktiv

Authentifizierungsmethode wählen

Um eine Zugangsauthentifizierung zu Icinga Web 2 durchzuführen, stehen dir drei verschiedene Möglichkeiten zur Verfügung:
DatabaseLDAP oder External.

Hier kannst du die von dir oder deinem Unternehmen präferierte Authentifizierungsmethode nutzen. Die Eingabe der nötigen Daten erfolgt in einem späteren Schritt.
In diesem Guide beziehen wir uns auf die Authentifizierung über die Datenbank.

Ansicht der Icinga Web Setup Oberflächezur Auswahl der Authentifizierungsmethode (dunkelblauer Hintergrund, hellblauer Header). In der aktuellen Ansicht wird die Datenbank zur Authentifizierung genutzt

Datenbank-Authentifizierung

Im Formular zur Datenbank-Authentifizierung trägst du alle wichtigen Informationen ein.

Ansicht der Icinga Web Setup Oberfläche mit einem Formular zur Eingabe der Datenbank Zugangsdaten (dunkelblauer Hintergrund, hellblauer Header). In der aktuellen Ansicht ist das leere Formular zu sehen

Daten, welche in die einzelnen Felder eingetragen werden müssen (oder können, wenn sie nicht explizit gefordert sind):

  • Ressource Name: Name deiner Datenbank-Ressource. Kann den Default Namen behalten
  • Database Type: Je nachdem, ob du MySQL/MariaDB oder PostgreSQL verwendest, wählst du hier den entsprechenden Typen aus
  • Host:Auf welchem Host liegt deine Datenbank? In dem meisten Fällen kannst du hier den Default localhost beibehalten
  • Port: Hast du einen speziellen Port für deine Datenbank freigegeben? Dann musst du diesen hier eintragen
  • Database Name: Namen der Datenbank ein, die du in Schritt 3.3 für Icinga Web angelegt hast
  • Username: Username aus Schritt 3.3
  • Password: Passwort für den User aus Schritt 3.3
  • Character Set: Du nutzt ein bestimmtes Character Set? Hier optional angeben
  • Use SSL: Nutzt du Verschlüsselung und SSL-Zertifikate? Aktiviere den Button und gib deine Daten ein

 

Hast du deine Daten eingegeben, drückst du Validate Configuration. War alles richtig, erhältst du diese Ansicht:

Ansicht der Icinga Web Setup Oberfläche mit einem Formular zur Eingabe der Datenbank Zugangsdaten (dunkelblauer Hintergrund, hellblauer Header). In der aktuellen Ansicht ist das ausgefüllte Formular inklusive erfolgreicher Validierung zu sehen

Icinga Web Backend Authentifizierung

Wähle nun einen Namen für dein Icinga Web Authentifizierungsbackend aus.

Ansicht der Icinga Web Setup Oberfläche zur Auswahl er Backend Authentifizierung (dunkelblauer Hintergrund, hellblauer Header).

Icinga Web Admin User anlegen

Es wird Zeit, den ersten Icinga Web Admin anzulegen. Gib ihm einen Benutzernamen und ein sicheres Passwort!

Ansicht der Icinga Web Setup Oberfläche zum Anlegen eines administrativen Benutzers (dunkelblauer Hintergrund, hellblauer Header).

Icinga Web Anwendungs- und Loggingeinstellungen

Auf dieser Seite hast du die Möglichkeit, ein paar individuelle Konfigurationen an der Anwendung so wie dem Loggingverhalten von Icinga Web 2 vorzunehmen. Für diesen Guide werden die Standardeinstellungen beibehalten.

Ansicht der Icinga Web Setup Oberfläche zur Auswahl der individuellen Logging-Einstellungen für die Monitoring-Umgebung (dunkelblauer Hintergrund, hellblauer Header).

Übersicht der bisherigen Icinga Web Konfiguration

Zum Abschluss der Konfiguration erhältst du eine Übersichtsseite, auf der du noch einmal alle von dir gewählten Einstellungen überprüfen kannst. Wenn du zufrieden bist und keinen Fehler erkennst, drücke auf Finish und schließe die Icinga Web 2 Konfiguration ab.

Ansicht der Icinga Web Setup Oberfläche mit allen bisher getätigen Einstellungen zur Übersicht am Ende des aktuellen Einrichtungsschrittes (dunkelblauer Hintergrund, hellblauer Header).

Icinga DB Web konfigurieren

Nach der Übersicht startet als letzter Schritt der Installation und Konfiguration von Icinga Web die Konfiguration von Icinga DB Web.

Ansicht der Icinga Web Setup Oberfläche mit dem Beginn der IcingaDB Konfiguration (dunkelblauer Hintergrund, hellblauer Header).

Folge dem Wizard auf die nächste Seite. Hier musst du die Datenbank Daten von Icinga DB eingeben, die während der Konfiguration der entsprechenden Datenbank in der Anleitung zur Installation und Konfiguration von Icinga und Icinga DB erstellt wurden.

Ansicht der Icinga Web Setup Oberfläche mit einem Formular zur Eingabe der IcingaDB Datenbank Zugangsdaten (dunkelblauer Hintergrund, hellblauer Header).

Wurden alle Felder richtig ausgefüllt und die Konfiguration validiert, erscheint eine Erfolgsmeldung.

Ansicht der Icinga Web Setup Oberfläche mit ausgefülltem Formular der IcingaDB Datenbank Zugangsdaten und erfolgreicher Validierung dieser Daten (dunkelblauer Hintergrund, hellblauer Header).

Nachdem die Verbindung zur Datenbank erfolgreich eingerichtet wurde, muss nun noch die Verbindung zu Icinga DB Redis hergestellt werden.

Ansicht der Icinga Web Setup Oberfläche mit einem Formular zur Eingabe der IcingaDB-Redis Datenbank Zugangsdaten (dunkelblauer Hintergrund, hellblauer Header).

Wie bei der Datenbank werden hier die Zugangsdaten eingeben und die Konfiguration validiert.
(Da während der Einrichtung von Redis auf ein Passwort verzichtet wurde, kann das Feld hier ebenfalls freigelassen werden)

Ansicht der Icinga Web Setup Oberfläche mit ausgefülltem Formular der IcingaDB-Redis Datenbank Zugangsdaten und erfolgreicher Validierung dieser Daten (dunkelblauer Hintergrund, hellblauer Header).

Icinga API mit Icinga Web verbinden

Der letzte Schritt vor dem erfolgreichen Abschluss der Konfiguration von Icinga Web ist das Herstellen der Verbindung von Icinga Web zur Icinga 2 API.
Der standardmäßige API-Nutzer root. Dieser und das dazugehörige Passwort wurden im Guide zur Installation und Konfiguration von Icinga und Icinga DB erstellt.

Das Passwort kann jederzeit unter /etc/icinga2/conf.d/api-users.conf nachgeschlagen werden.

Ansicht der Icinga Web Setup Oberfläche mit ausgefülltem Formular zur mit der Icinga API und erfolgreicher Validierung dieser Daten (dunkelblauer Hintergrund, hellblauer Header).

Die Konfiguration endet mit einer Übersichtsseite, auf der alle eingegebenen Daten noch einmal überprüft werden können.

Ansicht der Icinga Web Setup Oberfläche mit allen bisher getätigten Einstellungen für IcingaDB zur Übersicht am Ende des aktuellen Einrichtungsschrittes (dunkelblauer Hintergrund, hellblauer Header).

Waren alle hier beschriebenen Schritt erfolgreich, strahlt dir ein grünes Congratultaions! Icinga Web 2 has been successfully set up entgegen.

Nun steht deinem ersten Icinga Web Login nichts mehr im Weg.

Schritt 5: Der erste Icinga Web Login

Mit den Zugangsdaten, die du im Laufe des Icinga Web 2 Wizards angelegt hast, kannst du nun deinen ersten Login vornehmen.

Ansicht des Icinga Web Dashboards nach erfolgtem Login. Zu sehen sind alle Menüpunkte sowie einige Monitoringbeispiele

Damit neue Nutzer:innen einen ersten Eindruck davon erhalten, wie die gesammelten Daten vom Systemmonitoring oder Netzwerkmonitoring dargestellt werden, kommt Icinga mit einer Beispielkonfiguration. Diese kann gelöscht werden, sobald man selbst damit beginnt, Icinga mit seinen eigenen Daten und Templates zu füllen.

Wie gehts es nun weiter?

Herzlichen Glückwunsch, du hast erfolgreich Icinga, Icinga DB und Icinga Web installiert und konfiguriert! Damit steht deiner aktiven Nutzung der Open Source Monitoring Lösung nichts mehr im Weg.
Du kannst direkt loslegen und über die Icinga 2 API Objekte anlegen, Actions triggern oder Templates bauen. Welche API-Calls dafür zur Verfügung stehen, erfährst du ausführlich in den Icinga Docs.

Die Verwaltung und Nutzung von Icinga über die API ist eine häufig genutzt und valide Option. Eine weitere Möglichkeit, diese Einstellungen vorzunehmen, ist der Icinga Director. Dieser gibt Nutzer:innen die Möglichkeit, den Icinga Stack grafisch innerhalb von Icinga Web zu konfigurieren.
Wenn du dich dafür interessierst, wie der Icinga 2 Director installiert und konfiguriert wird und wie du ihn einsetzen kannst, lege ich dir unseren Guide Icinga Director auf Ubuntu installieren ans Herz.

Icinga mit IcingaDB auf Ubuntu 20.04 / 22.04 installieren

Wer nach einer Open Source Monitoring Lösung zur System- und Netzwerküberwachung sucht, kommt an Icinga (auch als Icinga 2 bekannt) nicht vorbei. Es hilft dir dabei Verfügbarkeit, Leistung und Trends der gesamten IT-Infrastruktur zu überwachen. Dank individualisierbarer Benachrichtigungseinstellungen kommen die Informationen immer genau an der gewünschten Stelle an.

Mit diesem Guide wollen wir dir dabei helfen, einen leichten Einstieg ins Icinga Monitoring zu finden und Icinga, Icinga DB und Redis erfolgreich installierst.
In diesem Guide spielt die IDO keine Rolle mehr, da diese von Icinga DB als Datenbackend abgelöst wurde. Die neue Komponente sorgt für eine bessere Performance und Skalierbarkeit von Icinga.

Voraussetzungen für die Icinga und Icinga DB Installation

Damit dieser Guide erfolgreich umgesetzt werden kann, gibt es einige wichtige Voraussetzungen:

  • Einen Ubuntu 20.04 / 22.04 Server mit mindestens 2 GB RAM und 20 GB freiem Speicherplatz
  • Der sudo – Benutzer ist auf dem Server eingerichtet und du hast das Recht, ihn zu nutzen
  • Zugriff auf eine SQL-Datenbank (in diesem Guide wird MariaDB verwendet)
  • Die aktuellste PHP-Version ist auf dem Server installiert
  • Eine Internetverbindung auf den Server
  • Optional: Ein Webserver (Apache, Nginx, etc.) ist auf dem Server installiert (als Teil des LAMP-Stack)

Du kannst hinter alle diese Punkte einen Haken setzen? Dann legen wir los!

Anmerkung: Alle nachfolgende Schritte werden als root-User durchgeführt. Überprüfe, ob du den richtigen Benutzer verwendest!

Schritt 1: Icinga Repository hinzufügen

Um die aktuelle Version von Icinga zu installieren, wird das offizielle Icinga-Repository zu unserem System hinzugefügt. Dazu führst du in deinem Terminal die folgenden Befehle aus:

apt update 
apt -y install apt-transport-https wget gnupg 
wget -O - https://packages.icinga.com/icinga.key | gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg
. /etc/os-release; if [ ! -z ${UBUNTU_CODENAME+x} ]; then DIST="${UBUNTU_CODENAME}"; else DIST="$(lsb_release -c| awk '{print $2}')"; fi; \
 echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-${DIST} main" > \
 /etc/apt/sources.list.d/${DIST}-icinga.list  
echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-${DIST} main" >> \
 /etc/apt/sources.list.d/${DIST}-icinga.list
apt update

Sobald dieser Befehlsblock erfolgreich durchgelaufen ist, siehst du in deinem Terminal, dass die neuen Repos nun in deiner Liste zu finden sind. Es sollte in etwa so aussehen:

Screenshot eines Ubuntu Terminals, bei dem eine Auflistung aller dem System hinzugefügten Repositories zu sehen ist. Der Screenshot soll verdeutlichen wie es aussieht, wenn die offiziellen Icinga Repositores zum System hinzugefügt wurden

Schritt 2: Icinga-Paket auf Ubuntu 20.04 oder Ubuntu 22.04 installieren

Da du nun Zugriff auf das Icinga-Repository hast, kannst du direkt damit weiter machen und das Icinga Paket installieren. Dafür nutzt du:

apt install -y icinga2

Dieses Paket ist die Basis der gesamten Icinga 2 Monitoring Installation. Um zu überprüfen, ob die Installation erfolgreich war, nutzt du

icinga2 daemon -C

Mithilfe dieses Befehls kannst zukünftige Konfigurationsanpassungen mit einem Terminalbefehl überprüfen.

Screenshot eines Ubuntu Terminals, bei dem das Kommando icinga2 daemon -C inklusive seiner Ausgabe zu sehen ist. Der Screenshot soll verdeutlichen wie die Ausgabe dieses Befehls im Terminal visualisiert wird

Schritt 3: Aktivieren der Icinga API und Installieren der Monitoring Plugins

Ein Monitoringsystem ist nur so gut wie die Daten, die es sammelt und die Checks, die ausgeführt werden.
Für moderne, aus Nagios hervorgegangene Open Source Monitoring Systeme haben sich die bereits am Anfang angesprochenen Monitoring Plugins etabliert. Diese installierst du im nächsten Schritt.

Damit kannst du direkt nach Abschluss dieses Icinga Installationsguides die ersten Checks anlegen und mit deinem System Monitoring oder Netzwerk Monitoring starten. Dafür nutzt du im Terminal den folgenden Befehl:

apt install monitoring-plugins

 

Um die Ergebnisse der Check Plugins abzurufen oder mit Icinga zu interagieren, muss die Icinga API eingerichtet werden. Das machst du ganz einfach mit diesen beiden Befehlen:

icinga2 api setup
systemctl restart icinga2

Damit legst du in der Konfigurationsdatei /etc/icinga2/conf.d/api-users.conf einen API-User (inkl. zufallsgeneriertem Passwort) an.
(Die hier erzeugten Zugangsdaten benötigst du im weiteren Verlauf bei der Einrichtung von Icinga Web. Du wirst im entsprechenden Schritt noch einmal darauf hingewiesen!)

Falls du bestimmte Vorgaben erfüllen musst oder generell mehr über die Icinga API erfahren willst, lege ich dir entsprechende Seite in den Icinga Docs ans Herz.

Weiter geht es mit der Einrichtung von Icinga DB.

Schritt 4: Icinga DB einrichten

Icinga DB ist keine, wie der Name vielleicht vermuten lässt, eigenständige Datenbank.
Vielmehr handelt es sich hierbei um eine Sammlung von Komponenten zur Veröffentlichung, Synchronisierung und Visualisierung von Überwachungsdaten im Icinga-Ökosystem. Dazu gehören Redis, das IcingaDB-Feature des Icinga Core und der Icinga DB-Daemon.

Schritt 4.1: Redis Server installieren

Um Icinga DB zu nutzen, benötigst du einen Redis Server. Für einen reibungslosen Installations- und Konfigurationsprozess bietet das Icinga Team ein eigenes Redis-Paket an, das speziell auf Icinga zugeschnitten ist.
icindadb-redis umfasst deshalb eine aktuelle Version von Redis und kommt out of the box mit Anpassungen der Freigabe auf Port 6380 statt dem sonst für Redis üblichen Port 6379.
Das Paket installierst du mit:

apt install icingadb-redis

Hinweis: Der Redis Server kann grundsätzlich überall in deiner Icinga Umgebung installiert werden. Es ist jedoch sinnvoll, diesen auf dem zentralen Icinga-Node zu installieren, um die Latenz so niedrig wie möglich zu halten.
Ein bereits vorhandener und selbst konfigurierter Redis Server kann ebenso verwendet werden. Hier sind jedoch entsprechende Anpassungen notwendig, weshalb die Nutzung des entsprechenden Icinga-Pakets empfohlen wird.

Schritt 4.2: Aktivieren von Redis

Die Installation von icingadb-redis installiert automatisch alle systemd Dateien, die Icinga DB Redis braucht. Der Service kann also direkt aktiviert und gestartet werden:

systemctl enable --now icingadb-redis-server

Standardmäßig lauscht icingadb-redis nur auf 127.0.0.1, also deinem localhost. Wenn Icinga Web 2 oder Icinga 2 auf einer anderen Node laufen als Redis, dann muss das in der Konfigurationsdatei

/etc/icingadb-redis/icingadb-redis.conf

angepasst werden.

Auch wenn in diesem Guide alle Schritte auf einer Icinga-Node durchgeführt werden, wird die Konfigurationsdatei so angepasst, dass das Aufsetzen weiterer Nodes in der Zukunft kein Problem darstellen.
Dafür sind innerhalb der Konfigurationsdatei zwei kleine Anpassungen notwendig:

  • protected-mode von yes auf no
  • bind von 127.0.0.1 auf 0.0.0.0 –> Dadurch können alle Interfaces auf Redis zugreifen

Um die Änderungen zu aktivieren, muss der Service neu gestartet werden:

systemctl restart icingadb-redis

Damit Icinga über Icinga DB später Daten an Redis weitergibt, muss das entsprechende Feature aktiviert und Icinga anschließend neu gestartet werden:

icinga2 feature enable icingadb 
systemctl restart icinga2

Sicherheitshinweis:
Redis hat standardmäßig KEINE Authentifizierung aktiviert!
Mit der Änderung von bind auf 0.0.0.0 wird dringend, um unbefugten Zugriff zu verhindern, empfohlen, einige Sicherheitsmaßnahmen durchzuführen. Dazu gehören: Einrichten eines Passworts, Aufstellen von Firewall-Regeln oder Einrichten von TLS.
Zur einfacheren Installation wird in diesem Guide jedoch auf diese Schritte verzichtet! Diese Anpassungen lassen sich ebenfalls nachträglich durchführen.

Schritt 4.3: Installieren von Icinga DB und einrichten der Datenbank

Nachdem im gerade abgeschlossenen Schritt die Schnittstelle von Icinga 2 zu Icinga DB aktiviert wurde, wird nun Icinga DB selbst installiert:

apt-get install icingadb

Damit das gerade installierte Paket die verarbeiteten Daten auch speichern kann, muss eine Datenbank für Icinga DB angelegt und Zugriff dazu gewährt werden. (In diesem Guide wird MariaDB 10.6.12 verwendet. Die Einrichtung von MySQL ist mit den gleichen Befehlen möglich. Nutzt du PostgreSQL findest du die entsprechenden Befehle in den offiziellen Icinga Docs.)

mysql -u root -p 
CREATE DATABASE icingadb; 
CREATE USER 'icingadb'@'localhost' IDENTIFIED BY 'SAFEPASSWORDINHERE'; 
GRANT ALL ON icingadb.* TO 'icingadb'@'localhost';

Damit hast du die Datenbank und den Datenbank-Nutzer erfolgreich angelegt. Icinga DB stellt zudem ein Datenbankschema zur Verfügung, dass nun importiert wird:

mysql -u root -p icingadb </usr/share/icingadb/schema/mysql/schema.sql

Schritt 4.3: Zugriffsberechtigungen anpassen

Während der Installation von Icinga DB wird unter /etc/icingadb/config.yml eine Konfigurationsdatei angelegt, die mit Standardwerten gefüllt ist. Damit die Verbindung von Icinga DB zu Redis und MariaDB erfolgreich stattfinden kann, müssen diese Werte überprüft und gegebenenfalls angepasst werden.

Öffne also den Pfad mit einem Texteditor deiner Wahl und passe die folgenden Parameter gegebenenfalls an.

Für die Datenbank:
host mit dem entsprechenden Hostname/Host-IP deiner Datenbank, database mit dem Namen deiner Datenbank (in diesem Guide icingadb), user mit dem Namen deines Datenbanknutzers und password mit dem Passwort, dass du für deine Datenbank vergeben hast.

Für Redis:
host mit dem entsprechenden Hostname/Host-IP deiner Redis Instanz. Wenn du während der Installation deines Redis-Servers den port geändert oder ein password gesetzt hast, musst du dies hier ebenfalls eintragen.

Sobald diese Änderungen abgeschlossen sind, kann der Icinga DB Service aktiviert werden:

systemctl enable --now icingadb

Schritt 5: Icinga Node Wizard ausführen

Nachdem die Grundkomponenten für die Nutzung von Icinga installiert und konfiguriert wurden, muss noch er Node Wizard ausgeführt werden. Dieses interaktive Skript hilft dir dabei, Zonen einzustellen und die Endpunkte deines Icinga Monitoring festzulegen.

Dafür gibst du im Terminal diesen Befehl ein:

icinga2 node wizard

Da hier einige wichtige Einstellungen vorgenommen werden, hier eine Übersicht der einzelnen Punkte:

  • Is this agent/satellite setup? –> Hier ‘n’ eingeben und mit Enter bestätigen
  • Specifiy common name (FQDN of your master) –> Nichts eingeben und mit Enter bestätigen
  • Master zone name –> Nichts eingeben und mit Enter bestätigen
  • Specify additional global zones –> Nichts eingeben und mit Enter bestätigen
  • Specify API bind host/port –> Nichts eingeben und mit Enter bestätigen
  • Bind Host –> Nichts eingeben und mit Enter bestätigen
  • Bind Port –> Nichts eingeben und mit Enter bestätigen
  • Disable inclusion of conf.d directory –> Nichts eingeben und mit Enter bestätigen

Screenshot der Ubuntu Terminalausgabe, bei dem das Kommando icinga2 node wizard inklusive seiner Ausgabe zu sehen ist. Der Screenshot soll verdeutlichen wie die Ausgabe dieses Befehls im Terminal visualisiert wird

Im Anschluss verifizierst du die getätigte Konfiguration und lädst Icinga 2 neu:

icinga2 daemon -C 
systemctl reload icinga2

Damit hast alle wichtigen Schritte zur Icinga und Icinga DB abgeschlossen!

Wie gehts es nun weiter?

Herzlichen Glückwunsch, du hast erfolgreich ein lokales Icinga installiert und konfiguriert! Damit könntest du nun direkt loslegen und über die Icinga2 API deine ersten Objekte anlegen, Actions triggern oder Templates bauen. Welche API-Calls dir dafür zur Verfügung stehen, kannst du übersichtlich in den Icinga Docs nachlesen.

Grundsätzlich ist die Icinga Installation nun einsatzbereit. Damit eine Open Source Monitoring Lösung wie Icinga aber produktiv genutzt werden kann, müssen die gesammelten Daten noch visualisiert werden.
Dabei helfen Icinga Web und Icinga DB Web. Wie diesen beiden Tools installiert und mit der hier aufgesetzten Basis verbunden werden erfährst du im Installationsguide zu Icinga Web und Icinga DB Web auf Ubuntu 20.04 / 22.04.

Monitoring-Review – diese Vorteile hat eine regelmäßige Überprüfung

This entry is part 2 of 4 in the series So geht IT Consulting

Egal wie gut das Monitoring der eigenen IT-Infrastruktur geplant ist und gewartet wird, irgendwann kann es zu unvorhergesehenen Herausforderungen kommen. Auch wenn die Icinga-Umgebung initial nicht von deinen Expert:innen von NETWAYS Professional Services konzipiert oder implementiert wurde, helfen wir dir als Open Source IT-Dienstleister dabei Probleme in den Griff zu bekommen. In solchen Fällen bieten wir dir die Möglichkeit, eine Review der Monitoring-Umgebung durchzuführen.

NETWAYS Senior Consultant und Autor des Icinga Buchs Lennart Betz über die Bedeutung und Aufgaben einer Infrastruktur-Review.

Was bedeutet ein Review meiner Icinga Monitoring-Umgebung?

Was genau das Ziel einer Review ist, unterscheidet sich von Projekt zu Projekt. Eine Gemeinsamkeit zieht sich aber durch alle Aufträge: gleich zu Beginn wird das zugrunde liegende Konzept hinterfragt. Es gibt zum Beispiel Kunden die mit dem Wunsch auf uns zukommen, dass ich oder eine:r meiner Kolleg:innen lediglich die vorhandene Icinga-Installation überprüfen und im Anschluss ein Dokument mit Vorschlägen für mögliche Änderungen anfertigen und übergeben.
Ein anderer möchte jedoch, dass Verbesserungen sofort umgesetzt und dokumentiert werden. Auch ein Mittelweg kann die Lösung sein. Hierbei wird gemeinsam bewertet, ob und wie eine Änderung den laufenden Betrieb beeinträchtigt. Jegliche Dokumentation von durchgeführten oder vorgeschlagenen Änderungen kann auf Wunsch zusätzlich mit einer Begründung versehen werden.
Je nach gewünschtem Umfang variiert auch der unsererseits benötigte Zeitaufwand. Speziell hochverfügbar ausgelegte Monitoring-Umgebungen erfordern zusätzliche Ressourcen, welche von unserem Sales-Team daher direkt bei Angebotserstellung einkalkuliert werden.

Der übliche Zeitaufwand reicht von einem halben Tag für die reine Durchsicht mit anschließend durchgeführter Änderung und ohne Dokumentation, bis zu mindestens zwei Tagen bei einem kompletten Review für eine hochverfügbare Icinga-Umgebung mit Dokumentation inkl. Begründung.
Diese Angaben beziehen sich allerdings nur auf einen Review der Monitoring-Infrastruktur und einen flüchtigen Blick darauf, wie die Überwachung selbst umgesetzt ist. Optional ist nach Absprache auch eine tiefere Bewertung der eingesetzten Monitoring-Plugins inklusive Vorschlägen von Alternativen möglich. Je nach Umfang müssen an dieser Stelle ebenfalls zusätzliche Ressourcen eingeplant werden.

 

Wie läuft ein solches Icinga-Review ab?

Bevor wir mit der Review der Icinga-Monitoringumgebung starten können, gibt es einige Voraussetzungen, die erfüllt sein müssen, um die Arbeit für beide Seiten so angenehm wie möglich zu gestalten. Eine, wenn nicht die wichtigste Voraussetzung ist, dass wir nicht nur ein Zugang auf die GUI, sondern im Besonderen auch auf die Kommandozeile als administrativer Benutzer für alle Icinga-Server erhalten. Das betrifft das zentrale System mit GUI und der dort hinterlegten Konfiguration zu überwachender Komponenten wie auch eingesetzter Satelliten.

In Augenschein nehmen wir nicht nur jede einzelne Konfigurationsdatei der Icinga-Komponenten, Icinga 2 und Icinga Web 2, sondern gerne auch die integrierter Komponenten wie InfluxDB oder Graphite, sowie das als Datenbackend erforderliche Datenbankmanagementsystem (MariaDB/MySQL oder PostgreSQL). Letzteres erfordert in HA-Umgebungen immer noch einer besonderen Aufmerksamkeit. Vereinfachen wird sich dies allerdings mit der zu erwartenden Verbreitung der IcingaDB.
Da meist zur Benutzer-Authentifizierung bei Icinga eine Anbindung an ein Microsoft Active Directory besteht, wird auch in diesem Bereich auf Verbesserungsmöglichkeiten eingegangen.

Abschließend ist Datensicherheit ein wichtiges Thema. Das betrifft unter anderem, wie Passwörter im Monitoring vor fremden Blicken geschützt werden können, da solche immer wieder benötigt werden, um ein zu überwachendes System abzufragen. Bei Icinga als verteilte Anwendung, sei es mit Satelliten, dem Icinga Agent oder via Außenanbindung an Datenbanken, LDAP oder einem Active Directory, empfiehlt es sich zumindest auf eine verschlüsselte Kommunikation zu setzen.

Als Vorabinformation nehmen wir auch gerne die Ausgabe unseres Support Collectors als Grundlage entgegen. Alle weiteren Feinheiten erarbeiten wir gerne mit Dir zusammen bei einem von Dir gewünschten und beauftragten Review von Kollegen oder mir selbst.

Falls Du neben dem Review deiner bestehenden Icinga-Umgebung Hilfe bei der Einrichtung benötigst, melde Dich gerne! Ich oder ein:e Kolleg:in führen gerne eine individuelle Betrachtung zu Deiner IT-Umgebung und ihren Anforderungen durch. Im Rahmen eines solchen Consultingtermins erstellen wir Dir zunächst ein Konzept und können gerne auch direkt mit der Umsetzung beginnen.

Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.

Icinga Monitoring-Satelliten – wieso sie für dich sinnvoll sind

This entry is part 4 of 5 in the series Icinga. Einfach. Erklärt.

Eine zuverlässige und robuste IT-Infrastruktur, die den Anforderungen von Unternehmen gerecht wird, ist von entscheidender Bedeutung. Da Unternehmen wachsen und immer komplexer werden, wird es immer schwieriger, die IT-Infrastruktur effektiv zu überwachen und zu verwalten. An dieser Stelle kommen Monitoringlösungen wie Icinga ins Spiel.

Icinga ist eine Open-Source-Monitoringlösung, mit der man die Verfügbarkeit und Leistung der IT-Infrastruktur, einschließlich Servern, Anwendungen und Netzwerkgeräten überwachen kann. Mit Icinga kannst du deine Infrastruktur proaktiv überwachen und Probleme erkennen, bevor sie zu Problemen werden.

Obwohl Icinga ein leistungsstarkes Monitoringtool ist, ist die zu Grunde liegende Hardware nicht unfehlbar. Wenn es um eine große und komplexe Infrastruktur geht, kann sinnvoll sein, sich nicht auf einen einzigen Server zu verlassen. Hier kommt der Einsatz mehrerer Icinga-Satelliten ins Spiel. Diese können jeweils zu zweit in einer “Zone” zusammengefasst werden, wobei beide Knoten die gleiche Rolle einnehmen und sich die zu erledigenden Aufgaben aufteilen.

Also, was sind die Vorteile, mehrere Icinga-Satelliten einzusetzen?

Hohe Verfügbarkeit der Monitoringumgebung

Einer der wichtigsten Vorteile für die Nutzung mehrerer Icinga-Satelliten ist die hohe Verfügbarkeit. Durch den Einsatz mehrerer Satelliten in verschiedenen Rechenzentren oder geografischen Standorten wird sichergestellt, dass die Monitoringinfrastruktur hochverfügbar ist. Wenn ein Satellit ausfällt, kann zunächst mal der zweite Knoten alle Aufgaben übernehmen.
Sollte die Verbindung zu einem Standort weg sein, werden lokale Messergebnisse zwischengespeichert. Sobald sie wieder da ist, werden sie wieder abgespielt. In der Zwischenzeit können die anderen Standorte ihre Infrastruktur weiter überwachen und bei Problemen Warnungen senden.

Diese hohe Verfügbarkeit trägt dazu bei, Ausfallzeiten zu minimieren und sicherzustellen, dass geschäftskritische Systeme verfügbar bleiben und wie vorgesehen funktionieren. Durch die Bereitstellung von Redundanz können mehrere Satelliten dazu beitragen, das Risiko eines einzelnen Ausfallpunkts zu verringern, was helfen kann, kostspielige Ausfallzeiten zu vermeiden.

Besseres Load-Balancing

Ein weiterer Vorteil des Einsatzes mehrerer Icinga-Satelliten ist Load-Balancing. Durch die Verteilung der Überwachungslast auf mehrere Satelliten kannst du sicherstellen, dass kein einzelner Monitoringknoten mit Monitoringaufgaben überlastet wird.
Durch den Lastausgleich kannst du deine Monitoringinfrastruktur auch für verschiedene Anwendungsfälle optimieren. So kannst du beispielsweise einen Satelliten für das Monitoring von Webservern und einen anderen für das Monitoring von Datenbankservern einsetzen.

Skalierbarkeit deiner Icinga-Umgebung

Wenn das Unternehmen wächst, wird die IT-Infrastruktur wahrscheinlich immer komplexer. Das Hinzufügen weiterer Server, Anwendungen und Netzwerkgeräte zur Infrastruktur kann einen einzelnen Überwachungsknoten schnell überfordern. Indem mehrere Icinga-Satelliten genutzt werden, kann die Monitoringinfrastruktur skalieren, um die erhöhte Last zu bewältigen.

Skalierbarkeit ist für Unternehmen, die schnell wachsen oder unvorhersehbare Arbeitslasten haben, von entscheidender Bedeutung. Die Möglichkeit, bei Bedarf weitere Satelliten hinzufügen zu können, stellt sicher, dass deine Monitoringinfrastruktur mit den Anforderungen des Business Schritt halten kann.

In einer finalen Ausbaustufe muss der zentrale Icinga-Knoten gar keine Monitoringaufgaben mehr übernehmen. Er kann dann konzentriert Performancedaten schreiben, die Datenbank befüllen, Config entgegennehmen und verarbeiten oder Benachrichtigungen verschicken.

Geografische Vielfalt

Durch die Platzierung von Icinga-Satelliten an verschiedenen geografischen Standorten kannst du die Verfügbarkeit und Leistung deiner IT-Infrastruktur aus verschiedenen Perspektiven überwachen. Auf diese Weise kannst du Probleme erkennen, die möglicherweise nur in bestimmten Regionen auftreten, z. B. Netzwerküberlastung oder Latenzprobleme.

Geografische Vielfalt kann auch für Unternehmen nützlich sein, die Kunden oder Betriebe in verschiedenen Teilen der Welt haben. Indem du die Infrastruktur von verschiedenen Standorten aus überwachst, kannst du sicherstellen, dass alle Dienste für Kunden unabhängig vom Standort verfügbar sind und gut funktionieren.

Hierarchie und Verschachtelung

Besonders bei großen Standorten und hoch-gesicherten Netzen bietet es sich an, Satelliten in verschiedenen Netz-Segmenten zu installieren. Beispielsweise im Produktionsnetz, im Management-Netz oder in einer DMZ.
Hierdurch lässt sich der Netzwerkverkehr zwischen den Netzwerkzonen verringern und die Firewallfreischaltungen auf das Nötigste reduzieren. Besonders praktisch ist es dabei, dass man sich aussuchen kann, ob der Satellit einen Listener-Port öffnet und auf Anfragen wartet oder sich aktiv zu seinem Upstream-Server verbindet.

Durch hierarchische Organisation der Satelliten lässt sich sicherstellen, welche Informationen wo verfügbar sind, jeder Satellit lässt sich hierbei mit einem eigenen Web-Interface und eigenen Benachrichtigungen ausstatten.
Dadurch kann jeder Standort auch im Fall eines totalen WAN-Ausfalls lokal seine Monitoring-Informationen sehen. Er sieht jedoch nicht die Informationen der anderen Standorte. An der obersten Icinga-Instanz im HQ sind alle Informationen verfügbar, da die Satelliten ihre Nachrichten hoch melden.

Mehr Infos und Hilfe

Wenn du Hilfe beim Aufbau einer komplexen Umgebung brauchst oder deinen externen Icinga-Satelliten bei NETWAYS in der Cloud betreiben möchtest, komm gerne auf uns zu und vereinbare ein Gespräch. Du kannst Icinga, egal ob als Master oder als Satellit, ganz unverbindlich einen Monat bei NETWAYS Web Services testen.

Falls Du stattdessen eine Review deiner bestehenden Icinga-Satelliten durchführen lassen willst oder bei der Einrichtung von Icinga-Satelliten Hilfe suchst, melde Dich gerne! Ich oder ein:e Kolleg:in führen gerne eine individuelle Betrachtung zu Deiner IT-Umgebung und ihren Anforderungen durch. Im Rahmen eines solchen Consultingtermins erstellen wir Dir zunächst ein Konzept und können gerne auch direkt mit der Umsetzung beginnen.

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.

Icinga Director – grafische Konfiguration für alle?

This entry is part 3 of 5 in the series Icinga. Einfach. Erklärt.

Um dir einen reflektierten und ehrlichen Einblick in meine Entscheidungsgrundlage zu geben, gehe ich so vor, als würde ich im Consulting einen Kunden beraten und mit ihm zu einem für ihn passenden Lösungsansatz kommen. Bevor ich die jeweiligen Vor- und Nachteile von Konfigurationsdateien und der grafischen Oberfläche, dem Icinga Director, beleuchte, möchte ich als Einstieg allerdings erst über die Icinga DSL reden. Dies soll dazu dienen, dass Du meine Argumente besser verstehst und nachvollziehen kannst. Nach dem Pro und Kontra werde ich dann mein persönliches Fazit ziehen und Dir verraten, wie ich mich entscheiden würde. Das muss aber nicht der Schluss sein, zu dem Du kommst. Hier darf gerne jede:r mit seiner eigenen Gewichtung zu einem persönlichen Ergebnis kommen. Und eigentlich handelt es sich hierbei nur um ein Zwischenfazit. Denn im Anschluss möchte ich noch auf die Möglichkeiten für eine Automatisierung der Konfiguration eingehen. Und falls Du Automatisierung in Betracht ziehst, wird auch das Deine endgültige Entscheidung maßgeblich beeinflussen. Also, schauen wir uns die Möglichkeiten einmal genauer an!

Icinga DSL

Nun hab ich die Abkürzung DSL bereits zweimal verwendet ohne sie auszuschreiben! Was ich meinen Auszubildenden angekreidet hätte, will ich aber bewusst als Stilmittel verwenden. Denn tatsächlich verwendet Icinga 2 zur Konfiguration nicht eine einfache Konfigurationssprache sondern eine Domain-Specific-Language (DSL). Das Gegenstück wäre eine General-Purpose-Language (GPL) wie beispielsweise YAML. Mit einer solchen ließen sich bestimmt auch alle Monitoring-Objekte abbilden, aber die Icinga DSL erlaubt noch mehr. Dank DSL lassen sich Verzweigungen und Funktionen umsetzen und damit die Konfiguration vereinfachen, was auch die Wartung vereinfacht.

Ein Beispiel für eine Host-Definition:

object Host "localhost" {
  imports "Default Host"
  address = "127.0.0.1"
  vars.os = "Linux"
}

Was aber für mich viel wichtiger ist, ist der Ansatz dahinter. War mit Icinga 1 die Konfiguration noch sehr objekt-basierend, so dass mehr oder weniger jedes Objekt einzeln angelegt und gepflegt werden musste, ist nun die DSL für eine regel-basierte Konfiguration gedacht. Das ermöglicht es, sich Regeln für Überwachung und Benachrichtigung zu überlegen und dann die Host-Objekte mit den passenden Eigenschaften auszustatten, damit die Regeln greifen.

Ein Beispiel für eine solche Regel zur Service-Definition:

apply Service "SSH" {
  import "Default Service"
  check_command = "ssh"

  assign where host.vars.os == "Linux"
}

Auch wenn Du Dich bisher nicht eingehender mit der Icinga DSL befasst hast, kannst Du vermutlich dieses einfache Beispiel nachvollziehen und erkennen, dass für jedes System inklusive unserem “localhost” mit dem Betriebssystem Linux nun ein Service zur Überwachung des SSH-Diensts erzeugt wird. Natürlich kann es auch durchaus komplexer werden, aber auch das wollen wir vielleicht konfigurieren. Auch für einen komplexeren Befehl möchte ich Dir ein Beispiel geben.

Zeitabhängige Schwellwerte für die Überwachung der Auslastung als Beispiel für komplexere Konfiguration:

apply Service "Load" {
  import "Agent Service"
  check_command = "load"

  vars.load_wload1 = {{
    if (get_time_period("backup").is_inside) {
      return 20
    } else {
      return 5
    }
  }}
  vars.load_cload1 = {{
    if (get_time_period("backup").is_inside) {
      return 40
    } else {
      return 10
    }
  }}

  assign where host.vars.os == "Linux"
}

In diesem Beispiel werden die Schwellwerte für die Auslastung des Systems während der für das Backup definierten Timeperiod hoch gesetzt. Dadurch werden fehlerhaft-positive Alarme vermieden, ohne die Überwachung oder Alarmierung komplett abzuschalten.

Ich hoffe diese kleine Einleitung macht deutlich, was und wie wir aufgrund der Eigenschaften der Icinga DSL konfigurieren müssen. Egal ob in Konfigurationsdateien oder mit Hilfe der grafischen Oberfläche, dem Icinga Director.

Konfigurationsdateien

Der Vorteil von Konfigurationsdateien ist oftmals der “Haben wir schon immer so gemacht”-Faktor. Zwar muss man für den Einstieg die Icinga DSL lernen, aber man kann mit gewohnten Werkzeugen, Strukturen und Arbeitsweisen an die Konfiguration von Icinga herangehen. Auch eine Versionskontrolle mittels Git oder eine Automatisierung mit Ansible oder Puppet ist einfach möglich.

Eine Zusammenarbeit an den Dateien wird schon etwas komplizierter, denn alle müssen das gleiche Verständnis der Struktur mitbringen. Sollen dabei auch noch verschiedene Rollen eingenommen werden, müssen entsprechend feine Dateirechte her oder es braucht zumindest wirklich eine Versionskontrolle und damit verbundene Reviews.

Syntax-Highlighting ist für die wichtigsten Editoren vorhanden, aber trotzdem dürfte das Hauptproblem die Fehleranfälligkeit des Menschen sein. Sowohl syntaktische als auch logische Fehler fallen erst bei der Validierung durch Icinga auf und sind gerade wenn mehrere Personen parallel Änderungen vorgenommen haben auch nicht immer leicht zu finden.

Der größte Vorteil steht dem direkt entgegen, denn ohne eine weitere Abstraktion habe ich direkten und vollen Zugriff auf alle Möglichkeiten der Icinga DSL. Somit sind zahlreiche Anpassungen möglich wie die oben gezeigten zeitabhängigen Schwellwerte, aber noch vieles mehr wie das Erzeugen von Objekten per Schleife auch über komplexe Datenstrukturen oder das Auswerten und Zusammenfassen von bestehenden Checks zu einem Gesamtergebnis. Aber auch ohne die komplexen Beispiele kann eine einfache Ergänzung, wie etwa eine Fallunterscheidung, schon Arbeitserleichterung bringen und doppelte Pflege vermeiden!

Icinga Director

Übersicht des Icinga DirectorsDer Icinga Director als grafisches Frontend zur Konfiguration stellt eine Abstraktion der Icinga DSL dar, denn es müssen natürlich für alle Objekte mit allen Attributen Eingabemasken existieren. Um das noch etwas klarer zu machen, gebe ich Dir einen kurzen Einblick in die Funktionsweise des Icinga Directors. Der Director importiert von einer Icinga-Instanz grundlegende Objekte wie Check-Kommandos, Endpunkte und Zonen. Nach diesem Kickstart musst Du für die allermeisten Objekte zunächst Templates anlegen, wobei direkt Felder für zusätzliche Eigenschaften zu erstellen und anzuhängen sind. Sobald Du auch konkrete Objekte angelegt hast, kannst Du die Konfiguration für Icinga rendern und über den entsprechenden API-Endpunkt produktiv nehmen.

Das heißt auch beim Director können Fehler erst durch die Validierung durch Icinga sichtbar werden. Aber die Eingabemasken reduzieren das Fehlerpotential stark, da Syntax-Fehler weitestgehend ausgeschlossen werden. Bei der Erstellung von Templates, Feldern und Regelwerk kannst Du durch sprechende Namen, Beschreibungen, Filter die nur passende Kombinationen erlauben sowie weitere ähnliche Maßnahmen das Risiko für logische Fehler weiter senken.

Hostansicht im Icinga DirectorsAuf der Trennung von Templates und Objekten baut auch das Rechtesystem des Directors auf, denn der Zwang zur Erstellung von Templates bereitet auch eine entsprechende Rollentrennung vor. So soll gewährleistet werden, dass ein Monitoring-Administrator ganz leicht Vorgaben machen kann und beispielsweise der Linux-Administrator anschließend einfach seine Hosts einpflegen braucht. Wer darauf geachtet hat, dem ist hier mein zögerliches Zugestehen aufgefallen. Denn ein Nachteil, den ich nicht verschweigen möchte, ist leider die Dokumentation des Directors. Alles Grundsätzliche ist in der Dokumentation durchaus enthalten. Manche Details jedoch werden erst durch Ausprobieren klar und Best Practices kristallisieren sich erst mit einiger Erfahrung heraus.

Was erklärt Dir die Dokumentation gut? Komfortfunktionen wie die, dass Du über ein Attribut den Host zu einem Icinga Agenten erklären kannst, finden sich relativ einfach. Die Erklärung, dass es uns Arbeit abnimmt, nochmal separat Endpoint- und Zonen-Objekte für jeden Host zu definieren, findet sich auch. Ebenso ein Hinweis auf die Installations- und Konfigurationshilfe, die sich hinter einem neuen Tab verbirgt. Anderes ist meines Erachtens weniger optimal dokumentiert. Wie ich Checks auf einem anderen Agenten ausführe und was es für das Feature bedeutet, ist dann außer für den erfahrenen Benutzer schwer ersichtlich. Ähnlich geht es mir auch mit anderen Features wie Choices oder Datenfeldkategorien. Diese sind sicher alle optional, dienen jedoch die Benutzerführung zu verbessern und wie bereits angemerkt Fehleranfälligkeiten zu reduzieren.

Auch wenn es nicht ganz offensichtlich ist und die Möglichkeit erst einmal einschränkend wirkt, können mit dem Icinga Director sogar bei Argumenten von Check-Kommandos komplexere Konstrukte mit der Icinga DSL eingebaut werden. Das bedeutet, dass auch das Beispiel mit zeitgesteuerten Schwellwerten möglich ist. Nur muss es halt etwas anders gelöst werden.

Erwähnt werden wollen noch die integrierte CLI und API. Solche Schnittstellen sehe ich immer als Plus. Sie ermöglichen hilfreiche zusätzliche Arbeitsweisen. Die ein oder andere schnelle Schleife über die CLI hat mir schon einiges an Klick-Arbeit gespart.

Zwischenfazit

Für meine eigene kleine Instanz wären wohl Konfigurationsdateien meine erste Wahl, denn ich bin ziemlich schnell im VIM unterwegs, kenne die Icinga DSL doch ganz gut und vor allem bin dann auch nur ich auf dem System unterwegs.

Ansonsten möchte ich Dir aber den Icinga Director ans Herz legen! Mit entsprechender Vorbereitung durch einen erfahrenen Admin oder wenn Du selbst Dir die Zeit nehmen kannst, Dich einzuarbeiten, kannst Du aus dem Director einiges rausholen. Ein großer Vorteil: Du kannst im Director die Arbeit leicht auf mehrere Personen verteilen, ohne dass alle ganz tief in die Materie einsteigen müssen. Das erlaubt es euch, leicht im Team zusammenzuarbeiten und die Abhängigkeit von einzelnen Personen zu reduzieren. Auch die Qualität des Monitorings wird in der Regel besser, wenn Administratoren das Monitoring eigenverantwortlich für ihre Systeme und Dienste pflegen können. Dazu tragen auch die erwähnten Komfortfunktionen und Möglichkeiten zum Aufhübschen bei, denn zumindest ein Umdenken erfordert der Director: Weg von der einfachen Konfiguration, die das primäre Ziel verfolgt,möglichst schnell etwas zu konfigurieren, hin zu einer möglichst übersichtlichen Konfiguration, die leicht zu verstehen und damit auch zu pflegen ist!

Nun fragt sich der eine oder die andere vielleicht, ob er oder sie mit einer Mischung aus beidem nicht die Vorteile beider Welten bekommen kann. Davon möchte ich jedoch abraten! Es ist zwar theoretisch und auch praktisch möglich, erfordert aber definitiv ein sehr tiefes Verständnis. Spätestens bei der Fehlersuche kann dies zum Verhängnis werden. Zudem schränkt es die Möglichkeiten des Directors ein, Objekte aus den Konfigurationsdateien zu verwalten. Du hast beispielsweise nicht mehr die Möglichkeit, wenn Du einen Check-Command importierst, alle Eigenschaften zu pflegen. Gerne behalte die Option im Hinterkopf und denke daran, wenn Du zum Beispiel Check-Kommandos als Konfigurationsdatei beim Plugin mitgeliefert bekommst. Aber bitte plane nicht damit! Daher auch hier meine übliche Empfehlung, dass Du Dich direkt zu Beginn für einen der beiden Wege entscheidest. So ersparst Du Dir später eine Migration und damit einhergehendes Umdenken.

Möglichkeiten der Automatisierung

Automatisierung mit Jobs im Icinga DirectorsFür mich ist schlussendlich meistens nicht entscheidend, wie einzelne Objekte konfiguriert werden können, da ich im Idealfall das Monitoring gar nicht manuell pflegen möchte. Und hier kommt eine der größten Stärken des Directors zum tragen: Der Director bietet die Möglichkeit, Daten aus einer Datenquelle zu importieren und aus diesen Daten dann Monitoring-Objekte zu erzeugen. Dabei können sogar noch Modifikatoren genutzt werden, um die Daten für den Verwendungszweck anzupassen.

Als erstes einfaches Beispiel möchte ich skizzieren, wie ein Import von Benutzern aussehen könnte. Die gleiche LDAP-Ressource, die für die Authentifizierung hergenommen wird, kann im Director als Importquelle verwendet werden. Ich gehe üblicherweise her und erstelle eine erste Import-Regel, die Gruppen importiert, und da hier meist keine Anpassungen nötig sind, kann ich sie direkt zu Usergroups für Icinga synchronisieren.Als zweites erstelle ich eine Import-Regel, die Benutzer importiert, dabei die Gruppenmitgliedschaften filtert und in ein passendes Format bringt, bevor über die Synchronisation daraus User-Objekte werden. Und schon muss ich für Benachrichtigungen nur noch benötigte Templates und die eigentlichen Benachrichtigungen pflegen. Das Management der hierfür benötigten Benutzer und ihrer Gruppen übernimmt das Active Directory, egal ob neue Kolleg:innen, Namensänderungen, Team-Wechsel oder was auch immer anstehen.

Das zweite Beispiel ist in der Praxis oftmals komplizierter. Denn um das Management der Hosts zu automatisieren, braucht es eine geeignete Quelle. Gibt es eine gut gepflegte CMDB (Configuration Management Database) oder Asset Management (oder wie auch immer es im jeweiligen Unternehmen genannt wird)? Perfekt! Eventuell stellst Du fest, dass die Datenqualität nicht so hoch ist, wie Du dies gerne hättest. Und auch hier kommen Modifikatoren zum Einsatz und schaffen Abhilfe. So können etwa alle Hostnamen zum FQDN ergänzt, die Schreibweise beispielsweise des Betriebssystems vereinheitlicht, die fehlende IP-Adresse durch DNS-Abfragen herausgefunden werden oder was sonst noch nötig ist.

Falls Daten fehlen, kannst Du sie aus einer anderen Quelle beziehen, denn viele weitere Module liefern Import-Quellen für den Director. Du kannst Dir etwa Systeminformationen aus dem Konfigurationsmanagement mit Hilfe der PuppetDB oder aus der zugrunde liegenden Plattform wie VMware vSphere oder AWS holen. Und der Vorteil ist: die Daten sind garantiert richtig! Sollten immer noch Daten fehlen, kannst Du diese mit einer eigenen Quelle anreichern. Vielleicht ist die Information schon in einem Excel-Dokument gepflegt oder Du kannst Dir schnell eine CSV-Datei bauen, denn beide Möglichkeiten bringt der Fileshipper. Letzteres nutze ich so regelmäßig, um Standortinformationen anzureichern, dass diese Option sogar als Beispiel in die Schulung Icinga 2 Advanced eingeflossen ist.

Je nachdem wie sehr man dem Automatismus dann vertraut, lässt der Director sich noch weiter automatisieren, so dass Import, Synchronisation und sogar das anschließende Deployment vollautomatisch passiert. Wer im Fehlerfall nicht nachts raus geklingelt werden möchte, kann auch gerne einstellen, dass dies nur während der Arbeitszeit passiert! 😉

Fazit

Mein Zwischenfazit hat ja bereits gezeigt, dass ich zum Director tendiere, selbst wenn es nur um manuelle Konfiguration geht. Aber auch wenn Importe natürlich individuell sind und man sich Konfigurationsdateien anders auch automatisch erstellen kann: hier trumpft der Director wirklich auf! Nicht nur der Workflow ist gut gedacht und vorbereitet, sondern durch die Möglichkeit mit weiteren spezialisierten Modulen, die Zahl der Importquellen und Modifikatoren zu erweitern. Das ist bei Bedarf sogar selbst in wenigen Zeilen zu erreichen. Damit wird der Icinga Director zum ganz klaren Sieger!

Falls Du Dir nun Hilfe bei der Einrichtung des Directors wünscht oder Unterstützung bei der Automatisierung suchst, aber auch wenn Du trotz meiner Ausführungen noch nicht entscheiden kannst, was für Dich der richtige Ansatz ist, melde Dich gerne! Ich oder ein:e Kolleg:in führen gerne eine individuelle Betrachtung zu Deiner IT-Umgebung und ihren Anforderungen durch. Im Rahmen eines solchen Consultingtermins erstellen wir Dir zunächst ein Konzept und können gerne auch direkt mit der Umsetzung beginnen.

Dirk Götz
Dirk Götz
Principal Consultant

Dirk ist Red Hat Spezialist und arbeitet bei NETWAYS im Bereich Consulting für Icinga, Puppet, Ansible, Foreman und andere Systems-Management-Lösungen. Früher war er bei einem Träger der gesetzlichen Rentenversicherung als Senior Administrator beschäftigt und auch für die Ausbildung der Azubis verantwortlich wie nun bei NETWAYS.