Monitoring Software · 24 min read · Nov 07, 2025
So installieren Sie die Icinga 2 Monitoring-Software auf Ubuntu 22.04 LTS

Icinga2 ist eine kostenlose, Open-Source-Netzwerküberwachungssoftware, die die Verfügbarkeit von Ressourcen im Netzwerk überprüfen und Benutzer über Ausfälle benachrichtigen kann. Sie können Netzwerkdienste (SMTP, POP3, HTTP, NNTP, Ping), Hostressourcen (CPU-Auslastung, Festplattenspeicher) und Netzwerkkomponenten (Switches, Router, Temperatur- und Feuchtigkeitssensoren) mit Icinga2 überwachen. Es kann mit Nagios-Plugins integriert werden.
In diesem Tutorial lernen Sie, wie Sie Icinga2 auf einem Ubuntu 22.04-Server installieren und wie Sie es mit einem Client-Knoten verbinden. Anstelle des standardmäßigen Apache-Servers verwenden wir Nginx, um Icinga2 Web auszuführen.
Voraussetzungen
- Zwei Maschinen, die Ubuntu 22.04 ausführen. Eine davon fungiert als Master-Server und die andere als Client zur Überwachung.
- Ein Nicht-Root-Benutzer mit Sudo-Rechten auf beiden Servern.
- Ein vollständig qualifizierter Domainname (FQDN) für den Master-Server,
icinga.example.com, und den Client-Knoten,client.example.com. - Stellen Sie sicher, dass alles aktualisiert ist.
$ sudo apt update $ sudo apt upgrade - Einige Pakete, die Ihr System benötigt.
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -yEinige dieser Pakete sind möglicherweise bereits auf Ihrem System installiert.
Schritt 1 - Firewall auf dem Master-Server konfigurieren
Der erste Schritt besteht darin, die Firewall zu konfigurieren. Ubuntu wird standardmäßig mit ufw (Uncomplicated Firewall) geliefert.
Überprüfen Sie, ob die Firewall läuft.
$ sudo ufw status
Sie sollten die folgende Ausgabe erhalten.
Status: inactive
Erlauben Sie den SSH-Port, damit die Firewall die aktuelle Verbindung beim Aktivieren nicht unterbricht.
$ sudo ufw allow OpenSSH
Erlauben Sie den Port 5665, der vom Icinga2-Client benötigt wird, um eine Verbindung zum Server herzustellen.
$ sudo ufw allow 5665
Erlauben Sie auch die HTTP- und HTTPS-Ports.
$ sudo ufw allow http
$ sudo ufw allow https
Aktivieren Sie die Firewall
$ sudo ufw enable
Befehl kann bestehende SSH-Verbindungen stören. Mit der Operation fortfahren (y|n)? y
Firewall ist aktiv und beim Systemstart aktiviert
Überprüfen Sie den Status der Firewall erneut.
$ sudo ufw status
Sie sollten eine ähnliche Ausgabe sehen.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
5665 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
5665 (v6) ALLOW Anywhere (v6)
Schritt 2 - MySQL installieren
Ubuntu 22.04 wird mit der neuesten Version von MySQL ausgeliefert. Sie können es mit einem einzigen Befehl installieren.
$ sudo apt install mysql-server
Überprüfen Sie die Version von MySQL.
$ mysql --version
mysql Ver 8.0.32-0ubuntu0.22.04.2 für Linux auf x86_64 ((Ubuntu))
Dieser Schritt ist für MySQL-Versionen 8.0.28 und höher erforderlich. Geben Sie die MySQL-Shell ein.
$ sudo mysql
Führen Sie den folgenden Befehl aus, um das Passwort für Ihren Root-Benutzer festzulegen. Stellen Sie sicher, dass es eine Mischung aus Zahlen, Großbuchstaben, Kleinbuchstaben und Sonderzeichen enthält.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Verlassen Sie die Shell.
mysql> exit
Führen Sie das MySQL-Sicherheitsinstallationsskript aus.
$ sudo mysql_secure_installation
Zuerst werden Sie nach Ihrem Root-Passwort gefragt. Geben Sie es ein. Als Nächstes werden Sie gefragt, ob Sie die Validate Password-Komponente installieren möchten. Es überprüft die Stärke der in MySQL verwendeten Passwörter. Drücken Sie Y, um es zu installieren. Als Nächstes werden Sie gefragt, ob Sie die Stufe der Passwortvalidierungspolitik festlegen möchten. Wählen Sie 2, da dies die stärkste ist.
Sichern der MySQL-Serverbereitstellung.
Geben Sie das Passwort für den Benutzer root ein:
VALIDATE PASSWORD COMPONENT kann verwendet werden, um Passwörter zu testen
und die Sicherheit zu verbessern. Es überprüft die Stärke des Passworts
und erlaubt den Benutzern, nur solche Passwörter festzulegen, die
sicher genug sind. Möchten Sie die VALIDATE PASSWORD-Komponente einrichten?
Drücken Sie y|Y für Ja, eine andere Taste für Nein: Y
Es gibt drei Stufen der Passwortvalidierungspolitik:
NIEDRIG Länge >= 8
MITTEL Länge >= 8, numerisch, gemischte Groß- und Kleinschreibung und Sonderzeichen
STARK Länge >= 8, numerisch, gemischte Groß- und Kleinschreibung, Sonderzeichen und Wörterbuchdatei
Bitte geben Sie 0 = NIEDRIG, 1 = MITTEL und 2 = STARK ein: 2
Verwenden des vorhandenen Passworts für root.
Geschätzte Stärke des Passworts: 100
Geben Sie als Nächstes N ein, um sich zu weigern, Ihr Root-Passwort zu ändern. Geben Sie auch Y ein, um anonyme Benutzer zu entfernen, entfernte Root-Anmeldungen zu verbieten, die Testdatenbank zu entfernen und die Berechtigungstabellen neu zu laden.
Ändern Sie das Passwort für root? ((Drücken Sie y|Y für Ja, eine andere Taste für Nein): N
... überspringen.
Standardmäßig hat eine MySQL-Installation einen anonymen Benutzer,
was es jedem ermöglicht, sich bei MySQL anzumelden, ohne ein
Benutzerkonto erstellen zu müssen. Dies ist nur für
Tests gedacht und um die Installation etwas reibungsloser zu gestalten.
Sie sollten sie entfernen, bevor Sie in eine Produktionsumgebung wechseln.
Anonyme Benutzer entfernen? (Drücken Sie y|Y für Ja, eine andere Taste für Nein): Y
Erfolg.
Normalerweise sollte root nur von
'localhost' aus eine Verbindung herstellen dürfen. Dies stellt sicher, dass jemand nicht das
Root-Passwort aus dem Netzwerk erraten kann.
Entfernte Root-Anmeldung verbieten? (Drücken Sie y|Y für Ja, eine andere Taste für Nein): Y
Erfolg.
Standardmäßig wird MySQL mit einer Datenbank namens 'test' geliefert, auf die
jeder zugreifen kann. Dies ist ebenfalls nur für Tests gedacht
und sollte entfernt werden, bevor Sie in eine Produktionsumgebung wechseln.
Testdatenbank und Zugriff darauf entfernen? (Drücken Sie y|Y für Ja, eine andere Taste für Nein): Y
- Testdatenbank wird gelöscht...
Erfolg.
- Berechtigungen für die Testdatenbank werden entfernt...
Erfolg.
Das Neuladen der Berechtigungstabellen stellt sicher, dass alle Änderungen,
die bisher vorgenommen wurden, sofort wirksam werden.
Berechtigungstabellen jetzt neu laden? (Drücken Sie y|Y für Ja, eine andere Taste für Nein): Y
Erfolg.
Alles erledigt!
Schritt 3 - MySQL konfigurieren
Melden Sie sich bei der MySQL-Shell an. Geben Sie Ihr Root-Passwort ein, wenn Sie dazu aufgefordert werden.
$ sudo mysql -u root -p
Erstellen Sie die Icinga-Datenbank.
mysql> CREATE DATABASE icinga2;
Erstellen Sie das SQL-Benutzerkonto für Icinga2. Ändern Sie die Datenbank und den Benutzernamen nicht, da sie bereits standardmäßig festgelegt sind. Wenn Sie sie ändern möchten, müssen Sie während der Installation des MySQL-Treibers in Schritt 5 einige zusätzliche Schritte ausführen. Geben Sie das Passwort ein, und Sie erhalten einen Fehler und werden dann aufgefordert, die Konfiguration zu ändern, wo Sie Ihren benutzerdefinierten Datenbanknamen und Benutzer angeben können.
mysql> CREATE USER 'icinga2'@'localhost' IDENTIFIED BY 'Your_password2';
Gewähren Sie dem Benutzer alle Berechtigungen für die Datenbank.
mysql> GRANT ALL PRIVILEGES ON icinga2.* TO 'icinga2'@'localhost';
Aktualisieren Sie die Benutzerberechtigungen.
mysql> FLUSH PRIVILEGES;
Verlassen Sie die Shell.
mysql> exit
Schritt 4 - Icinga2 und Überwachungs-Plugins auf dem Master-Server installieren
Wir werden das offizielle Icinga2-Repository für die Installation verwenden. Laden Sie den Icinga2 GPG-Schlüssel herunter und importieren Sie ihn.
$ wget -O - https://packages.icinga.com/icinga.key | sudo gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg
Führen Sie die folgenden Befehle aus, um die Icinga2-Repository-Informationen zur APT-Quellenliste zu erstellen und hinzuzufügen.
$ echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-`lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
$ echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] http://packages.icinga.com/ubuntu icinga-`lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
Aktualisieren Sie die Systemrepositoryliste.
$ sudo apt update
Installieren Sie Icinga2 und die Überwachungs-Plugins.
$ sudo apt install icinga2 monitoring-plugins -y
Schritt 5 - IDO MySQL-Treiber auf dem Master-Server installieren
Damit Icinga2 funktioniert, benötigt es eine Datenbank. Dazu müssen wir den IDO MySQL-Treiber installieren und die Datenbankverbindung einrichten. Führen Sie den folgenden Befehl aus, um den MySQL-Treiber zu installieren.
$ sudo apt install -y icinga2-ido-mysql
Sie werden aufgefordert, den Treiber einzurichten und eine Datenbank mit dem Dienstprogramm dbconfig-common zu erstellen. Wählen Sie Ja, um fortzufahren.
Als Nächstes werden Sie nach dem MySQL-Passwort für die icinga2-Datenbank gefragt. Geben Sie das Passwort ein, das in Schritt 3 konfiguriert wurde, um fortzufahren.

Sie werden aufgefordert, das Passwort erneut zu bestätigen.

Als Nächstes werden Sie gefragt, ob Sie die ido-mysql-Funktion aktivieren möchten. Wählen Sie Ja, um fortzufahren.

Sie können die Datenbankdetails in der Datei /etc/icinga2/features-available/ido-mysql.conf überprüfen.
$ cat /etc/icinga2/features-available/ido-mysql.conf
/**
* Die db_ido_mysql-Bibliothek implementiert die IDO-Funktionalität
* für MySQL.
*/
library "db_ido_mysql"
object IdoMysqlConnection "ido-mysql" {
user = "icinga2",
password = "Your_password2",
host = "localhost",
database = "icinga2"
}
Aktivieren Sie die ido-mysql-Funktion.
$ sudo icinga2 feature enable ido-mysql
Starten Sie den Icinga2-Dienst neu.
$ sudo systemctl restart icinga2
Überprüfen Sie den Dienststatus.
$ sudo systemctl status icinga2
? icinga2.service - Icinga Host-/Dienst-/Netzwerküberwachungssystem
Loaded: loaded (/lib/systemd/system/icinga2.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/icinga2.service.d
??limits.conf
Active: active (running) since Mon 2023-05-01 08:02:36 UTC; 1s ago
Process: 9823 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/default/icinga2 (code=exited, status=0/SUCCESS)
Main PID: 9828 (icinga2)
Status: "Startup abgeschlossen."
Tasks: 10
Memory: 17.6M
CPU: 657ms
CGroup: /system.slice/icinga2.service
??9828 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
??9846 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
??9849 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
Schritt 6 - Icinga2 API konfigurieren
Um die Icinga2-Überwachung über HTTP zu verwalten und zu konfigurieren, müssen Sie die Icinga2-API konfigurieren. Führen Sie den folgenden Befehl aus, um die Icinga2-API zu aktivieren, TLS-Zertifikate für Icinga2 zu generieren und die Icinga2-Konfigurationen zu aktualisieren.
$ sudo icinga2 api setup
Sie erhalten eine ähnliche Ausgabe.
information/cli: Generating new CA.
information/base: Writing private key to '/var/lib/icinga2/ca//ca.key'.
information/base: Writing X509 certificate to '/var/lib/icinga2/ca//ca.crt'.
information/cli: Generating new CSR in '/var/lib/icinga2/certs//icinga.example.com.csr'.
information/base: Writing private key to '/var/lib/icinga2/certs//icinga.example.com.key'.
information/base: Writing certificate signing request to '/var/lib/icinga2/certs//icinga.example.com.csr'.
information/cli: Signing CSR with CA and writing certificate to '/var/lib/icinga2/certs//icinga.example.com.crt'.
information/pki: Writing certificate to file '/var/lib/icinga2/certs//icinga.example.com.crt'.
information/cli: Copying CA certificate to '/var/lib/icinga2/certs//ca.crt'.
information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'.
information/cli: Reading '/etc/icinga2/icinga2.conf'.
information/cli: Enabling the 'api' feature.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.
information/cli: Updating 'NodeName' constant in '/etc/icinga2/constants.conf'.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
information/cli: Updating 'ZoneName' constant in '/etc/icinga2/constants.conf'.
information/cli: Backup file '/etc/icinga2/constants.conf.orig' already exists. Skipping backup.
Done.
Jetzt starten Sie Ihren Icinga 2-Daemon neu, um die Installation abzuschließen!
Der obige Befehl erstellt eine Datei /etc/icinga2/conf.d/api-users.conf mit dem Standardbenutzer root, der alle Berechtigungen über die Icinga2-API hat. Wir benötigen einen neuen Benutzer mit minimalen Berechtigungen, die von Icinga Web benötigt werden.
Öffnen Sie die Datei api-users.conf zur Bearbeitung.
$ sudo nano /etc/icinga2/conf.d/api-users.conf
Fügen Sie den folgenden Code am Ende der Datei hinzu.
/** api für icingaweb2 */
object ApiUser "icingaweb2" {
password = "PassWordApiIcingaWeb2"
permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ]
}
Notieren Sie sich die Anmeldeinformationen, die später zum Zugriff auf die Website benötigt werden. Der Icinga2-API-Server hört standardmäßig auf Port 5665. Starten Sie den Dienst neu, damit die Änderungen wirksam werden.
$ sudo systemctl restart icinga2
Der nächste Schritt besteht darin, die Icinga-Weboberfläche zu installieren. Sie ist standardmäßig für Apache vorkonfiguriert, aber wir werden den Nginx-Server verwenden. Daher müssen wir zuerst Nginx und die SSL-Zertifikate installieren.
Schritt 7 - Nginx installieren
Ubuntu 22.04 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, müssen Sie das offizielle Nginx-Repository herunterladen.
Importieren Sie den Signaturschlüssel von Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Fügen Sie das Repository für die stabile Version von Nginx hinzu.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Aktualisieren Sie die Systemrepositorys.
$ sudo apt update
Installieren Sie Nginx.
$ sudo apt install nginx
Überprüfen Sie die Installation.
$ nginx -v
nginx version: nginx/1.24.0
Starten Sie den Nginx-Server.
$ sudo systemctl start nginx
Schritt 8 - SSL installieren
Wir müssen Certbot installieren, um das SSL-Zertifikat zu generieren. Sie können Certbot entweder über das Ubuntu-Repository installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden.
Ubuntu 22.04 wird standardmäßig mit Snapd installiert. Führen Sie die folgenden Befehle aus, um sicherzustellen, dass Ihre Version von Snapd auf dem neuesten Stand ist.
$ sudo snap install core && sudo snap refresh core
Installieren Sie Certbot.
$ sudo snap install --classic certbot
Verwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zum Verzeichnis /usr/bin erstellen.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Führen Sie den folgenden Befehl aus, um ein SSL-Zertifikat zu generieren.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d icinga.example.com
Der obige Befehl lädt ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/icinga.example.com auf Ihrem Server herunter.
Generieren Sie ein Diffie-Hellman-Gruppen-Zertifikat.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Überprüfen Sie den Zeitplan für den Certbot-Erneuerungsdienst.
$ sudo systemctl list-timers
Sie finden snap.certbot.renew.service als einen der Dienste, die geplant sind.
NÄCHST ÜBRIG LETZTE VERGANGEN EINHEIT AKTIVIERT
------------------------------------------------------------------------------------------------------------------------------------
Mon 2023-05-01 13:37:57 UTC 3h 45min übrig Mon 2023-05-01 07:20:42 UTC 2h 31min her ua-timer.timer ua-timer.service
Mon 2023-05-01 14:39:29 UTC 4h 47min übrig Sa 2023-02-04 16:04:18 UTC 2 Monate her motd-news.timer motd-news.service
Mon 2023-05-01 15:53:00 UTC 6h übrig n/a n/a snap.certbot.renew.timer snap.certbot.renew.service
Führen Sie einen Testlauf des Prozesses durch, um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert.
$ sudo certbot renew --dry-run
Wenn Sie keine Fehler sehen, sind Sie bereit. Ihr Zertifikat wird automatisch erneuert.
Schritt 9 - Nginx und PHP konfigurieren
Da Icinga für Apache konfiguriert ist, ist das PHP-FPM-Paket standardmäßig nicht installiert. Sie benötigen auch das PHP-Imagick-Modul, wenn Sie die Grafiken als PDF exportieren möchten. Führen Sie den folgenden Befehl aus, um PHP-FPM und die PHP-Imagick-Bibliothek zu installieren.
$ sudo apt install php-fpm php-imagick
PHP-FPM konfigurieren
Öffnen Sie die Datei /etc/php/8.1/fpm/pool.d/www.conf.
$ sudo nano /etc/php/8.1/fpm/pool.d/www.conf
Wir müssen den Unix-Benutzer/die Gruppe der PHP-Prozesse auf nginx setzen. Suchen Sie die Zeilen user=www-data und group=www-data in der Datei und ändern Sie sie in nginx.
...
; Unix-Benutzer/-Gruppe der Prozesse
; Hinweis: Der Benutzer ist obligatorisch. Wenn die Gruppe nicht festgelegt ist, wird die Gruppe des Standardbenutzers verwendet.
; wird verwendet.
user = nginx
group = nginx
...
Suchen Sie die Zeilen listen.owner = www-data und listen.group = www-data in der Datei und ändern Sie sie in nginx.
; Setzen Sie Berechtigungen für den Unix-Socket, falls einer verwendet wird. In Linux müssen Lese-/Schreibberechtigungen festgelegt werden,
; um Verbindungen von einem Webserver zuzulassen. Viele BSD-abgeleitete Systeme erlauben Verbindungen unabhängig von Berechtigungen. Der Besitzer
; und die Gruppe können entweder nach Namen oder nach ihren numerischen IDs angegeben werden.
; Standardwerte: Benutzer und Gruppe sind als laufender Benutzer festgelegt
; Modus ist auf 0660 festgelegt
listen.owner = nginx
listen.group = nginx
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Starten Sie den PHP-FPM-Dienst neu.
$ sudo systemctl restart php8.1-fpm
Nginx konfigurieren
Erstellen und öffnen Sie die Datei /etc/nginx/conf.d/icinga.conf zur Bearbeitung.
$ sudo nano /etc/nginx/conf.d/icinga.conf
Fügen Sie den folgenden Code ein.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name icinga.example.com;
access_log /var/log/nginx/icinga.access.log;
error_log /var/log/nginx/icinga.error.log;
# SSL
ssl_certificate /etc/letsencrypt/live/icinga.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/icinga.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/icinga.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
resolver 8.8.8.8;
location ~ ^/index\.php(.*)$ {
# fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # Hängt von der PHP-Version ab
fastcgi_index index.php;
# try_files $uri =404;
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/share/icingaweb2/public/index.php;
fastcgi_param ICINGAWEB_CONFIGDIR /etc/icingaweb2;
fastcgi_param REMOTE_USER $remote_user;
}
location ~ ^/(.*)? {
alias /usr/share/icingaweb2/public;
index index.php;
rewrite ^/$ /dashboard;
try_files $1 $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
return 404;
}
}
# erzwinge HTTPS
server {
listen 80;
listen [::]:80;
server_name icinga.example.com;
return 301 https://$host$request_uri;
}
Beachten Sie, dass das Stammverzeichnis, das in der Nginx-Konfiguration verwendet werden soll, /usr/share/icingaweb2/public ist.
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Öffnen Sie die Datei /etc/nginx/nginx.conf zur Bearbeitung.
$ sudo nano /etc/nginx/nginx.conf
Fügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; hinzu.
server_names_hash_bucket_size 64;
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Überprüfen Sie die Syntax der Nginx-Konfigurationsdatei.
$ sudo nginx -t
nginx: die Konfigurationsdatei /etc/nginx/nginx.conf Syntax ist ok
nginx: Konfigurationsdatei /etc/nginx/nginx.conf Test war erfolgreich
Starten Sie den Nginx-Dienst neu.
$ sudo systemctl restart nginx
Schritt 10 - Web-Setup vorbereiten
Bevor Sie auf Icinga Web zugreifen, müssen wir es einrichten. Bei der Verwendung von Icinga Web müssen Sie sich mit einem Token authentifizieren. Generieren Sie das Token mit dem folgenden Befehl.
$ sudo icingacli setup token create
Das neu generierte Setup-Token lautet: 3c4d4e155635f512
Notieren Sie sich das Token, da Sie es später benötigen. Sie können es jederzeit später mit dem folgenden Befehl abrufen.
$ sudo icingacli setup token show
Das aktuelle Setup-Token lautet: 3c4d4e155635f512
Der nächste Schritt besteht darin, eine Datenbank und ein Datenbankbenutzerkonto zu erstellen. Melden Sie sich bei der MySQL-Shell an.
$ sudo mysql -u root -p
Erstellen Sie die Icinga Web-Datenbank.
mysql> CREATE DATABASE icingaweb2;
Erstellen Sie das SQL-Benutzerkonto für Icinga Web.
mysql> CREATE USER 'icingaweb2'@'localhost' IDENTIFIED BY 'Your_password3';
Gewähren Sie dem Benutzer alle Berechtigungen für die Datenbank.
mysql> GRANT ALL PRIVILEGES ON icingaweb2.* TO 'icingaweb2'@'localhost';
Aktualisieren Sie die Benutzerberechtigungen.
mysql> FLUSH PRIVILEGES;
Verlassen Sie die Shell.
mysql> exit
Schritt 11 - IcingaWeb einrichten
Öffnen Sie die URL https://icinga.example.com in Ihrem Browser, und Sie erhalten den folgenden Bildschirm.

