Zum Inhalt

Monitoring mit Icinga2

Wer in seiner Freizeit schon mal den einen oder anderen Server an der Start geschoben hat, der wird wissen, dass Fehler immer passieren. So lange es ein Hobby ist und die Server nur zur persönlichen Benutzung laufen, dann ist das auch nicht so wild. Schwierig wird es, wenn auch noch andere Leute diese Server nutzen und man selber für die Zuverlässigkeit verantwortlich ist. Spätestens dann sollte man sich an die Konsole setzen und Monitoring für diese Dienste und Server schaffen.

Das Gute – mittlerweile bieten sehr viele Provider schon von Hause aus ein rudimentäres Monitoring an. So wird meist die Auslastung der CPU, des Arbeitsspeichers und der Netzwerkschnittstelle im Benutzerportal für jeden, einzelnen Server angezeigt. Außerdem bekommt man eine Benachrichtigung, wenn der Webserver keine Seiten mehr ausliefert, oder auf Pings nicht mehr reagiert. Damit kann man bei einem Server schon gut leben.

Aber was ist, wenn man gerne mehrer Server auf einen Blick haben möchte? Wie funktioniert das bei Servern, welche bei unterschiedlichen Providern laufen? Und hier kommt Icinga2 ins Spiel. Die Einrichtung ist gar nicht so kompliziert. Und mit den richtigen Erweiterungen wird daraus ein sehr nützliches Tool für jeden Hobby-Admin. Wie das Ganze aussehen und funktionieren kann, versuche ich hier zu beschreiben.

Vorbereitungen

Die folgenden, nötigen Voraussetzungen habe ich vor der Installation von Icinga2 geschaffen:

  • Server mit Debian 9.1 – Minimalinstallation
  • Einrichtung von Exim4 zum Emailversand über einen Smarthost ist abgeschlossen
  • apt-transport-https zum Einbinden von Repositorys über https sollte installiert sein

In Debian 9 gibt es zwar ein Installationspaket im Standard-Repository, nur nutze ich lieber das Repository vom Monitoring-Projekt. Dazu muss im ersten Schritt die Paketquelle hinterlegt werden. Im zweiten Schritt holen wir uns den nötigen Key für das Repository, sonst mag der Server nicht mit dem Repo „reden“.

# add debmon Debian 9.0
cat <<EOF >/etc/apt/sources.list.d/debmon.list
deb https://debmon.org/debmon debmon-stretch main
EOF

# add debmon key
wget -O - https://debmon.org/debmon/repo.key 2>/dev/null | apt-key add -

Icinga2 installieren

Nach einem apt-get update können wir mittels apt-get install icinga2  die Monitoringsoftware installieren.

In meinem Fall soll der Server als Master fungieren. Er soll die Daten aller anderen Server einsammeln und mich im Fehlerfall benachrichtigen. Somit konfiguriere ich Icinga2 über den Befehl icinga2 node wizardals Master. Dazu muss nach dem Start des Vorgangs die erste Frage mit n beantwortet werden. In der zweiten Frage gibt man den C-Name für den Server an. Damit wird ein Zertifikat generiert, über welches die Kommunikation zwischen dem Master und den Clients verschlüsselt wird.

Tipp: Als Standard liest Icinga2 den Hostname des Servers aus und bietet diesen als C-Name an. Je nachdem bei welchem Provider man seinen Server hat, ist dieser Hostname meist festgeschrieben und in Punkto Unverständlichkeit nicht zu unterbieten. Somit ist es meines Erachtens sinnvoll, diesen zu ersetzen.

Danach wird der Service neu gestartet und läuft direkt mit aktiven Standard-Checks. Wenn euer Server Mails verschicken kann, bekommt ihr unter Umständen jetzt schon die ersten Fehlermails. (z.B. wenn euer Server keine Swap-Partition besitzt)

Vorbereitungen für Icingaweb2

Icingaweb2 ist, wie der Name schon sagt, ein Webinterface für Icinga2. Darüber kann man sich über eine recht moderne Weboberfläche im Browser die Status seiner überwachten Server und Dienste ansehen. Was man dazu im Groben benötigt, sind:

  • Webserver (z.B. Apache2)
  • Datenbank (z.B. MariaDB)
  • icinga2-ido-mysql für die Verbindung zwischen Icinga2 und Icingaweb2
