Icinga 2 Cluster Installation – Teil 1

Motivation

Um sicherzustellen, dass die IT-Infrastruktur richtig funktioniert, empfiehlt es sich ein Monitoringsystem, wie Icinga 2 einzurichten. Doch auch ein Monitoringsystem ist vor Ausfällen nicht sicher. Mit einem Icinga 2 Cluster kann das Ausfallrisiko minimiert werden!

Netzplan

Icinga bietet von Haus aus eine umfangreiche Cluster-Lösung an. Hier hat man die Möglichkeit große Hierarchien aus einer Vielzahl von Icinga-Instanzen zusammenzubauen. In diesem Fall bauen wir unser System nur aus drei Hosts auf: Zwei Icinga-Hosts und ein Icinga Web 2 Host. Wenn Sie sich für andere Cluster-Möglichkeiten interessieren, finden Sie hier dazu Informationen.

Icinga 2

Icinga 2 ist das Backend unseres Monitoringsystems. Hier konfigurieren wir die einzelnen Hosts und Prüfungen. Unsere beiden Icinga-Hosts teilen sich diese Checks untereinander auf. Die Ergebnisse der Prüfungen werden für das Icinga Web 2 in eine Datenbank geschrieben.

Icinga Web 2

Icinga Web 2 ist das Frontend unseres Monitoringsystems. Das Frontend führt selbst keine Prüfungen aus. Es werden nur die Ergebnisse der Backends ausgelesen. Dabei werden diese Ergebnisse auf einer übersichtlichen Oberfläche dargestellt. Im Arbeitsalltag werden wir vor allem über Icinga Web 2 arbeiten um Problemen in der IT-Infrastruktur zu finden.

Installation von Icinga 2

Bei der folgenden Installationsanleitung müssen wir darauf achten, dass wir die Befehle auf verschiedenen Hosts ausführen müssen. Dabei handelt es sich entweder um den Icinga Web 2 Server oder die beiden Icinga-Server. Beachten Sie hier, dass die Befehle für die Icinga-Server auf beiden Hosts ausgeführt werden müssen. Dieses Tutorial ist für Ubuntu 20.04. Bei anderen Betriebssystemen können die Befehle unterschiedlich sein.

Installation der Datenbank

Wir installieren die Datenbank nur auf dem Icinga Web 2 Server:

apt install mysql-server

Der MySQL-Server erlaubt standardmäßig keine externen Verbindungen. Daher müssen wir manuell externe Verbindungen erlauben. Das können wir erreichen, indem wir die Datei „/etc/mysql/mysql.conf.d/mysqld.cnf“ editieren und die Variable bind-address auf 0.0.0.0 setzen. Damit der MySQL-Port nicht jedem erreicht werden darf, sollte dieser über die iptables-Firewall (oder eine andere Firewall) entsprechend geblockt werden.

Danach müssen wir die Datenbank und die Datenbank-User anlegen

create database icingadb; create database icinga_users;
CREATE USER icinga_user@localhost IDENTIFIED BY 'PASSWORT';
GRANT ALL privileges on icingadb.* to icinga_user@localhost;
GRANT ALL privileges on icinga_users.* to icinga_user@localhost;
CREATE USER icinga_user@IP_ERSTER_ICINGAHOST IDENTIFIED BY 'PASSWORT';
GRANT ALL privileges on icingadb.* to icinga_user@IP_ERSTER_ICINGAHOST;
GRANT ALL privileges on icinga_users.* to icinga_user@IP_ERSTER_ICINGAHOST;
CREATE USER icinga_user@IP_ZWEITER_ICINGAHOST IDENTIFIED BY 'PASSWORT';
GRANT ALL privileges on icingadb.* to icinga_user@IP_ZWEITER_ICINGAHOST;
GRANT ALL privileges on icinga_users.* to icinga_user@IP_ZWEITER_ICINGAHOST;
FLUSH PRIVILEGES;

Nun prüfen wir noch folgendes: Können wir uns von den beiden Icinga-Hosts auf die Datenbank verbinden? Blockiert die Firewall alle anderen Hosts? Ist dies erledigt, dann können wir anfangen die Icinga-Backends zu installieren.

Installation der Icinga 2-Server

Die folgenden Befehle müssen wir auf beiden Icinga 2 Servern ausführen.

Da Icinga 2 nicht mit den Standard Ubuntu-Repositories installiert werden kann, müssen wir dieses hinzufügen.

wget -O - https://packages.icinga.com/icinga.key | apt-key add -
echo 'deb https://packages.icinga.com/ubuntu icinga-bionic main' > /etc/apt/sources.list.d/icinga-main-bionic.list

Jetzt können wir Icinga 2 einfach installieren

apt install -y icinga2 icinga2-bin icinga2-common icinga2-ido-mysql monitoring-plugins nagios-nrpe-plugin

Danach spielen wir das Icinga 2 Datenbankschema in die Datenbank ein. Hier müssen wir beachten, dass wir diesen Befehl nur einmal ausführen müssen, da beide Hosts die selbe Datenbank benutzen.

mysql -h IP_DER_DB -u icinga_user icingadb -p < /usr/share/icinga2-ido-mysql/schema/mysql.sql

Jetzt aktivieren wir noch folgende Icinga-Module

icinga2 feature enable ido-mysql command api

Danach konfigurieren wir die Icinga 2 API.

icinga2 api setup

Und dann erstellen wir noch einen API-User in der Datei /etc/icinga2/conf.d/api-users.conf

object ApiUser "icinga2_API_root" {
  password = "PASSWORT_API_USER"
  permissions = [ "*" ]
}

Nun sagen wir noch Icinga, welche Datenbank es benutzen soll. Dazu bearbeiten wir die Datei /etc/icinga2/features-available/ido-mysql.conf und fügen die Datenbank-Daten nach folgendem Schema ein

object IdoMysqlConnection "ido-mysql" {
  user = "icinga_user",
  password = "PASSWORT",
  host = "IP_DB_HOST",
  database = "icingadb"
}

Zuletzt starten wir noch einmal Icinga 2 neu.

/etc/init.d/icinga2 restart

Jetzt haben wir zwei unabhängige Icinga 2 Installationen. Beide Instanzen schreiben in die gleiche Datenbank und wir haben kein Monitoring-Frontend. Wie Sie die beiden Hosts clustern und Icinga Web 2 installieren, erfahren Sie im zweiten Teil der Icinga 2 Cluster Installation.

Besuchen Sie doch auch unsere Icinga Seite für mehr Informationen! Gerne unterstützen wir Sie bei Ihrem Vorhaben!