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!
- Plattenplatz auf Linux mit ncdu analysieren - 9. August 2022
- MySQL InnoDB korrupt: Datenbank reparieren - 30. Juni 2022
- Linux Pakete zurückhalten - 26. April 2022