apt-get install apache2 mariadb-server icinga2-ido-mysql

Hinweis: Bei der Installation von icinga2-ido-mysql wird ein Assistent zur Einrichtung der nötigen Datenbank gestartet. Ich empfehle dies Schritte über den Assistenten zu erledigen.

 

Danach aktivieren wir zwei nötige Feature über die Konsole und starten Icinga2 neu.

icinga2 feature enable ido-mysql
icinga2 feature enable command
service icinga2 restart

Zusatz: Ich für mein Teil betreibe auf meinen Servern keine Webpage ohne eine saubere https-Verbindung. Aus diesem Grund führe ich an dieser Stelle die folgenden Schritte durch

  • Config-Dateien unter /etc/apace2/sites-available anpassen (korrekten ServerName eintragen)
  • Certbot installieren und ein Zertifikat von Let’s Encrypt
  • Zeitzone in der der Datei /etc/php/7.0/apache2/php.ini korrekt einstellen (für Icingaweb2 nötig)
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Berlin

Alle Schritte sind sehr einfach und am Ende hat man einen Webserver, welcher alle http-Anfragen auf eine https-Verbindung umschreibt. Icingaweb2 funktioniert aber auch ohne https.

Danach starten wir den Apache2 mit service apache2 restart neu, damit alle Einstellungen übernommen werden.

Jetzt müssen wir dem icingaweb-Benutzer noch Zugriff auf die icinga2-Datenbank gewähren, welche bei der Installation von icinga2-ido-mysql angelegt wurde. Das erledigen wir über die Konsole wie folgt:

mysql
GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga2.* TO 'icingaweb'@'localhost' IDENTIFIED BY '<PASSWORD>';
FLUSH PRIVILEGES;
quit;

Bei der Verwendung von MariaDB gibt es noch eine Besonderheit. Arbeitet man nicht als root oder mit sudo, dann kann man sich nicht anmelden. Somit ist das Erstellen einer Datenbank über ein Web-Frontend nicht möglich. Damit das wieder funktioniert, müssen wir die folgenden Schritte durchführen:

  1. für den Benutzer root ein Passwort setzen
    mysql -u root
    update mysql.user set password=password('PASSWORD') where user='root';
  2. das Plugin unix-socket für root deaktivieren
    select user,host,password,plugin from mysql.user;
    update mysql.user set plugin='' where user='root';
    select user,host,password,plugin from mysql.user;

Icingaweb2 Setup

Über einen Browser können wir das Setup von Icingaweb2 über die folgende URL aufrufen: https://monitoring.deinedomain.de/icingaweb2/setup

Für die Installation verlangt die Seite einen Token, welchen wir über die Konsole – wie auf der Seite beschrieben – generieren können:

icingacli setup config directory --group icingaweb2
icingacli setup token create

Danach folgen wir einfach dem Setup.

Tipp: Ich habe in meiner Config-Datei für die ssl-site eine Regel zum Umschreiben der URL hinterlegt.

RewriteEngine On
RewriteRule ^/?$ https://%{HTTP_HOST}%{REQUEST_URI}/icingaweb2 [R=301,NC,L]

Damit brauche man nur monitoring.meineDomain.de eingeben und man wird direkt zur Login-Seite von Icinga2 geleitet.

Was kommt noch

Icingaweb2 ist nicht nur eine nützliche Oberfläche für Icinga2. Es gibt dafür Module für spezielle Aufgaben, welche den Funktionsumfang erweitern. Folgende Module werde ich noch installieren:

TIPP:

Wenn man das seltsam Blau der Oberfläche nicht mag, kann man diese auch mit einem einzigen Befehl über die Konsole dunkel gestalten:

sed -i 's/@icinga-blue: #0095BF;/@icinga-blue: #333;/g' /usr/share/icingaweb2/public/css/icinga/base.less

 

 

Published inNützliches

Schreibe den ersten Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.