Linux

Server Monitoring mit Nagios

Aus der Nagios Dokumentation: »Nagios® ist eine System- und Netzwerküberwachungsapplikation. Sie überwacht Hosts und Services, die Sie angeben, und alarmiert Sie, wenn sich die Dinge verschlechtern und wenn sie wieder besser werden.«

Features:

  • Überwachen von Netzwerkdiensten (SMTP, POP3, HTTP, NNTP, PING, etc.)
  • Überwachen von Host-Ressourcen (Prozessorauslastung, Diskbelegung, usw.)
  • Einfaches Plugin-Design, das es Benutzern erlaubt, schnell eigene Service-Prüfungen zu entwickeln
  • Parallel laufende Service-Prüfungen
  • Die Möglichkeit, Netzwerk-Host-Hierarchien mit Hilfe von „Eltern“-Hosts zu definieren, um die Erkennung von Hosts zu erlauben, die „down“ sind und die Unterscheidung zwischen Hosts, die „down“ bzw. unerreichbar sind.
  • Benachrichtigung von Kontakten, wenn Service- oder Host-Probleme auftreten bzw. gelöst werden (über e-Mail, Pager oder benutzerdefinierte Methoden)
  • Die Möglichkeit, Routinen zur Ereignisbehandlung (event handler) zu definieren, die bei Host- oder Service-Ereignissen ablaufen, um proaktive Problemlösungen zu erlauben
  • Automatische Rotation von Protokolldateien
  • Unterstützung, um redundante Überwachungs-Hosts zu implementieren
  • Optionales Web-Interface, um den aktuellen Netzwerkstatus, Benachrichtigungs- und Problemverläufe, Protokolldateien usw. anzusehen

Systemvoraussetzungen

Ein Linux mit maximal 2GB Hauptspeicher und wenigen GB Festplattenspeicher. Ich verwende ein Ubuntu 20.04 LTS in einer virtuellen Maschine die eine 50GB HDD bereitstellt. Wer keine Performencedaten speichert, kommt mit sehr viel weniger Platz aus. Selbst ein Raspberry Pi der zweiten Generation kann das bereitstellen! Die Anleitung sollte für alle Debian basierten Systeme funktionieren, einschließlich Raspberry Pi OS.

Installation

Zunächst sollten Repositories aktualisiert und ausstehende Updates eingespielt werden und anschließend die für dieses Vorhaben benötigte Software, von der Nagios und seine Komponenten abhängen bzw. die zur Erstellung benötigt wird.

sudo apt update && sudo apt upgrade -y
# Abhängigkeiten für Nagios core
sudo apt install -y autoconf gcc libc6 make wget unzip apache2 \
    php libapache2-mod-php7.4 libgd-dev
sudo apt install -y openssl libssl-dev
# Zusätzliche Abhängigkeiten für Plugins
sudo apt install -y libmcrypt-dev libssl-dev bc gawk dc \
    build-essential snmp libnet-snmp-perl gettext
# Zusätzliche Abhängigkeiten für NRPE
sudo apt install -y automake openssl
# Zusätzliche Abhängigkeiten für PNP4Nagios
sudo apt install -y rrdtool librrd-simple-perl php-gd php-xml

Ich installiere die Komponenten immer über mein Home Verzeichnis, so habe ich die letzte installierte Version vor Augen und weiß welches Update als nächstes ansteht. Hier bleibe ich aber beim Standard und dokumentiere nachfolgend die Installation über das /tmp Verzeichnis.

Nagios Core

Sourcen herunterladen (die aktuelle Version von Github)

cd /tmp
wget -O nagioscore.tar.gz https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.5.1/nagios-4.5.1.tar.gz
tar xzf nagioscore.tar.gz

Erstellen der Anwendung, Benutzer und Gruppe und Installation der Binaries

