Select Page

Icinga mit IcingaDB auf RHEL 7 / 8 / 9 installieren

by | Jul 7, 2023 | Monitoring & Observability, Icinga

Wer nach Open Source Monitoring Lösungen 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.
Mithilfe individualisierbarer Benachrichtigungseinstellungen kommen deine Daten immer genau dort an, wo sie von dir benötigt werden.

Unsere Installationsanleitung hilft dir dabei, einen leichten Einstieg ins Icinga Monitoring zu finden und Icinga, Icinga DB und Redis erfolgreich auf RHEL 8 / 9 oder einem auf RHEL basierenden Linux wie Rocky Linux, Alma Linux oder Oracle Linux zu installieren.

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 Installation von Icinga und Icinga DB

Bevor es um die systemischen Voraussetzungen geht, die für eine Icinga Installation notwendig sind, ein wichtiger Hinweis:
die offiziellen RHEL Repositories von Icinga sind Teil der Icinga Repository Subscription! Ohne einen offiziellen Zugang ist die Installation von Icinga auf RHEL-basierten Systemen nicht möglich! Um Zugang zu erhalten, ist ein Abo bei Icinga nötig.

Alle Infos sowie Kontaktmöglichkeiten zum Thema befinden sich auf der Homepage von Icinga. 

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

  • RHEL oder ein darauf basierendes Linux (Alma, Rocky, Alpine, uvm.)
  • 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! Um den Text einfach zu halten, wird bei den Befehlen immer von “RHEL” gesprochen. Die Befehle lassen sich jedoch ebenso auf allen RHEL basierenden Systemen anwenden.

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:

rpm --import https://packages.icinga.com/icinga.key 
wget https://packages.icinga.com/subscription/rhel/ICINGA-release.repo -O /etc/yum.repos.d/ICINGA-release.repo

Sobald dieser Befehlsblock erfolgreich durchgelaufen ist, musst du unter

/etc/yum.repos.d/ICINGA-release.repo 

deine Icinga Subscription Repository Zugangsdaten eintragen. Wird dieser Schritt vergessen, erscheint bei einem dnf update eine Fehlermeldung.

Nutzt du Rocky Linux, Alma Linux oder andere auf Red Hat Enterprise Linux basierende Betriebssysteme, kannst du direkt zu Schritt 2 weitergehen.
Nutzt du RHEL selbst, ist ein weiterer Schritt notwendig.

Für RHEL 8 oder später:

ARCH=$(/bin/arch) 
OSVER=$(. /etc/os-release; echo "${VERSION_ID%%.*}")
subscription-manager repos --enable "codeready-builder-for-rhel-${OSVER}-${ARCH}-rpms"

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-${OSVER}.noarch.rpm

RHEL 7:

subscription-manager repos --enable rhel-7-server-optional-rpms
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

 

Schritt 2: Icinga-Paket auf RHEL, Rocky Linux, Alma Linux oder anderen installieren

Mit dem Zugriff auf das Icinga-Repository kannst du das Icinga Paket direkt installieren. Welche Befehle ausgeführt werden müssen, hängt hier von der Version des Betriebssystems ab. Nutzer:innen von RHEL 8 oder höher verwenden zur Installation und Aktivierung von Icinga:

dnf install icinga2 
systemctl enable icinga2 
systemctl start icinga2

Nutzer:innen die ein RHEL 7 oder darauf basierendes Linux nutzen, verwenden wiederum:

yum install icinga2 
systemctl enable icinga2 
systemctl start 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.

Hinweis: Ist SELinux auf dem Betriebssystem aktiv, muss ein weiteres Paket installiert werden:

dnf install icinga2-selinux

Dieses Paket sorgt dafür, dass Icinga 2 trotz der Sicherheitsrichtlinien von SELinux erfolgreich kommunizieren kann.

Screenshot eines 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 alleine bringt noch keinen Erfolg. Um effektiv zu sein und Daten zu sammeln und auszuwerten, müssen Checks ausgeführt werden. Diese Check Plugins sind bei Icinga nicht von Haus aus integriert, sondern müssen aus einem externen Paket hinzugefügt werden.