Geben Sie das im vorherigen Schritt generierte Token ein und drücken Sie die Schaltfläche Weiter, um fortzufahren.

Auf dem nächsten Bildschirm wählen Sie die Module aus, die Sie installieren möchten, und klicken Sie auf Weiter, um fortzufahren. Das Monitoring-Modul ist standardmäßig für Sie ausgewählt. Auf der nächsten Seite werden Ihnen die Anforderungen angezeigt und ob sie erfüllt sind. Stellen Sie sicher, dass alle Anforderungen grün markiert sind.

Klicken Sie auf Weiter, um zur nächsten Seite zu gelangen, um den Authentifizierungstyp auszuwählen.

Der Authentifizierungstyp ist standardmäßig auf Datenbank eingestellt. Klicken Sie auf Weiter, um fortzufahren. Sie werden aufgefordert, die Datenbankanmeldeinformationen auf der nächsten Seite auszufüllen.

Füllen Sie die Datenbankanmeldeinformationen aus, die in Schritt 10 erstellt wurden. Klicken Sie auf die Schaltfläche Konfiguration validieren, um die Anmeldeinformationen zu überprüfen. Nach der Überprüfung klicken Sie auf Weiter, um fortzufahren. Als Nächstes werden Sie aufgefordert, den Authentifizierungs-Backend-Namen anzugeben.