# Kompillieren
cd /tmp/nagioscore-nagios-4.5.1/
sudo ./configure --with-httpd-conf=/etc/apache2/sites-enabled
sudo make all
# Benutzer & Gruppe erstellen und zuweisen
sudo make install-groups-users
sudo usermod -a -G nagios www-data
# Binaries installieren
sudo make install
# Dienst installieren
sudo make install-daemoninit
# Kommandomodus installieren
sudo make install-commandmode
# Beispielkonfiguration installieren
sudo make install-config
# Webserver (apache2) Konfiguration installieren
sudo make install-webconf
sudo a2enmod rewrite
sudo a2enmod cgi
# ggf. Firewall konfigurieren
sudo ufw allow Apache
sudo ufw reload
# Web-Verzeichnis absichern
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
# Sollen weitere Benutzer Zugang erhalten, ohne -c
# sudo htpasswd /usr/local/nagios/etc/htpasswd.users nutzername

# Webserver neu starten
sudo systemctl restart apache2.service
# Nagios starten
sudo systemctl start nagios.service

Nagios Plugins

Sourcen herunterladen (die aktuelle Version von Github)

cd /tmp
wget --no-check-certificate -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/archive/release-2.4.6.tar.gz
tar zxf nagios-plugins.tar.gz

Erstellen und installieren

cd /tmp/nagios-plugins-release-2.4.6/
sudo ./tools/setup
sudo ./configure
sudo make
sudo make install

Dienst neu starten und überprüfen

sudo systemctl restart nagios.service
sudo systemctl status nagios.service

NRPE

Sourcen herunterladen (die aktuelle Version von Github)

cd /tmp
wget --no-check-certificate -O nrpe.tar.gz https://github.com/NagiosEnterprises/nrpe/archive/nrpe-4.1.0.tar.gz
tar xzf nrpe.tar.gz

Beim Erstellen muss zwischen 32 und 64 bit Versionen unterschieden werden! Für eine Installation auf einem Raspberry Pi ist die 32bit Version durchaus noch interessant.

cd /tmp/nrpe-nrpe-4.1.0/

# 32bit benötige ich nicht (auskommentiert)
# sudo ./configure --enable-command-args --with-ssl-lib=/usr/lib/i386-linux-gnu/
# sudo make all

# 64bit
sudo ./configure --enable-command-args --with-ssl-lib=/usr/lib/x86_64-linux-gnu/
sudo make all

# Benutzer und Gruppe erstellen
sudo make install-groups-users
# Binaries installieren
sudo make install
# Konfiguration erstellen
sudo make install-config

Auf den Dienst verzichte ich hier auf dem Nagios Host, Du kannst es aber in der Dokumentation nachlesen, wenn es interessiert.

UPNP4Nagios

Sourcen herunterladen (die  aktuelle Version von Github)

cd /tmp
wget -O pnp4nagios.tar.gz https://github.com/lingej/pnp4nagios/archive/0.6.26.tar.gz
tar xzf pnp4nagios.tar.gz

Erstellen und installieren

cd pnp4nagios-0.6.26
sudo ./configure --with-httpd-conf=/etc/apache2/sites-enabled
sudo make all
sudo make install
sudo make install-webconf
sudo make install-config
sudo make install-init
sudo systemctl start npcd.service
sudo systemctl restart apache2.service

Aufrufen und ausprobieren

Dein Nagios sollte jetzt funktionieren und Du kannst es über die folgende Adresse aufrufen:

http://IP-Deines-Servers/nagios

Benutzer: nagiosadmin

Passwort: das hast Du bei der Nagios Core Installation selbst erzeugt

Nagios überwacht mit der Beispielkonfiguration zunächst einmal lediglich sich selbst und eine Erklärung wie die verschiedenen Konfigdateien zusammenspielen würde hier zu weit führen. Du beginnst am Besten mit der /usr/local/nagios/etc/nagios.cfg und schaust Dir anschließend die Unterverzeichnisse an. Von besonderem Interesse ist natürlich die localhost.cfg…

Nach jeder (noch so kleinen) Änderung in einer der Dateien solltest Du die Konfiguration prüfen lassen und erst wenn die Prüfung klappt, den Nagios Dienst neu starten.

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
sudo systemctl restart nagios.service

Diskussionen und Anmerkungen

Gerne beantworte ich Fragen und diskutiere im Fediverse über diesen Artikel.