Für viele Open Source Monitoringsysteme hat sich die Check-Plugin Sammlung des Monitoring Plugins Projekts als Quasi-Standard etabliert. Diese Sammlung installierst du im nächsten Schritt. Damit kannst du direkt nach Abschluss der Icinga 2 Installation die ersten Checks anlegen und mit deinem System Monitoring oder Netzwerk Monitoring starten.

Hinweis: Um dieses Paket zu installieren, muss das EPEL-Repo in deinem System eingebunden sein. Falls das noch nicht der Fall ist, dann pausiere kurz an dieser Stelle, um das Repo hinzuzufügen.

Ist das EPEL-Repository erfolgreich hinzugefügt, nutzt du im Terminal den folgenden Befehl, um die Check Plugins hinzuzufügen:

RHEL 8 oder höher:

dnf install nagios-plugins

RHEL 7:

yum install nagios-plugins

Hinweise:
Je nachdem, in welches Verzeichnis die Plugins installiert werden, muss das PluginDir in der constants.conf entsprechend angepasst werden.
Falls du dich fragst, wieso Icinga Plugins für Nagios verwendet: Historisch ist Icinga 2 aus Nagios entstanden. Die Pluginsammlung funktioniert auch bei weiteren, auf Nagios basierenden Monitoringsystemen.

Um mit Icinga zu interagieren, muss die Icinga API eingerichtet werden. Das lässt sich problemlos mit dem entsprechenden Icinga 2 Befehl anstoßen:

icinga2 api setup
systemctl restart icinga2

Damit die Icinga 2 API angesprochen werden kann, wird in der Konfigurationsdatei /etc/icinga2/conf.d/api-users.conf ein API-User (inklusive zufällig generiertem Passwort) angelegt.
(Die erzeugten Zugangsdaten werden im weiteren Verlauf der Einrichtung von Icinga Web benötigt. Du wirst im entsprechenden Schritt noch einmal darauf hingewiesen!)

Falls es bestimmte Unternehmens-Vorgaben gibt, die erfüllt werden müssen oder du generell mehr über die Icinga API erfahren willst, gibt die entsprechende Seite in den Icinga Docs einen umfassenden Überblick über die vorhandenen Möglichkeiten.

Weiter geht es mit der Einrichtung von Icinga DB.

Schritt 4: Icinga DB einrichten

Trotz des Zusatzes “DB” ist Icinga DB keine eigenständige Datenbank. Bei der Nachfolge der bisher eingesetzten IDO handelt es sich um eine Sammlung von Komponenten zur Veröffentlichung, Synchronisierung und Visualisierung von Überwachungsdaten im Icinga-Kosmos.
Zu den Komponenten der Icinga DB gehören: Redis, das IcingaDB-Feature des Icinga Core und der Icinga DB-Daemon.

Schritt 4.1: Redis Server installieren

Die Grundlage von Icinga DB bildet ein Redis Server. Um unnötige bei der Konfiguration des Servers zu unterbinden, bietet das Icinga Team ein eigenes Redis-Paket an. icindadb-redis umfasst eine aktuelle Version von Redis und ist auf die Bedürfnisse der Icinga DB hin konfiguriert. So installierst du das Paket:

RHEL 8 oder höher:

dnf install icingadb-redis

RHEL 7:

yum install icingadb-redis

Hinweis:
Grundsätzlich kann der Redis Server überall in einer Icinga Umgebung installiert werden. Um die Best Practice umzusetzen, sollte er auf dem zentralen Icinga-Node installiert werden, um die Latenz so niedrig wie möglich zu halten.

Existiert in deiner Infrastruktur bereits ein konfigurierter Redis Server kann dieser aber ebenso verwendet werden. Es sind jedoch entsprechende Anpassungen notwendig, weshalb die Nutzung des entsprechenden Icinga-Pakets empfohlen wird.

