So installierst und konfigurierst du Nagios auf Rocky Linux 9

Nagios ist ein beliebtes und eines der leistungsfähigsten Open-Source-Überwachungssysteme. Es überwacht deine IT-Infrastruktur und sorgt dafür, dass deine Netzwerke, Server, Anwendungen und Prozesse reibungslos laufen. Mit einem Überwachungssystem kannst du Probleme erkennen, bevor sie auftreten, und sie schnell beheben, um Kosten und Ausfallzeiten zu sparen.

In diesem Lernprogramm lernst du, wie du Nagios auf einem Rocky Linux 9 Server installierst und konfigurierst. Außerdem werden wir einige grundlegende Konfigurationen vornehmen und den Nagios Remote Plugin Executor (NPRE) installieren, mit dem wir entfernte Hosts überwachen können.

Voraussetzungen

  1. Ein Server mit Rocky Linux 9.
  2. Ein Nicht-Sudo-Benutzer mit Root-Rechten.
  3. SELinux ist deaktiviert. Für dieses Tutorial würde es auch bei aktiviertem SELinux ohne Probleme funktionieren. Aber je nachdem, welche Nagios-Monitore du verwendest, musst du entweder SELinux konfigurieren oder du solltest es lieber deaktiviert lassen.
  4. Ein weiterer Server mit Rocky Linux 9, den du überwachen willst.
  5. Stelle sicher, dass alles auf dem neuesten Stand ist.
    $ sudo dnf update
    

Schritt 1 – Firewall konfigurieren

Der erste Schritt besteht darin, die Firewall zu konfigurieren. Rocky Linux Server wird mit der Firewall Firewalld geliefert.

Überprüfe, ob die Firewall läuft.

$ sudo firewall-cmd --state

Du solltest die folgende Ausgabe erhalten.

running

Überprüfe die aktuell erlaubten Dienste/Ports.

$ sudo firewall-cmd --permanent --list-services

Es sollte die folgende Ausgabe erscheinen.

dhcpv6-client mdns ssh

Lasse HTTP- und HTTPS-Ports zu.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Überprüfe erneut den Status der Firewall.

$ sudo firewall-cmd --permanent --list-services

Du solltest eine ähnliche Ausgabe sehen.

dhcpv6-client http https mdns ssh

Lade die Firewall neu.

$ sudo firewall-cmd --reload

Schritt 2 – Installiere Apache und PHP

Um Nagios zu betreiben, musst du Apache und PHP installieren.

Installiere und aktiviere den Apache-Dienst.

$ sudo dnf install httpd
$ sudo systemctl enable httpd

Um PHP zu installieren, verwenden wir das Remi Repository. Installiere Remi Repo und aktiviere PHP 8.1.

$ sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm
$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.1 -y

Installiere PHP und einige gängige PHP-Module.

$ sudo dnf install -y php php-gd php-curl

Überprüfe die PHP-Installation.

$ php --version
PHP 8.1.16 (cli) (built: Feb 14 2023 18:59:41) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.16, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.16, Copyright (c), by Zend Technologies

Aktiviere PHP und starte den Dienst.

$ sudo systemctl enable --now php-fpm

Starte den Apache-Dienst neu, damit die Änderung wirksam wird.

$ sudo systemctl restart httpd

Du kannst die Installation von Apache und PHP überprüfen, indem du eine Datei info.php im Verzeichnis /var/www/html anlegst, das vom Apache-Installationsprogramm erstellt wurde.

$ sudo nano /var/www/html/info.php

Füge den folgenden Code in den Editor ein.

<?php phpinfo();

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Öffne die URL http://<yourserverip>/info.php in deinem Browser und du solltest die folgende Seite zu sehen bekommen.

PHP-Infoseite

Schritt 3 – Nagios installieren

Für den größten Teil dieses Tutorials musst du deinen Hauptserver installieren und mit ihm arbeiten.

Abhängigkeiten installieren

Für diesen Lehrgang müssen Nagios und seine Plugins aus dem Quellcode erstellt werden. Daher musst du zunächst einige Entwicklungsbibliotheken installieren. Wir brauchen auch das EPEL-Repository, aber das wurde im vorherigen Schritt automatisch mit dem Remi-Repository installiert, so dass wir es hier überspringen können.

