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 wizard
als 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:
- für den Benutzer root ein Passwort setzen
mysql -u root update mysql.user set password=password('PASSWORD') where user='root';
- 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:
- Icinga2 Director: dieser ermöglicht das Konfigurieren von Checks über die Weboberfläche
- Icingaweb2-Grafana-Modul: damit ich schön gezeichnete Grafen unter den Checks habe
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
Schreibe den ersten Kommentar