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.

Aktivieren und Konfigurieren des icinga 2 ido-mysql

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.

icinga web 2 Installation und Konfiguration

2. Lasse hier die Icinga Module als Standard und klicke auf Weiter.

icinga web 2 Standard Module wählen

3. Stelle nun sicher, dass alle icingaweb2 Systemvoraussetzungen `grüne` Farben haben, dann klicke auf den Next Button.

icinga web 2 Systemanforderungen

4. Belasse die Backend-Authentifizierung als Standard‚Datenbank‚ und klicke auf Weiter.

icinga web 2 Datenbank Authentifizierung

5. Gib den Datenbanknamen, den Benutzernamen und das Passwort für icingaweb2 ein und klicke erneut auf Weiter.

icinga web 2 Datenbank Konfiguration

6. Belasse den Authentifizierungs-Backendnamen als Standard‚icingaweb2‚ und klicke auf Weiter.

icinga web 2 Datenbank Authentifizierungsname

7. Gib nun die neue Benutzer- und Passwortverwaltung ein und klicke dann auf Weiter.

icinga web 2 admin Benutzer erstellen

8. Belasse die Anwendungs- und Log-Konfiguration als Standard und klicke dann auf Weiter.

icinga web 2 app Konfiguration und Logging

9. Überprüfe alle Konfigurationen doppelt, dann klicke auf Weiter, um fortzufahren.

icinga web 2 überprüft die gesamte Installationskonfiguration

10. Klicke nun auf Weiter, um die icinga2 Monitoring Module zu konfigurieren.

icinga web 2 Module Konfiguration

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.

icinga 2 ido mysql datenbank setup

12. Wähle nun den Transporttyp‚Local Command File‚ und klicke auf Next.

icinga 2 Befehl Transport

13. Belasse die Konfiguration der Überwachungssicherheit als Standard und klicke auf Weiter.

icinga 2 Überwachung der Sicherheit

14. Überprüfe deine Icinga-Installationskonfiguration doppelt und klicke auf Fertigstellen, um fortzufahren.

icinga 2 finish installation

15. Wenn die Installation erfolgreich ist, bekommst du die Ausgabe wie im Bild unten. Klicke dann auf den Login zu Icinga Web 2 Button.

icinga 2 Installation abgeschlossen

Ü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.

icinga 2 Login Seite

2. Nun wirst du eine ähnliche Seite wie unten erhalten.

icinga 2 administration dashboard

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.

Das könnte dich auch interessieren …