Lassen Sie den Standardwert und klicken Sie auf Weiter, um fortzufahren. Auf der nächsten Seite werden Sie aufgefordert, ein Administratorkonto zu erstellen.

Geben Sie die Anmeldeinformationen für Ihr neues Administratorkonto ein und klicken Sie auf Weiter, um fortzufahren. Als Nächstes wird Ihnen die Seite Anwendungs-Konfiguration angezeigt.

Lassen Sie alle Standardwerte für die Anwendungs- und Protokollkonfiguration und klicken Sie auf Weiter, um fortzufahren. Sie werden aufgefordert, die Konfiguration auf der letzten Seite zu überprüfen.

Sie können zurückgehen, um einige der Einstellungen zu ändern. Wenn Sie zufrieden sind, klicken Sie auf Weiter, um mit der Konfiguration des Überwachungsmoduls fortzufahren. Als Nächstes werden Sie nach den Icinga-Datenbankanmeldeinformationen gefragt.

Füllen Sie die Datenbankanmeldeinformationen aus, die in Schritt 3 erstellt wurden, und klicken Sie auf Konfiguration validieren, um die Verbindung zu überprüfen. Nach der Überprüfung klicken Sie auf Weiter, um fortzufahren. Als Nächstes werden Sie aufgefordert, die API-Details auszufüllen.