Schritt 4.2: Aktivieren von Redis

Mit der Installation von icingadb-redis werden zudem automatisch alle von Icinga DB Redis benötigten systemd Dateien angelegt. Dadurch kann der Service direkt aktiviert und gestartet werden:

systemctl enable --now icingadb-redis

In seiner Standardkonfiguration lauscht icingadb-redis auf 127.0.0.1, also deinem localhost. Sind Icinga Web 2 oder Icinga 2 auf einer anderen Node installiert als Redis, dann muss das in der Konfigurationsdatei

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

angepasst werden.

Egal ob es sich um ein Icinga 2 Monitoring handelt, das mit einer einzelnen Icinga-Node läuft (meistens Testsysteme) oder die verschiedenen Teiles des Icinga Stack auf mehreren Nodes verteilt sind, müssen an der Konfigurationsdatei zwei kleine Anpassungen vorgenommen werden:

  • 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

Starte den Service neu, damit die getätigten Änderungen aktiv werden:

systemctl restart icingadb-redis

Aktiviere das Feature in Icinga 2, um die Datenweitergabe an Redis zu aktivieren. Mit einem Neustart es gesamten Icinga Service werden alle in diesem Schritt getätigten Änderungen verifiziert:

icinga2 feature enable icingadb 
systemctl restart icinga2

Sicherheitshinweis:
Redis besitzt standardmäßig KEINE aktive Authentifizierung! Die Änderung von bind auf 0.0.0.0 bedeutet, dass unbefugter Zugriff möglich sein kann (wenn dein System nach außen kommuniziert). Um diese Sicherheitslücke zu schließen, wird empfohlen, einige Sicherheitsmaßnahmen durchzuführen.
Dazu gehören: Einrichten eines Passworts, Aufstellen von Firewall-Regeln oder Einrichten von TLS.

Für eine einfachere Verständlichkeit und einen geringeren Umfang wird in diesem Guide jedoch darauf verzichtet. Es wird dringend angeraten, diese Anpassungen ebenfalls nachträglich durchzuführen.

Schritt 4.3: Installieren der Icinga DB und Erstellen der Datenbank

Nach der Aktivierung von Icinga DB als Feature in Icinga, dient dieser Schritt dazu, das Paket auf deinem System zu installieren.

RHEL 8 oder höher:

dnf install icingadb

RHEL 7:

yum install icingadb

Um mit den Daten die Icinga 2 sammelt zu arbeiten, muss eine Datenbank für Icinga DB angelegt werden.
(In diesem Guide wird MariaDB 10.5.16 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';

Letzter Punkt in diesem Schritt ist das Einfügen des Icinga DB Datenbankschemas in die gerade angelegte Datenbank:

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

Schritt 4.4: Zugriffsberechtigungen anpassen

Die Installation von Icinga DB legt unter /etc/icingadb/config.yml eine mit Standardwerten ausgefüllte Konfigurationsdatei an. In diese Datei müssen nun die Zugangsparameter der Datenbank und Redis eingetragen werden, um eine Kommunikation aller Komponenten möglich zu machen.

Folgende Parameter müssen überprüft und ggf. angepasst werden:

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
  • 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 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 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 Icinga installiert und konfiguriert! Damit kannst du grundsätzlich sofort loslegen und über die Icinga 2 API deine ersten Objekte anlegen, Actions triggern oder Templates bauen. Welche API-Calls dir dafür zur Verfügung stehen, erfährst du ausführlich in den Icinga Docs.

Auch wenn die Icinga Installation nun einsatzbereit ist, gibt es sinnvolle Komponenten, die die bisher installierten zu ihrer vollen Funktionalität verhelfen.
Eine Open Source Monitoring Lösung wie Icinga ist erst dann ein produktiv einsetzbares Tool, wenn die gesammelten Daten 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 Guide zur Installation von Icinga Web und Icinga DB Web auf RHEL.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

More posts on the topic Monitoring & Observability | Icinga