Wie man das Icinga 2 Monitoring Tool auf CentOS 8 installiert
Das Monitoring ist eine der wichtigsten Komponenten der Serverinfrastruktur und des Rechenzentrums. Es hilft dir, Probleme und Probleme, die auf deinen Servern auftreten, zu erkennen, so dass du diese Probleme schneller lösen kannst. Es gibt einige Open-Source-Monitoring-Tools, und eines der beliebtesten ist ‚Icinga 2‚.
Icinga ist als Fork des beliebten Nagios Monitoring Tools entstanden und wurde von Grund auf in C++ neu geschrieben. Als Fork des Nagios-Projekts verfügt Icinga über zusätzliche Tools und Features, darunter den Icinga Director, Icinga Modules und Icinga Plugins. Außerdem hat es Unterstützung für verteiltes Monitoring, was dir erlaubt, mehrere Icinga-Instanzen von einem Dashboard aus zu verwalten.
In diesem Tutorial werden wir dir Schritt für Schritt zeigen, wie du Icinga2 mit Apache2 und MariaDB auf einem CentOS 8 Server installierst und konfigurierst.
Voraussetzungen
- Ein CentOS 8 Server. Stelle sicher, dass er auf die neueste Version aktualisiert ist.
- Mindestens 2GB RAM und 2 Kerne. Wenn du mehr hast, wird es besser sein.
- Ein Benutzer mit Sudo-Rechten.
Repositories einrichten
Als erstes musst du das epel, remi und icinga Repository zum centos 8 System hinzufügen. Dann musst du das Tool dnf `config-manager` installieren und das `PowerTools` Repository mit diesem Tool aktivieren.
1. Füge das epel und remi Repository für die centos 8 Server hinzu, indem du die folgenden Befehle ausführst.
sudo dnf install -y epel-release sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
2. Führe nun den folgenden Befehl aus, um das Icinga-Repository für das centos 8-System herunterzuladen und hinzuzufügen.
sudo dnf install -y https://packages.icinga.com/epel/icinga-rpm-release-8-latest.noarch.rpm
3. Danach führe die folgenden Befehle aus, um das dnf config-manager Tool zu installieren und das PowerTools Repository zu aktivieren.
sudo dnf install -y 'dnf-command(config-manager)' sudo dnf config-manager --set-enabled powertools
4. Sobald der Prozess abgeschlossen ist, überprüfe alle aktivierten Repositories auf deinem System mit dem unten stehenden Befehl.
sudo dnf repolist
Du wirst eine ähnliche Ausgabe wie unten sehen. Stelle sicher, dass die Repositories epel, remi, icinga-* und powertools in der Liste sind.
repo id repo name appstream CentOS Linux 8 - AppStream baseos CentOS Linux 8 - BaseOS epel Extra Packages for Enterprise Linux 8 - x86_64 epel-modular Extra Packages for Enterprise Linux Modular 8 - x86_64 extras CentOS Linux 8 - Extras icinga-stable-release ICINGA (stable release for epel) powertools CentOS Linux 8 - PowerTools remi-modular Remi's Modular repository for Enterprise Linux 8 - x86_64 remi-safe Safe Remi's RPM repository for Enterprise Linux 8 - x86_64
Installieren und Konfigurieren des LAMP Stacks
Das Icinga-Monitoring-Tool hat zwei Hauptkomponenten,„icinga2„, welches alle Monitoring-Jobs abwickelt, und„icingaweb2„, eine mächtige, saubere und schnelle Webanwendung, die auf PHP basiert und dir erlaubt, deinen Icinga-Stack von einem Webbrowser aus zu verwalten. Jetzt wirst du den grundlegenden LAMP Stack auf dem centos 8 System installieren und konfigurieren.
1. Aktiviere das remi Modul für PHP 7.4 mit dem unten stehenden Befehl.
sudo dnf module enable -y php:remi-7.4
Als nächstes führe den folgenden Befehl aus, um die grundlegenden LAMP Stack Pakete zu installieren.
sudo dnf install -y httpd mariadb-server mariadb php php-cli php-devel php-pear make php-mysqlnd php-pecl-imagick php-pecl-imagick-devel
Starte nun die beiden Dienste apache (httpd auf centos) und mariadb und aktiviere beide, um sie beim Systemstart zu starten.
sudo systemctl enable --now httpd sudo systemctl enable --now mariadb
Du wirst eine ähnliche Ausgabe wie die folgende sehen, die apache und mariadb Dienste sind gestartet und aktiviert.
# Apache started and enabled Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service ? /usr/lib/systemd/system/httpd.service. # MariaDB started and enabled Created symlink /etc/systemd/system/mysql.service ? /usr/lib/systemd/system/mariadb.service. Created symlink /etc/systemd/system/mysqld.service ? /usr/lib/systemd/system/mariadb.service. Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service ? /usr/lib/systemd/system/mariadb.service.
2. Danach führe den untenstehenden Befehl aus, um das Mariadb Root-Passwort einzurichten. Aus Sicherheitsgründen entfernst du den Standard-Datenbanktest und den anonymen Benutzer und deaktivierst auch den Remote-Login für den Root-Benutzer.
sudo mysql_secure_installation
Unten siehst du eine ähnliche Ausgabe, die du erhalten wirst. Achte darauf, dass du ein neues, starkes Passwort für den mariadb root Benutzer eingibst und bestätige alle Aktionen mit‚Y‚.
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! To log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): PRESS ENTER OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] Y New password: TYPE STRONG PASSWORD Re-enter new password: TYPE STRONG PASSWORD Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Y ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Y ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
Installieren und Konfigurieren von Icinga2
Nun wirst du die Hauptkomponente von Icinga selbst installieren und konfigurieren. Dieser Schritt wird die Installation der Icinga2-Pakete, das Erstellen der neuen Datenbank und des Benutzers, das Importieren des Datenbankschemas und das Einrichten der Icinga REST API umfassen.
1. Führe den folgenden Befehl aus, um die Icinga Monitoring Tool Pakete zu installieren.
sudo dnf install -y icinga2 nagios-plugins-all
Danach starte und aktiviere den icinga2-Dienst und überprüfe dann den Icinga-Dienststatus.
sudo systemctl enable --now icinga2 sudo systemctl status icinga2
Wenn du eine ähnliche Ausgabe wie die folgende siehst, dann ist der Icinga Service gestartet und läuft.
# Icinga2 started and enabled Created symlink /etc/systemd/system/multi-user.target.wants/icinga2.service ? /usr/lib/systemd/system/icinga2.service. # Icinga2 status running ? icinga2.service - Icinga host/service/network monitoring system Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2021-07-18 02:38:19 UTC; 6s ago Process: 31290 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/sysconfig/icinga2 (code=exited, status=0/SUCCESS) Main PID: 31298 (icinga2) Tasks: 13 (limit: 4964) Memory: 20.9M CGroup: /system.slice/icinga2.service ??31298 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log ??31319 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log ??31324 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
2. Als nächstes, wenn du SELinux auf dem centos 8 System aktiviert hast, musst du das‚icinga2-selinux‚ Paket installieren. Aber wenn SELinux deaktiviert ist, überspringe diesen Teil.
Führe den folgenden Befehl aus, um den SELinux-Status zu überprüfen.
sudo sestatus
Wenn du eine ähnliche Ausgabe wie die folgende erhältst, dann ist dein SELinux‚aktiviert‚. Andernfalls erhältst du die Ausgabe‚disabled‚, was bedeutet, dass du den SELinux Teil überspringen kannst.
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: permissive Mode from config file: permissive Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: actual (secure) Max kernel policy version: 32
Installiere nun das icinga2-selinux Paket mit dem unten stehenden Befehl.
sudo dnf install -y icinga2-selinux
Danach wende die neue Konfiguration an, indem du den icinga2-Dienst neu startest und überprüfst, dass Icinga unter dem SELinux-Kontext läuft.
sudo systemctl restart icinga2 ps -eZ | grep icinga2
Unten ist die ähnliche Ausgabe, die du erhalten wirst.
system_u:system_r:icinga2_t:s0 33479 ? 00:00:00 icinga2 system_u:system_r:icinga2_t:s0 33499 ? 00:00:00 icinga2 system_u:system_r:icinga2_t:s0 33504 ? 00:00:00 icinga2
3. Als nächstes installierst du das IDO MySQL Backend für icinga2 mit dem folgenden Befehl.
sudo dnf install -y icinga2-ido-mysql
Führe nun den folgenden Befehl aus, um dich in die MySQL-Shell einzuloggen und gib dein root-Passwort ein.
sudo mysql -u root -p
Erstelle eine neue Datenbank und einen neuen Benutzer für den icinga2 Dienst mit den unten stehenden mysql Abfragen.
MariaDB [(none)]> CREATE DATABASE icinga; MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icingapassdb'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> quit
Führe nun den unten stehenden mysql-Befehl aus, um das icinga2-ido-mysql-Datenbankschema in die icinga-Datenbank zu importieren und gib das Passwort deines mariadb-Root-Passworts ein.
sudo mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql
Danach aktiviere das icinga2-ido-mysql Feature und starte den icinga2 Dienst neu, um die neue Konfiguration mit den unten stehenden Befehlen anzuwenden.
sudo icinga2 feature enable ido-mysql sudo systemctl restart icinga2
Du wirst dann eine ähnliche Ausgabe wie im Bild unten sehen.
4. Als nächstes musst du die icinga2 REST API Konfiguration und die Zertifikate generieren. Das icingaweb2 benötigt die REST API, um Aktionen zu senden, die sich auf Monitoring-Jobs beziehen, wie z.B. Umplanungsprüfungen, Abfrage von Objektdetails, etc.
Führe den untenstehenden icinga2-Befehl aus, um neue API-Benutzer, -Konfiguration und TLS-Zertifikate zu generieren.
sudo icinga2 api setup
Und du wirst eine ähnliche Ausgabe wie die folgende sehen, der neue Benutzer root mit Passwort ist in der Konfigurationsdatei /etc/icinga2/conf.d/api-users.conf verfügbar und die TLS Zertifikate sind im Verzeichnis /var/lib/icinga2/certs/ verfügbar.
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//centos8.csr'. information/base: Writing private key to '/var/lib/icinga2/certs//centos8.key'. information/base: Writing certificate signing request to '/var/lib/icinga2/certs//centos8.csr'. information/cli: Signing CSR with CA and writing certificate to '/var/lib/icinga2/certs//centos8.crt'. information/pki: Writing certificate to file '/var/lib/icinga2/certs//centos8.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. Now restart your Icinga 2 daemon to finish the installation!
Optional kannst du den neuen API-Benutzer manuell hinzufügen, indem du die Konfigurationsdatei /etc/icinga2/conf.d/api-users.conf mit dem nano-Editor-Befehl wie unten beschrieben bearbeitest.
sudo nano /etc/icinga2/conf.d/api-users.conf
Füge die folgende Beispielkonfiguration ein und stelle sicher, dass du den API-Benutzer, das Passwort und die Berechtigung wie gewünscht definierst.
object ApiUser "icingaweb2" { password = "Wijsn8Z9eRs5E25d" permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ] }
Zuletzt wende die neue Konfiguration an, indem du den icinga2-Dienst mit dem folgenden Befehl neu startest.
sudo systemctl restart icinga2
Installieren und Konfigurieren von Icingaweb2
In diesem Schritt installierst und konfigurierst du die icingaweb2 Webanwendung, einschließlich der Einrichtung der Datenbank und der Generierung des Installationstokens.
1. Führe den folgenden Befehl aus, um die icingaweb2 Pakete zu installieren.
sudo dnf install -y icingaweb2 icingacli
Während der Installation wird die neue Apache-Konfiguration für icingaweb2 generiert. Überprüfe die neue Konfiguration mit dem folgenden Befehl.
cat /etc/httpd/conf.d/icingaweb2.conf
Unten ist die Konfiguration, die du sehen wirst.
Alias /icingaweb2 "/usr/share/icingaweb2/public" # Remove comments if you want to use PHP FPM and your Apache version is older than 2.4 #<IfVersion < 2.4> # # Forward PHP requests to FPM # SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 # <LocationMatch "^{urlPath}/(.*\.php)$"> # ProxyPassMatch "fcgi://127.0.0.1:9000/{documentRoot}/$1" # </LocationMatch> #</IfVersion> <Directory "/usr/share/icingaweb2/public"> Options SymLinksIfOwnerMatch AllowOverride None .......
Um die neue Konfiguration anzuwenden, starte den apache/httpd Dienst mit dem folgenden Befehl neu.
sudo systemctl restart httpd
2. Als nächstes gibst du den folgenden Befehl ein, um dich in die mysql-Shell einzuloggen.
sudo mysql -u root -p
Führe einige mysql-Abfragen aus, um eine neue Datenbank und einen neuen Benutzer für das icingaweb2 zu erstellen.
MariaDB [(none)]> CREATE DATABASE icingaweb2; MariaDB [(none)]> GRANT ALL ON icingaweb2.* TO icingaweb2@localhost IDENTIFIED BY 'icingaweb2passdb'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> quit
3. Danach generierst du mit dem folgenden Befehl das icingaweb2 Setup-Token für die Installation im nächsten Schritt.
sudo icingacli setup token create sudo icingacli setup token show
Du bekommst dann die folgende Ausgabe angezeigt. Achte darauf, dass du das icinga2-Installationstoken in deine Notiz kopierst.
# Generated setup token The newly generated setup token is: 41e33db4cf0c5617 # Show generated token The current setup token is: 41e33db4cf0c5617
Icinga Web 2 über das Webinterface konfigurieren
Öffne nun deinen Webbrowser und die URL http://SERVER-IP/icingaweb2/setup.und du wirst die icinga2 Installationsseite erhalten.
1. Füge den icingaweb2 Installationstoken in das Feld ein und klicke auf Next.
2. Lasse hier die Icinga Module als Standard und klicke auf Weiter.
3. Stelle nun sicher, dass alle icingaweb2 Systemvoraussetzungen `grüne` Farben haben, dann klicke auf den Next Button.
4. Belasse die Backend-Authentifizierung als Standard‚Datenbank‚ und klicke auf Weiter.
5. Gib den Datenbanknamen, den Benutzernamen und das Passwort für icingaweb2 ein und klicke erneut auf Weiter.
6. Belasse den Authentifizierungs-Backendnamen als Standard‚icingaweb2‚ und klicke auf Weiter.
7. Gib nun die neue Benutzer- und Passwortverwaltung ein und klicke dann auf Weiter.
8. Belasse die Anwendungs- und Log-Konfiguration als Standard und klicke dann auf Weiter.
9. Überprüfe alle Konfigurationen doppelt, dann klicke auf Weiter, um fortzufahren.
10. Klicke nun auf Weiter, um die icinga2 Monitoring Module zu konfigurieren.
11. Gib den Datenbanknamen, den Benutzernamen und das Passwort für die icinga2-ido-mysql ein und klicke dann auf die Schaltfläche Konfiguration validieren.
Wenn du eine Fehlermeldung wie„Es gibt derzeit keine icinga-Instanz, die in das IDO schreibt. Stelle sicher, dass eine icinga-Instanz konfiguriert ist und in der Lage ist, auf das IDO zu schreiben‘, gehe zurück zu deinem Terminal und bearbeite die Konfiguration manuell.
Führe den folgenden Befehl aus, um die IDO-Konfiguration zu bearbeiten.
sudo nano /etc/icinga2/features-available/ido-mysql.conf
Kopiere die ido mysql Konfiguration und füge sie wie unten beschrieben ein.
object IdoMysqlConnection "ido-mysql" { user = "icinga", password = "icingapassdb", host = "localhost", database = "icinga" }
Drücke nun Strg+x, dann y und dann enter, um die Datei zu speichern.
Als nächstes starte den Icinga2 Dienst mit dem folgenden Kommando neu.
sudo systemctl restart icinga2
Gehe nun zurück zum Webbrowser und aktiviere die Option Skip Validation, dann klicke wieder auf Next.
12. Wähle nun den Transporttyp‚Local Command File‚ und klicke auf Next.
13. Belasse die Konfiguration der Überwachungssicherheit als Standard und klicke auf Weiter.
14. Überprüfe deine Icinga-Installationskonfiguration doppelt und klicke auf Fertigstellen, um fortzufahren.
15. Wenn die Installation erfolgreich ist, bekommst du die Ausgabe wie im Bild unten. Klicke dann auf den Login zu Icinga Web 2 Button.
Überprüfe die Installation von Icinga 2 und Icinga Web 2
1. Gib deinen Icinga-Administrator-Benutzer und dein Passwort ein und klicke dann auf den Login-Button.
2. Nun wirst du eine ähnliche Seite wie unten erhalten.
Wie du auf dem Dashboard sehen kannst, gibt es einige Dienste, die automatisch vom icinga2 Monitoring Tool erkannt werden. Dienste mit der Farbe grün bedeuten Gesundheit, und die Dienste mit der Farbe gelb bedeuten eine Warnung, die überprüft werden muss. Und Fehlerdienste haben rote Farben.
Fazit
Zum Abschluss des Tutorials hast du die Installation und Konfiguration des icinga2 Monitoring Tools auf dem aktuellen CentOS 8 Server mit LAMP Stack kennengelernt. Die icinga2-Installation erfordert, dass du dich auf jeden Schritt konzentrierst und das Wichtigste ist, dass du weißt, was du tust und nicht blindlings Befehle ausführst.