Füllen Sie die API-Anmeldeinformationen aus, die in Schritt 6 erstellt wurden, und klicken Sie auf Konfiguration validieren, um die Verbindung zu überprüfen. Klicken Sie auf Weiter, um fortzufahren. Als Nächstes werden Sie aufgefordert, geschützte benutzerdefinierte Variablen für die Überwachungs-Sicherheit auszuwählen.

Lassen Sie die Standardwerte und klicken Sie auf Weiter, um fortzufahren. Als Nächstes werden Sie aufgefordert, die Überwachungs-Konfiguration zu überprüfen. Sie können zurückgehen und sie ändern, wenn Sie möchten.

Wenn Sie zufrieden sind, klicken Sie auf Fertigstellen, um die Installation abzuschließen.

Sobald die Installation erfolgreich abgeschlossen ist, klicken Sie auf die Schaltfläche Anmelden bei Icinga Web 2, um die Anmeldeseite zu öffnen.

Geben Sie die Anmeldeinformationen Ihres Administratorkontos ein und klicken Sie auf die Schaltfläche Anmelden, um das Icinga Web-Dashboard zu öffnen.

Besuchen Sie die Seite Übersicht >> Dienste, um den Status des Master-Servers zu überprüfen, ähnlich wie folgt.

Schritt 12 - Master-Server initialisieren
Der nächste Schritt besteht darin, den Master-Server als Master-Knoten zu initialisieren. Der Master-Knoten fungiert als Hauptsteuerung für den Überwachungs-Stack. Führen Sie den folgenden Befehl aus, um den Initialisierungsprozess zu starten.
$ sudo icinga2 node wizard
Sie werden gefragt, ob es sich um eine Agenteninstallation handelt. Geben Sie n ein, um den Master-Knoten einzurichten.
Willkommen beim Icinga 2 Setup-Assistenten!
Wir führen Sie durch alle erforderlichen Konfigurationsdetails.
Bitte geben Sie an, ob dies eine Agenten-/Satelliteninstallation ist ('n' installiert eine Masterinstallation) [Y/n]: n
Als Nächstes werden Sie nach dem gemeinsamen Namen oder dem Domainnamen gefragt. Drücken Sie Enter, um den Standardwert auszuwählen, der angezeigt wird.
Bitte geben Sie den gemeinsamen Namen (CN) [icinga.example.com]:
Icinga wird neu konfiguriert...
Überprüfen vorhandener Zertifikate für den gemeinsamen Namen 'icinga.example.com'...
Zertifikat '/var/lib/icinga2/certs//icinga.example.com.crt' für CN 'icinga.example.com' bereits vorhanden. Zertifikatserstellung überspringen.
Generiere Masterkonfiguration für Icinga 2.
'api'-Funktion bereits aktiviert.
Geben Sie als Nächstes den Master-Zonennamen ein und drücken Sie Enter, um fortzufahren. In unserem Fall ist es derselbe wie der Server-Domainname.
Master-Zonenname [master]: icinga.example.com
Als Nächstes werden Sie gefragt, ob Sie zusätzliche globale Zonen hinzufügen möchten. Drücken Sie `n`, um das Hinzufügen zu überspringen, und drücken Sie Enter, um fortzufahren.
Standard globale Zonen: global-templates director-global
Möchten Sie zusätzliche globale Zonen angeben? [y/N]: n
Im nächsten Schritt lassen Sie den API-Bind-Host und den Port auf den Standardwerten und drücken Sie Enter, um fortzufahren.
Bitte geben Sie den API-Bind-Host/Port an (optional):
Bind-Host []:
Bind-Port []:
Drücken Sie als Nächstes Y, um die Konfiguration im Verzeichnis /etc/icinga2/conf.d/ zu deaktivieren, da wir die Icinga2-Zonen-Konfiguration später verwenden werden.
Möchten Sie die Einbeziehung des conf.d-Verzeichnisses deaktivieren [Y/n]: Y Deaktivieren der Einbeziehung des conf.d-Verzeichnisses… Überprüfen, ob die Datei api-users.conf vorhanden ist…
Fertig.
Jetzt starten Sie Ihren Icinga 2-Daemon neu, um die Installation abzuschließen!
Starten Sie den Dienst neu, um die Änderungen anzuwenden.
$ sudo systemctl restart icinga2
Und schließlich führen Sie den folgenden Befehl aus, um ein Ticket für den Client-Server zu erstellen. Verwenden Sie den Domainnamen des Clients als Argument.
$ sudo icinga2 pki ticket –cn ‘client.example.com’ 365cd931d3091537622a95b113b17775893a224f
Notieren Sie sich das Ticket zur späteren Verwendung.
## Schritt 13 - Icinga2-Agent auf dem Client-Server initialisieren
Melden Sie sich beim Client-Server an und installieren Sie Icinga2 und die Überwachungs-Plugins. Führen Sie die folgenden Befehle aus, um dies zu tun.
$ wget -O - https://packages.icinga.com/icinga.key | sudo gpg –dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg $ echo “deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-lsb_release -cs main” | sudo tee /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list $ echo “deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] http://packages.icinga.com/ubuntu icinga-lsb_release -cs main” | sudo tee -a /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list $ sudo apt update $ sudo apt install icinga2 monitoring-plugins -y
Überprüfen Sie, ob der Icinga-Dienst aktiviert und ausgeführt wird.
$ sudo systemctl status icinga2 ? icinga2.service - Icinga Host-/Dienst-/Netzwerküberwachungssystem
Loaded: loaded (/lib/systemd/system/icinga2.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/icinga2.service.d
??limits.conf
Active: active (running) since Tue 2023-05-02 07:32:07 UTC; 59min agoMain PID: 7602 (icinga2)
Status: "Startup abgeschlossen."
Tasks: 8
Memory: 13.9M
CPU: 1.018s
CGroup: /system.slice/icinga2.service
??7602 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
??7620 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
??7623 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
Starten Sie den Icinga Node Wizard, um den Agenten auf dem Client-Server zu initialisieren.
$ sudo icinga2 node wizard
Sie werden gefragt, ob es sich um eine Agenteninstallation handelt. Geben Sie `Y` ein, um den Agenten einzurichten.
Willkommen beim Icinga 2 Setup-Assistenten!
Wir führen Sie durch alle erforderlichen Konfigurationsdetails.
Bitte geben Sie an, ob dies eine Agenten-/Satelliteninstallation ist (‘n’ installiert eine Masterinstallation) [Y/n]: Y
Als Nächstes werden Sie aufgefordert, den gemeinsamen Namen anzugeben. Lassen Sie den Standardwert und drücken Sie Enter, um fortzufahren.
Starte die Agenten-/Satelliten-Setup-Routine…
Bitte geben Sie den gemeinsamen Namen (CN) [client.example.com]:
Als Nächstes geben Sie den übergeordneten Endpunkt als `icinga.example.com` an und geben Sie `Y` ein, um eine Verbindung zum übergeordneten Knoten vom Client herzustellen.
Bitte geben Sie die übergeordneten Endpunkt(e) (Master oder Satellit) an, zu denen dieser Knoten eine Verbindung herstellen soll: Master/Satelliten-Common Name (CN von Ihrem Master-/Satellitenknoten): icinga.example.com
Möchten Sie eine Verbindung zum übergeordneten Knoten von diesem Knoten aus herstellen? [Y/n]: Y
Als Nächstes geben Sie die IP-Adresse des Master-Servers an und lassen den Portwert unverändert als Standard.
Bitte geben Sie die Verbindungsinformationen für Master/Satellit an: Master/Satelliten-Endpunkt-Host (IP-Adresse oder FQDN): 199.247.31.184 Master/Satelliten-Endpunkt-Port [5665]:
Geben Sie `N` ein, um das Hinzufügen weiterer Master-Endpunkte abzulehnen.
Weitere Master-/Satellitenendpunkte hinzufügen? [y/N]: N
Als Nächstes werden Ihnen die Zertifikatsinformationen für den Master-Server angezeigt. Drücken Sie `Y`, um die Informationen zu bestätigen und fortzufahren.
Elternzertifikatsinformationen:
Version: 3 Betreff: CN = icinga.example.com Aussteller: CN = Icinga CA Gültig von: Mai 1 08:28:26 2023 GMT Gültig bis: Jun 1 08:28:26 2024 GMT Seriennummer: 53:50:d4:1a:85:c5:70:5b:b1:f6:0e:c3:b6:e4:db:62:df:8d:5e:d9
Signaturalgorithmus: sha256WithRSAEncryption Betreff Alt-Namen: icinga.example.com Fingerabdruck: DC BB 90 68 29 E5 C4 B5 74 F5 BC 8C BF A1 8F BF D2 9D A4 E5 A9 9A 43 2C 3B 24 AE A9 CD 19 32 F4
Sind diese Informationen korrekt? [y/N]: Y
Als Nächstes geben Sie das im vorherigen Schritt generierte Anforderungsticket ein.
Bitte geben Sie das auf Ihrem Icinga 2-Master generierte Anforderungsticket an (optional). (Hinweis: # icinga2 pki ticket –cn ‘client.example.com’): 365cd931d3091537622a95b113b17775893a224f
Lassen Sie den API-Bind-Host und den Port auf den Standardwerten und drücken Sie Enter, um fortzufahren.
Bitte geben Sie den API-Bind-Host/Port an (optional): Bind-Host []: Bind-Port []:
Als Nächstes geben Sie `Y` zweimal ein, um die Konfiguration und die Befehle vom Master-Knoten zu akzeptieren.
Konfiguration vom übergeordneten Knoten akzeptieren? [y/N]: Y Befehle vom übergeordneten Knoten akzeptieren? [y/N]: Y
Drücken Sie Enter, um den Standardnamen der lokalen Zone zu akzeptieren, der der Domainname des Clients ist. Geben Sie den Master-Domainnamen als übergeordneten Zonen-Namen an, um fortzufahren.
Icinga wird neu konfiguriert… Die Funktion Benachrichtigung deaktivieren. Stellen Sie sicher, dass Sie Icinga 2 neu starten, damit diese Änderungen wirksam werden. Die Funktion API aktivieren. Stellen Sie sicher, dass Sie Icinga 2 neu starten, damit diese Änderungen wirksam werden.
Lokaler Zonenname [client.example.com]: Übergeordneter Zonenname [master]: icinga.example.com
Drücken Sie `N`, um das Hinzufügen zusätzlicher globaler Zonen zu überspringen.
Standard globale Zonen: global-templates director-global Möchten Sie zusätzliche globale Zonen angeben? [y/N]: N
Drücken Sie `N`, um die Konfigurationen aus dem Verzeichnis `/etc/icinga2/conf.d/` zu deaktivieren.
Möchten Sie die Einbeziehung des conf.d-Verzeichnisses deaktivieren [Y/n]: Y Deaktivieren der Einbeziehung des conf.d-Verzeichnisses…
Fertig.
Jetzt starten Sie Ihren Icinga 2-Daemon neu, um die Installation abzuschließen!
Starten Sie den Icinga-Dienst neu, um die Konfigurationsänderungen anzuwenden.
$ sudo systemctl restart icinga2
## Schritt 14 - Zonen-Konfiguration auf dem Master-Server erstellen
Melden Sie sich erneut beim Server an und erstellen Sie ein neues Verzeichnis als Standardzone.
$ sudo mkdir -p /etc/icinga2/zones.d/icinga.example.com/
Erstellen Sie als Nächstes eine Konfigurationsdatei im neu erstellten Verzeichnis und öffnen Sie sie zur Bearbeitung.
$ sudo nano /etc/icinga2/zones.d/icinga.example.com/client.example.com.conf
Fügen Sie den folgenden Code ein. Die IP-Adresse im Code sollte mit der öffentlichen IP-Adresse des Clients übereinstimmen.
// Endpunkte object Endpoint “client.example.com” { } // Zonen object Zone “client.example.com” {
endpoints = [ "client.example.com" ]
parent = "icinga.example.com"} // Host-Objekte object Host “client.example.com” {
check_command = "hostalive"
address = "95.179.138.148"
vars.client_endpoint = name}
Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Erstellen und öffnen Sie die Dienstdatei zur Bearbeitung.
$ sudo nano /etc/icinga2/zones.d/icinga.example.com/services.conf
Fügen Sie den folgenden Code ein.
// Ping apply Service “Ping” { check_command = “ping4” assign where host.address // Überprüfung wird auf dem Master ausgeführt } // Systemlast apply Service “System Load” { check_command = “load” command_endpoint = host.vars.client_endpoint // Überprüfung wird auf client01 ausgeführt assign where host.vars.client_endpoint } // SSH-Dienst apply Service “SSH Service” { check_command = “ssh” command_endpoint = host.vars.client_endpoint assign where host.vars.client_endpoint } // Icinga 2-Dienst apply Service “Icinga2 Service” { check_command = “icinga” command_endpoint = host.vars.client_endpoint assign where host.vars.client_endpoint }
Führen Sie den folgenden Befehl aus, um die Konfiguration zu überprüfen.
$ sudo icinga2 daemon -C
Sie erhalten eine ähnliche Ausgabe.
[2023-05-02 11:21:23 +0000] information/cli: Icinga-Anwendungs-Loader (Version: r2.13.7-1) [2023-05-02 11:21:23 +0000] information/cli: Lade Konfigurationsdatei(en). [2023-05-02 11:21:23 +0000] information/ConfigItem: Konfigurationsobjekt(e) übernehmen. [2023-05-02 11:21:23 +0000] information/ApiListener: Meine API-Identität: icinga.example.com [2023-05-02 11:21:23 +0000] information/ConfigItem: 1 Icinga-Anwendung instanziiert. [2023-05-02 11:21:23 +0000] information/ConfigItem: 1 Host instanziiert. [2023-05-02 11:21:23 +0000] information/ConfigItem: 1 FileLogger instanziiert. [2023-05-02 11:21:23 +0000] information/ConfigItem: 1 IdoMysqlConnection instanziiert. [2023-05-02 11:21:23 +0000] information/ConfigItem: 1 CheckerComponent instanziiert. [2023-05-02 11:21:23 +0000] information/ConfigItem: 4 Zonen instanziiert. [2023-05-02 11:21:23 +0000] information/ConfigItem: 2 Endpunkte instanziiert. [2023-05-02 11:21:23 +0000] information/ConfigItem: 2 ApiUsers instanziiert. [2023-05-02 11:21:23 +0000] information/ConfigItem: 1 ApiListener instanziiert. [2023-05-02 11:21:23 +0000] information/ConfigItem: 1 NotificationComponent instanziiert. [2023-05-02 11:21:23 +0000] information/ConfigItem: 244 CheckCommands instanziiert. [2023-05-02 11:21:23 +0000] information/ConfigItem: 4 Dienste instanziiert. [2023-05-02 11:21:23 +0000] information/ScriptGlobal: Variablen in die Datei ‘/var/cache/icinga2/icinga2.vars’ ausgeben [2023-05-02 11:21:23 +0000] information/cli: Überprüfung der Konfigurationsdatei(en) abgeschlossen.
Starten Sie den Icinga-Dienst neu, um die Konfigurationsänderungen anzuwenden.
$ sudo systemctl restart icinga2
## Schritt 15 - Überprüfung im Icinga-Dashboard
Öffnen Sie das Icinga2-Web-Dashboard, um die Informationen zur Client-Maschine zu überprüfen. Wählen Sie Übersicht >> Hosts aus dem linken Menü, und Sie sehen den folgenden Bildschirm.

Es kann einige Zeit dauern, bis der Client-Status als UP angezeigt wird. Klicken Sie auf den Client, um weitere Details zu sehen. Wählen Sie Übersicht >> Dienste, und Sie sehen die folgenden Statusinformationen zum Client.

Dies bestätigt, dass der Client die Statistiken korrekt an den Icinga-Master-Server sendet.
## Fazit
Damit endet unser Tutorial zur Installation der Icinga-Monitoring-Software auf einem Ubuntu 22.04-Server und zur Konfiguration, um einen Client-Computer mit demselben Betriebssystem zu überwachen. Wenn Sie Fragen haben, posten Sie diese bitte in die Kommentare unten.Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.