$ sudo dnf install gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel unzip wget gettext autoconf net-snmp-utils postfix automake perl-Net-SNMP

Nagios herunterladen

Lade die neueste Version von der GitHub-Releaseseite von Nagios herunter. Zum Zeitpunkt des Tutorials ist die Version 4.4.10 die letzte verfügbare Version. Ändere den Befehl, falls du eine andere Version möchtest.

$ cd ~
$ sudo wget -O nagios.tar.gz https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.10/nagios-4.4.10.tar.gz

Entpacke die tar-Datei.

$ sudo tar zxf nagios.tar.gz

Verschiebe das entpackte Verzeichnis in das Verzeichnis /usr/src.

sudo mv nagios-4.4.10 /usr/src/nagios

Wechsle in das Verzeichnis /usr/src/nagios.

$ cd /usr/src/nagios

Nagios kompilieren

Der nächste Schritt besteht darin, Nagios aus den Quelldateien zu kompilieren. Führe das Skript configure aus, um zu prüfen, ob alle Abhängigkeiten vorhanden sind.

$ sudo ./configure

Nach dem erfolgreichen Abschluss des Skripts solltest du eine ähnliche Ausgabe erhalten.

*** Configuration summary for nagios 4.4.10 2023-01-17 ***:

 General Options:
 -------------------------
        Nagios executable:  nagios
        Nagios user/group:  nagios,nagios
       Command user/group:  nagios,nagios
             Event Broker:  yes
        Install ${prefix}:  /usr/local/nagios
    Install ${includedir}:  /usr/local/nagios/include/nagios
                Lock file:  /run/nagios.lock
   Check result directory:  /usr/local/nagios/var/spool/checkresults
           Init directory:  /lib/systemd/system
  Apache conf.d directory:  /etc/httpd/conf.d
             Mail program:  /usr/sbin/sendmail
                  Host OS:  linux-gnu
          IOBroker Method:  epoll

 Web Interface Options:
 ------------------------
                 HTML URL:  http://localhost/nagios/
                  CGI URL:  http://localhost/nagios/cgi-bin/
 Traceroute (used by WAP):  


Review the options above for accuracy.  If they look okay,
type 'make all' to compile the main program and CGIs.

Starte die Kompilierung.

$ sudo make all

Nagios-Benutzer und -Gruppe erstellen

Erstelle einen neuen Benutzer und eine neue Gruppe, die den Nagios-Prozess ausführen werden.

$ sudo make install-groups-users

Du solltest die folgende Ausgabe sehen.

groupadd -r nagios
useradd -g nagios nagios

Füge den Benutzer apache zu der Gruppe nagios hinzu.

$ sudo usermod -a -G nagios apache

Nagios-Binärdateien installieren

Führe den folgenden Befehl aus, um Nagios-Binärdateien, CGIs und HTML-Dateien zu installieren.

$ sudo make install

Externes Befehlsverzeichnis erstellen

Nagios kann Befehle von externen Anwendungen verarbeiten und benötigt dafür ein Verzeichnis.

$ sudo make install-commandmode
/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/var/rw
chmod g+s /usr/local/nagios/var/rw

*** External command directory configured ***

Nagios-Konfigurationsdateien installieren

Installiere die Beispielkonfigurationsdateien.

$ sudo make install-config

Apache-Konfigurationsdateien installieren

Führe den folgenden Befehl aus, um die Apache-Konfigurationsdateien zu installieren.

$ sudo make install-webconf

Starte den Webserver neu, um die Konfiguration zu aktivieren.

$ sudo systemctl restart httpd

Erstelle eine Systemd-Dienstdatei

Führe den folgenden Befehl aus, um eine systemd-Einheitsdatei zu installieren.

$ sudo make install-daemoninit

Aktiviere die HTTP-Authentifizierung

Du kannst die Nagios-Weboberfläche über HTTP-Authentifizierung sperren. Führe den folgenden Befehl aus, um den Benutzer mit htpasswd zu erstellen. Du wirst zur Eingabe eines Passworts aufgefordert.

$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin

Der Standardname für den Benutzer ist nagiosadmin. Du kannst einen anderen Benutzernamen verwenden, indem du alle Instanzen von nagiosadmin in der Datei /usr/local/nagios/etc/cgi.cfg durch den gewünschten Benutzernamen ersetzt. Oder du fügst den Benutzernamen mit einem Komma hinzu, wie im Folgenden beschrieben.

authorized_for_system_information=nagiosadmin, username1
authorized_for_configuration_information=nagiosadmin, username1
authorized_for_system_commands=nagiosadmin, username1
authorized_for_all_services=nagiosadmin, username1
authorized_for_all_hosts=nagiosadmin, username1
authorized_for_all_service_commands=nagiosadmin, username1
authorized_for_all_host_commands=nagiosadmin, username1

Du kannst Benutzer mit Lesezugriff hinzufügen, indem du die folgende Konfiguration in der Datei aktivierst, indem du die vorangestellte Raute (#) entfernst. Führe dann die htpasswd mit dem Benutzernamen aus.

authorized_for_read_only=username2

Starte den Server neu, damit die Konfiguration in Kraft treten kann.

$ sudo systemctl restart httpd

Schritt 4 – Nagios Plugins installieren

Installiere die für die Nagios-Plugins erforderlichen Voraussetzungen.

$ sudo dnf install epel-release
$ sudo dnf install -y gcc glibc glibc-common make gettext automake autoconf wget openssl-devel net-snmp net-snmp-utils postgresql-devel openldap-devel bind-utils samba-client fping openssh-clients lm_sensors perl-Net-SNMP

Lade die neueste Version von der GitHub-Seite der Nagios-Plugins herunter. Zum Zeitpunkt des Tutorials ist die Version 2.4.3 die letzte verfügbare Version. Ändere den Befehl, falls du eine andere Version möchtest.

$ cd ~
$ sudo wget -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.3/nagios-plugins-2.4.3.tar.gz

Entpacke die tar-Datei.

$ sudo tar zxf nagios-plugins.tar.gz

Verschiebe das entpackte Verzeichnis in das Verzeichnis /usr/src.

$ sudo mv nagios-plugins-2.4.3 /usr/src/nagios-plugins

Wechsle zurück in das Verzeichnis /usr/src/nagios-plugins.

$ cd /usr/src/nagios-plugins

Führe die folgenden Befehle aus, um die Plugins zu kompilieren und zu installieren.

$ sudo ./configure
$ sudo make
$ sudo make install

Schritt 5 – Installiere das check_nrpe Plugin

Lade die neueste Version von der NRPE GitHub Release-Seite herunter. Zum Zeitpunkt der Erstellung dieses Tutorials ist die neueste Version 4.1.0 verfügbar. Ändere den folgenden Befehl, falls du eine andere Version möchtest.

$ cd ~
$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.1.0/nrpe-4.1.0.tar.gz

Entpacke das Archiv.

$ tar zxf nrpe-*.tar.gz

Verschiebe das entpackte Verzeichnis in das Verzeichnis /usr/src.

$ sudo mv nrpe-4.1.0 /usr/src/nrpe

Wechsle in das Verzeichnis /usr/src/nrpe.

$ cd /usr/src/nrpe

Konfiguriere und installiere das Plugin.

$ sudo ./configure
$ sudo make check_nrpe
$ sudo make install-plugin

Dadurch wird das Plugin check_nrpe in das Verzeichnis /usr/local/nagios/libexec/ verschoben.

Schritt 6 – Starten von Nagios

Nachdem Nagios und die Plugins installiert sind, ist es an der Zeit, den Nagios-Dienst zu starten.

$ sudo systemctl start nagios

Überprüfe den Status des Dienstes, um zu sehen, ob er ordnungsgemäß läuft.

$ sudo systemctl status nagios

Nagios Web Interface

Öffne die URL http://<domain_or_ip_address>/nagios in deinem Browser. Du solltest eine Anmeldeaufforderung sehen.

Gib die Anmeldedaten ein, die du bei der HTTP-Authentifizierung erstellt hast, und du solltest den folgenden Bildschirm sehen.

Nagios Homepage

Schritt 7 – Hosts überwachen

Um einen Host zu überwachen, musst du den NRPE Daemon und die Nagios Plugins auf dem Host installieren. Wir werden einen Rocky Linux 9 Server von unserem Nagios Server aus überwachen.

Melde dich bei deinem Host an.

$ ssh user@monitored_server_ip

Nagios-Plugins installieren

Installiere die Nagios-Plugins, indem du Schritt 4 von vorher wiederholst.

NRPE installieren

Installiere die erforderlichen Voraussetzungen für den NRPE-Daemon.

$ sudo dnf install -y gcc glibc glibc-common openssl openssl-devel perl wget

Lade NRPE herunter.

$ cd ~
$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.1.0/nrpe-4.1.0.tar.gz

Entpacke das Archiv.

$ tar zxf nrpe-*.tar.gz

Verschiebe das entpackte Verzeichnis in das Verzeichnis /usr/src.

$ sudo mv nrpe-4.1.0 /usr/src/nrpe

Wechsle in das NRPE-Verzeichnis.

$ cd /usr/src/nrpe

Konfiguriere und installiere NRPE.

$ sudo ./configure --enable-command-args
$ sudo make all

Erstelle den Benutzer und die Gruppe.

$ sudo make install-groups-users

Installiere die NRPE Binaries, den NRPE Daemon und das check_npre Plugin.

$ sudo make install

Installiere die Konfigurationsdateien.

$ sudo make install-config

Aktualisiere die Servicedatei. Die Datei /etc/services wird verwendet, um Dienstnamen in Portnummern zu übersetzen.

$ sudo sh -c "echo >> /etc/services"
$ sudo sh -c "sudo echo '# Nagios services' >> /etc/services"
$ sudo sh -c "sudo echo 'nrpe    5666/tcp' >> /etc/services"

Installiere den NPRE Service Daemon.

$ sudo make install-init
$ sudo systemctl enable nrpe

Du musst die NPRE-Konfigurationsdatei aktualisieren, die sich unter /usr/local/nagios/etc/nrpe.cfg befindet.

Öffne die Datei zur Bearbeitung.

$ sudo nano /usr/local/nagios/etc/nrpe.cfg

Standardmäßig hört NPRE nur auf Anfragen von Localhost (127.0.0.1). Du musst die IP-Adresse deines Nagios-Servers in die Datei eintragen.

allowed_hosts=127.0.0.1,10.25.5.2

Die folgende Option legt fest, ob der NPRE-Daemon den Clients erlaubt, Befehlsargumente anzugeben oder nicht. Erlaube die Option, indem du den Wert 1 eingibst, um erweiterte NPRE-Konfigurationen zu ermöglichen.

dont_blame_nrpe=1

Wenn du weiter nach unten scrollst, findest du eine Liste mit den NRPE-Befehlen und ihren Definitionen. Sie sind alle auskommentiert. Du musst sie auskommentieren, damit Nagios sie verwenden kann.

Jedem Befehl können Argumente übergeben werden. Einigen Befehlen sind Argumente vorangestellt, andere können Argumente vom Benutzer annehmen. Jeder Befehl kann die folgenden Benachrichtigungsoptionen haben.

  • W steht für Warnende Servicezustände
  • C steht für kritische Zustände des Dienstes
  • R steht für notify on service recovering (OK states)

Du kannst also festlegen, auf welcher Ebene ein Befehl welche Art von Benachrichtigung senden kann. Wir werden hier nicht auf die detaillierte Beschreibung und Funktion der einzelnen Befehle eingehen, da sie den Rahmen dieses Tutorials sprengen würden.

# The following examples use hardcoded command arguments...
# This is by far the most secure method of using NRPE

command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -r -w .15,.10,.05 -c .30,.25,.20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200

# The following examples allow user-supplied arguments and can
# only be used if the NRPE daemon was compiled with support for
# command arguments *AND* the dont_blame_nrpe directive in this
# config file is set to '1'.  This poses a potential security risk, so
# make sure you read the SECURITY file before doing this.

### MISC SYSTEM METRICS ###
command[check_users]=/usr/local/nagios/libexec/check_users $ARG1$
command[check_load]=/usr/local/nagios/libexec/check_load $ARG1$
command[check_disk]=/usr/local/nagios/libexec/check_disk $ARG1$
command[check_swap]=/usr/local/nagios/libexec/check_swap $ARG1$
command[check_cpu_stats]=/usr/local/nagios/libexec/check_cpu_stats.sh $ARG1$
command[check_mem]=/usr/local/nagios/libexec/custom_check_mem -n $ARG1$

### GENERIC SERVICES ###
command[check_init_service]=sudo /usr/local/nagios/libexec/check_init_service $ARG1$
command[check_services]=/usr/local/nagios/libexec/check_services -p $ARG1$

### SYSTEM UPDATES ###
command[check_yum]=/usr/local/nagios/libexec/check_yum
#command[check_apt]=/usr/local/nagios/libexec/check_apt

### PROCESSES ###
command[check_all_procs]=/usr/local/nagios/libexec/custom_check_procs
command[check_procs]=/usr/local/nagios/libexec/check_procs $ARG1$

### OPEN FILES ###
command[check_open_files]=/usr/local/nagios/libexec/check_open_files.pl $ARG1$

### NETWORK CONNECTIONS ###
command[check_netstat]=/usr/local/nagios/libexec/check_netstat.pl -p $ARG1$ $ARG2$

Hebe die Kommentare zu den obigen Befehlen auf, indem du das Symbol # vor den Befehlen entfernst. Du kannst so viele Befehle auskommentieren, wie du brauchst.

Füge den folgenden Befehl hinzu, um den Speicherplatz im Stammverzeichnis zu überprüfen.

command[check_root]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /

Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Erlaube den Port 5666, der vom NPRE-Plugin verwendet wird.

$ sudo firewall-cmd --permanent --add-port=5666/tcp

Lade die Firewall neu.

$ sudo firewall-cmd --reload

Starte NPRE.

$ sudo systemctl start nrpe

Alle Befehle werden von nun an auf dem Nagios-Hauptserver ausgeführt, sofern nicht anders angegeben.

Überprüfe, ob NRPE funktioniert, indem du den folgenden Befehl auf deinem Haupt-Nagios-Server ausführst.

$ /usr/local/nagios/libexec/check_nrpe -H monitored_server_ip

Du solltest die folgende Ausgabe sehen.

NRPE v4.1.0

Um die Hosts zu überwachen, musst du Konfigurationsdateien für jeden Host erstellen, den du überwachen willst. Diese Hosts werden dann über die Nagios-Weboberfläche zugänglich.

Erstelle das Verzeichnis, in dem die Konfigurationsdateien gespeichert werden sollen, und gib ihm die entsprechenden Berechtigungen.

$ sudo mkdir /usr/local/nagios/etc/servers
$ sudo chown -R nagios:nagios /usr/local/nagios/etc/servers
$ sudo chmod g+w /usr/local/nagios/etc/servers

Öffne die Nagios-Konfigurationsdatei /usr/local/nagios/etc/nagios.cfg zur Bearbeitung.

$ sudo nano /usr/local/nagios/etc/nagios.cfg

Suche die folgende Datei und entkommentiere sie, indem du das vorangestellte # entfernst.

cfg_dir=/usr/local/nagios/etc/servers

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Im nächsten Schritt fügst du den Befehl check_nrpe zur Datei /usr/local/nagios/etc/objects/commands.cfg hinzu, damit er zur Überwachung von Hosts verwendet werden kann.

Öffne die Datei /usr/local/nagios/etc/objects/commands.cfg zum Bearbeiten.

$ sudo nano /usr/local/nagios/etc/objects/commands.cfg

Füge den folgenden Code am Ende der Datei ein.

define command {
    command_name   check_nrpe
    command_line   $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$ $ARG2$
}

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Erstelle eine neue Konfigurationsdatei für den Remote-Host im Verzeichnis /usr/local/nagios/etc/servers/.

$ sudo nano /usr/local/nagios/etc/servers/yourhost.cfg

Füge den folgenden Code hinzu, indem du den Wert host_name durch den Namen deines Remote-Hosts, den Wert alias durch die Beschreibung deines Hosts und den Wert address durch die IP-Adresse deines Remote-Hosts ersetzst.

define host {
        use                             linux-server
        host_name                       monitored_server_host_name
        alias                           My client server
        address                         monitored_server_private_ip
        max_check_attempts              5
        check_period                    24x7
        notification_interval           30
        notification_period             24x7
}

Mit dieser Konfiguration teilt dir Nagios mit, ob der Host aktiv ist oder nicht. Du wirst weitere Dienste hinzufügen müssen, um zusätzliche Dinge zu überwachen.

Füge den folgenden Block hinzu, um die Verbindungsstatistiken des Hosts zu überprüfen.

define service {
      use                             generic-service
      host_name                       monitored_server_host_name
      service_description             PING
      check_command                   check_ping!200.0,20%!400.0,90%
}

Füge den folgenden Block hinzu, um die durchschnittliche Auslastung deines Servers zu überwachen.

define service {
        use                             generic-service
        host_name                       monitored_server_host_name
        service_description             Load average
        check_command                   check_nrpe!check_load!-a '-w 0.7,0.6,0.5 -c 0.9,0.8,0.7'
}

Die Direktive use generic-service weist Nagios an, von einer von Nagios vordefinierten Vorlage namens generic-service zu erben.

Als Nächstes fügst du einen Block hinzu, um die Festplattennutzung zu überwachen. Ändere den Befehl mit den entsprechenden Festplattenbezeichnungen.

define service {
        use                             generic-service
        host_name                       monitored_server_host_name
        service_description             /dev/vda1 free space
        check_command                   check_nrpe!check_disk!-a '-w 20% -c 10% -p /dev/vda1'
}

Überwache SSH mit dem folgenden Block. Der folgende Block prüft den SSH-Server und erzeugt einen Alarm, wenn der Server nicht innerhalb von 5 Sekunden antwortet.

define service {
    use                                 generic-service
    host_name                           monitored_server_host_name
    service_description                 SSH Version Check
    check_command                       check_ssh!-t 5
}

Lass uns die Gesamtzahl der laufenden Prozesse überprüfen.

define service{                     
    use                     			generic-service            
    host_name               			monitored_server_host_name            
    service_description     			Total Processes            
    check_command           			check_nrpe!check_total_procs
}

Überprüfe die aktuell angemeldeten Benutzer.

define service{                     
    use                     			generic-service            
    host_name               			monitored_server_host_name            
    service_description     			Current Users            
    check_command           			check_nrpe!check_users!-a '-w 5 -c 10'
}

Prüfe die Auslastung der SWAP-Festplatte.

define service{                     
    use                     			generic-service            
    host_name               			monitored_server_host_name            
    service_description     			SWAP Usage            
    check_command           			check_nrpe!check_swap!-a '-w 40% -c 20%'
}

Überprüfe die Root-Partition und ihre Festplattenbelegung.

define service{
    use                                  generic-service
    host_name                            nagiosclient
    service_description                  Root / Partition
    check_command                        check_nrpe!check_disk!-a '-w 20% -c 10% -p /'
}

Prüfe, ob ein HTTP-Server installiert ist.

define service {
    use                                  generic-service
    host_name                            nagiosclient
    service_description                  HTTP
    check_command                        check_http
}

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Starte Nagios neu.

$ sudo systemctl restart nagios

Monitore überprüfen

Öffne dein Nagios Dashboard und klicke auf die Option Hosts in der linken Seitenleiste. Du solltest den neu konfigurierten Host zusammen mit localhost auf der Seite sehen.

Nagios Host-Überwachung

Klicke auf den neu konfigurierten Host(nagiosclient) und wenn alles richtig konfiguriert ist, solltest du seinen Status sehen. Es kann etwa eine Minute dauern, bis der Status erscheint.

Nagios Host Services Überwachung

Um die Dienste oder Monitore zu sehen, die wir konfiguriert haben, klicke auf die Option Statusdetails für diesen Host anzeigen und du solltest die folgende Seite sehen.

Nagios Dienst überwacht den Status

So bekommst du einen guten Überblick darüber, wie deine Hosts funktionieren.

Schritt 8 – Nginx installieren

Du kannst Nagios entweder direkt über die Server-IP laufen lassen oder es auf deinem Domainnamen hosten lassen. Nagios wird bereits mit Apache-Konfigurationsdateien ausgeliefert, aber wir werden Nginx verwenden, um es zu betreiben. Wir werden Nginx als Reverse Proxy vor dem Apache Webserver verwenden.

Apache läuft bereits auf Port 80. Deshalb müssen wir das zuerst ändern. Dann können wir Nginx als Proxy laufen lassen.

Öffne die Datei /etc/httpd/conf/httpd.conf zum Bearbeiten.

$ sudo nano /etc/httpd/conf/httpd.conf

Ändere die Zeile Listen 80 in Listen 8080. Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst. Da wir den Domänennamen für den Zugriff auf Nagios verwenden werden, müssen wir den Port 8080 nicht für den öffentlichen Zugriff öffnen.

Starte den Apache-Server neu.

$ sudo systemctl restart httpd

Als nächstes installierst du Nginx.

Rocky Linux 9 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, musst du das offizielle Nginx-Repository herunterladen.

Erstelle und öffne die Datei /etc/yum.repos.d/nginx.repo zur Erstellung des offiziellen Nginx-Repositorys.

$ sudo nano /etc/yum.repos.d/nginx.repo

Füge den folgenden Code in die Datei ein.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Installiere den Nginx-Server.

$ sudo dnf install nginx

Überprüfe die Installation.

$ nginx -v
nginx version: nginx/1.22.1

Aktiviere und starte den Nginx-Server.

$ sudo systemctl enable nginx --now

Schritt 9 – SSL installieren und konfigurieren

Bevor wir Nginx konfigurieren, müssen wir ein SSL-Zertifikat für die Domain einrichten und konfigurieren, die wir mit Nagios verwenden wollen. In unserem Fall werden wir http://nagios.example.com verwenden.

Dazu verwenden wir den Snapd-Paketinstaller. Da Rocky Linux nicht mit diesem Paket ausgeliefert wird, installiere den Snapd-Installer. Er benötigt das EPEL-Repository, das wir bereits installiert haben, also können wir das überspringen.

Installiere Snapd.

$ sudo dnf install -y snapd

Aktiviere und starte den Snap-Dienst.

$ sudo systemctl enable snapd --now

Installiere das Snap-Kernpaket und stelle sicher, dass deine Snapd-Version auf dem neuesten Stand ist.

$ sudo snap install core && sudo snap refresh core

Erstelle die notwendigen Links, damit Snapd funktioniert.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Gib den folgenden Befehl ein, um Certbot zu installieren.

$ sudo snap install --classic certbot

Stelle mit folgendem Befehl sicher, dass der Certbot-Befehl ausgeführt werden kann, indem du einen symbolischen Link auf das Verzeichnis /usr/bin erstellst.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Überprüfe die Installation.

$ certbot --version
certbot 2.3.0

Führe den folgenden Befehl aus, um ein SSL-Zertifikat zu erzeugen.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m admin@example.com -d nagios.example.com

Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/nagios.example.com auf deinem Server heruntergeladen.

Erstelle ein Diffie-Hellman-Gruppenzertifikat.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Führe einen Probelauf des Prozesses durch, um zu prüfen, ob die SSL-Erneuerung einwandfrei funktioniert.

$ sudo certbot renew --dry-run

Wenn du keine Fehler siehst, bist du bereit. Dein Zertifikat wird automatisch erneuert.

Schritt 10 – Nginx konfigurieren

Bevor wir Nginx konfigurieren, sollten wir noch eine weitere Änderung vornehmen. Standardmäßig stellt der Apache Nagios über http://<serverIP>:8080/nagios bereit. Jetzt können wir einen Proxy direkt für Nagios einrichten, aber es wird über https://nagios.example.com/nagios bedient. Wir können bei Nginx einen Redirect auf die Root-URL einrichten, was die Sache verkompliziert. Aus diesem Grund werden wir eine Änderung direkt bei Apache und Nagios vornehmen.

Öffne zunächst die Datei /usr/local/nagios/etc/cgi.cfg zum Bearbeiten.

$ sudo nano /usr/local/nagios/etc/cgi.cfg

Ändere url_html_path=/nagios in url_html_path=/.

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Als Nächstes öffnest du /etc/httpd/conf.d/nagios.conf zur Bearbeitung.

$ sudo nano /etc/httpd/conf.d/nagios.conf

Ändere ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" in ScriptAlias /cgi-bin "/usr/local/nagios/sbin".

Kommentiere die Zeile Alias /nagios "/usr/local/nagios/share" aus, indem du sie in die folgende Zeile änderst.

#Alias /nagios "/usr/local/nagios/share" 

Füge die folgende Zeile darunter ein.

DocumentRoot /usr/local/nagios/share

Füge die folgende Zeile am Anfang der Datei ein.

<VirtualHost *:8080>

Füge die folgende Zeile am Ende der Datei ein.

</VirtualHost>

Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Öffne zum Schluss die Datei /usr/local/nagios/share/config.inc.php zur Bearbeitung.

$ sudo nano /usr/local/nagios/share/config.inc.php

Ändere $cfg['cgi_base_url']='/nagios/cgi-bin'; in $cfg['cgi_base_url']='/cgi-bin';.

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Starte sowohl Apache als auch Nagios neu.

$ sudo systemctl restart httpd
$ sudo systemctl restart nagios

Um zu überprüfen, ob alles richtig funktioniert, öffne die URL http://<serverIP>:1080 in deinem Browser und du solltest sehen, dass Nagios richtig funktioniert. Vergewissere dich auch, dass die Daten der Hosts empfangen werden.

Wenn alles funktioniert, können wir mit der Erstellung unserer Konfigurationsdatei für Nginx fortfahren.

Erstelle eine Konfigurationsdatei für Nagios im Verzeichnis /etc/nginx/conf.d.

$ sudo nano /etc/nginx/conf.d/nagios.conf

Füge den folgenden Code in die Datei ein.

server {
    	listen 80; listen [::]:80;
	    server_name nagios.example.com;
    	return 301 https://$host$request_uri;
}

server {
        server_name nagios.example.com;

        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        access_log /var/log/nginx/nagios.access.log;
        error_log /var/log/nginx/nagios.error.log;

        ssl_certificate /etc/letsencrypt/live/nagios.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/nagios.example.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/nagios.example.com/chain.pem;
        ssl_session_timeout 1d;
        ssl_session_cache shared:MozSSL:10m;
        ssl_session_tickets off;

        ssl_protocols TLSv1.2 TLSv1.3;
        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_stapling on;
        ssl_stapling_verify on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
 
	   location / {
	       proxy_pass http://127.0.0.1:8080;
	       proxy_set_header Host $host;
	       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	       proxy_set_header X-Real-IP $remote_addr;
	       proxy_set_header X-Forwarded-Proto $scheme;
	   }
}

Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Überprüfe die Konfigurationsdatei.

$ sudo nginx -t

Wenn du die folgende Fehlermeldung erhältst, musst du die Datei /etc/nginx/nginx.conf bearbeiten, um die Größe der Variable server_names_hash_bucket_size hinzuzufügen/anzupassen.

nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size

Öffne die Datei /etc/nginx/nginx.conf zum Bearbeiten.

$ sudo nano /etc/nginx/nginx.conf

Füge die folgende Zeile vor

server_names_hash_bucket_size  64;

Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst. Überprüfe Nginx erneut.

Wenn du keine Probleme siehst, starte den Nginx-Server neu.

$ sudo systemctl restart nginx

SELinux konfigurieren

Wenn du SELinux aktiviert gelassen hast, führe den folgenden Befehl aus, um Nginx zu erlauben, sich mit dem Netzwerk zu verbinden.

$ sudo setsebool -P httpd_can_network_connect on

Starte die Domain https://nagios.example.com in deinem Browser und du solltest mit der Nagios-Homepage begrüßt werden.

Fazit

Du hast Nagios auf einem Rocky Linux 9 Server installiert und konfiguriert, um verschiedene Dienste wie Auslastung, Festplatten-/Swapnutzung, Benutzer, Gesamtprozesse, HTTP und SSH zu überwachen. Damit ist unser Tutorium abgeschlossen. Um mehr zu erfahren, solltest du die offizielle Nagios-Dokumentation lesen, in der die Überwachung und verschiedene Befehle ausführlich beschrieben werden. Wenn du Fragen hast, schreibe sie unten in die Kommentare.

Das könnte dich auch interessieren …