Nagios auf Ubuntu Server LTS – Installation

Nagios auf Ubuntu Server LTS (check_wmi_plus, PNP4Nagios, Nagios-Plugins) – Teil 1 – Installation

Changelog

  • 09. Mär – Statusmap Patch

Vorwort

Nagios Core
Nagios Core
Im ersten Teil der Reihe, möchte ich die Installation des Nagios-Systems inkl. Grundinstallation von PNP4Nagios, check_wmi_plus sowie den Standard-Plugins aufzueigen.
Ursprünglich war geplant, die Konfiguration gleich mit zu dokumentieren. Jedoch werde ich diese nun getrennt zur Verfügung stellen, dafür wesentlich detaillierter.

„check_wmi_plus“ verwendet das PSExec ähnliche Tool „wmic“, um via „Windows Management Instrumentation“ Befehle auf Windows-Maschinen auszuführen. Die Installation ist Voraussetzung und wird im Verlauf von mir beschrieben.
WMI bietet im Zusammenhang mit Nagios einen großen Komfort. In der Regel werden Maschinen mit zentralem Administrator-Account verwaltet, etwa wenn diese einer Domäne angehören. Lediglich dieser Zugang – oder ein alternativer Zugang mit Rechten zum Ausführen dieses Moduls – wird benötigt, ansonsten bleiben die Server bei korrekter Konfiguration unangetastet.

PNP4Nagios
PNP4Nagios
PNP4Nagios ermöglicht es, die Daten sämtlicher Dienste, die in Nagios überwacht werden, in Graphen bzw. Diagrammen auszugeben. Dabei bietet PNP4Nagios eine Art Schnittstellenfunktion zwischen Nagios und dem bekannten RRD Tool.

„Nagios verwendet so genannte Plugins um die eigentlichen Checks durchzuführen.
Plugins sind eigenständige Programme die auch unabhängig von Nagios verwendet werden können.“ (Quelle)

Die Quellen der Installationen werde ich im Verlauf stets in „~/nagios_build“ ablegen. Ein „Prefix“ für die Installationen wird nie gesetzt, ich gehe also von den paketeigenen Installationsverzeichnissen aus. Viele Konfigurationen sind so schon vorab korrekt eingestellt, außerdem habe ich mich mit der Zeit einfach daran gewöhnt…
Zur Übersicht möchte ich diese Orte dennoch auflisten:

Nagios: /usr/local/nagios
PNP4Nagios: /usr/local/pnp4nagios
wmic: / (direkt via /bin/wmic)

Hinweis: Die Installation umfasst nicht die Absicherung der öffentlichen Dienste.

Vorbereitung

Vorab die Installation der im Verlauf benötigten Pakete. Für Nagios, Nagios-Plugins und PNP4Nagios, habe ich mich für die „build-deps“ entschieden. Diese installieren die Dateien, die für das Bauen der Ubuntu-Pakete benötigt würden.

sudo apt-get build-dep nagios3 nagios-plugins pnp4nagios
sudo apt-get install libapache2-mod-php5 apache2 apache2-mpm-prefork \
libgd2-xpm-dev autoconf build-essential libconfig-inifiles-perl \
libnumber-format-perl libdatetime-perl php5-gd

In der späteren Verwendung wird dieses kleine Alias für die Bash sehr nützlich sein. Hiermit kann komfortabel die Konfiguration auf ihre Gültigkeit überprüft werden:

sudo echo "/etc/bash.bashrc" >> alias nagver='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'

Die Zeile kann ab „alias“ anschließend einmal in die aktive Shell kopiert werden, um die Änderung sofort zu übernehmen. Ansonsten würde ein erneutes Einloggen in die Bash notwendig sein.
Für andere Shells als Bash, kann der Alias entsprechend angepasst/übernommen werden.

Nagios und Nagios-Plugins installieren

Zuerst werden der Nagios-Kern sowie die Nagios-Plugins heruntergeladen und die Dateien entpackt. Je nach dem wann dieser Artikel gelesen wird, empfiehlt sich nachzuschauen, welche Version aktuell ist.
Auf Version 4.x verzichte ich hier, da diese noch nicht vollständig zu PNP4Nagios kompatibel ist. Zwar würde der im Verlauf verwendete synchrone Modus funktionieren, andere Modi jedoch nur über Umwege.

mkdir ~/nagios_build
cd ~/nagios_build
wget --content-disposition http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.5.1.tar.gz
wget --content-disposition https://www.nagios-plugins.org/download/nagios-plugins-1.5.tar.gz
tar xfvz nagios-3.5.1.tar.gz
tar xfvz nagios-plugins-1.5.tar.gz
rm *gz

Für Nagios werden nun entsprechende Benutzer und Gruppen angelegt sowie Zugehörigkeiten eingestellt.
Für die IDs bewege ich mich im 3000er Bereich. 5000er werden oft für Mailserver verwendet. Das hat keine besondere Bedeutung und dient eher der Übersicht:

sudo groupadd -g 3000 nagios
sudo groupadd -g 3001 nagcmd
sudo useradd -u 3000 -g nagios -G nagcmd -d /usr/local/nagios -c 'Nagios Admin' nagios
sudo adduser www-data nagcmd

Das Umsetzen der Dateien erfolgt im Anschluss. Bei der Konfiguration wähle ich den Ubuntu- und Debian-typischen Pfad für die Sites, damit es aufgeräumt bleibt. „install-exfoliation“ installiert das etwas schönere und mittlerweile übliche Nagios Theme:

cd ~/nagios_build/nagios
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-command-user=nagios --with-command-group=nagcmd --with-httpd-conf=/etc/apache2/sites-available
make all
sudo make install
sudo make install-init
sudo make install-commandmode
sudo make install-config
sudo make install-webconf
sudo make install-exfoliation

Die Datei „resource.cfg“ muss für PNP4Nagios lesbar sein. Eine Alternative wäre die Verwendung von „apache2-mpm-itk“ anstatt des Preforks und die Zuteilung des Nagios Benutzers via „AssignUserID“.

sudo chmod 664 /usr/local/nagios/etc/resource.cfg

Die Installation der Plugins erfolgt unter ähnlichen Parametern wie schon für Nagios:

cd ~/nagios_build/nagios-plugins-1.5
./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-perl-modules --enable-libtap
make
sudo make install

Der Zugang zur Weboberfläche wird durch „Hypertext Access“ gesteuert. Der Benutzername „nagiosadmin“ sollte übernommen werden. Es reicht nicht an dieser Stelle einfach einen eigenen Namen auszuwählen. Hierfür würde weitere Konfiguration notwendig.
Der erste Befehl verlangt nach Eingabe nach einem Passwort für den Benutzer, dieses ist frei wählbar:

sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
sudo chown nagios:nagcmd /usr/local/nagios/etc/htpasswd.users

Die letzten Arbeiten in Form von Installation/Aktivierung des Init-Scripts in die Runlevel, das Einschalten der Nagios Apache-Konfiguration sowie obligatorisches (Neu-)Starten von Diensten:

sudo update-rc.d nagios defaults
sudo a2ensite nagios.conf
sudo service nagios start
sudo service apache2 restart

Optional: Statusmap mit farblichen Service-Status

An dieser Stelle möchte ich noch einen nützlichen Patch für die Statusmap vorstellen, der die Statusmap um die farbliche Darstellung der Service-Status erweitert.

cd ~/nagios_build/cgi
wget -O statusmap.patch http://www.debinux.de/wp-content/uploads/nagios3.5.x-statusmap.patch
patch statusmap.c statusmap.patch
make
sudo cp statusmap.cgi /usr/local/nagios/sbin

check_wmi_plus

Das besagte WMI-Modul für Linux wird nun gebaut. Dies ist eine direkte Abhängigkeit:

cd ~/nagios_build
wget http://www.edcint.co.nz/checkwmiplus/wmi-1.3.14.tar.gz
tar xfvz wmi-1.3.14.tar.gz
rm wmi-1.3.14.tar.gz
cd wmi-1.3.14
sudo make

„check_wmi_plus“ ist in Perl geschrieben und muss nicht vorab übersetzt oder besonders installiert werden. Es ist im Grunde portabel und nur abhängig von der gesetzten Konfiguration.
Eine Kopie belasse ich im „nagios_build“ Verzeichnis. Gerne auch hier vorab auf eine neue Version prüfen:

cd ~/nagios_build
mkdir check_wmi_plus
cd check_wmi_plus
wget http://edcint.co.nz/checkwmiplus/sites/default/files/check_wmi_plus.v1.58.tar.gz
tar xfvz check_wmi_plus.v1.58.tar.gz
rm check_wmi_plus.v1.58.tar.gz
sudo cp -R * /usr/local/nagios/libexec

Das Plugin liegt nun im konfigurierten Verzeichnis des Nagios. Inklusive seiner Konfiguration und sonstiger Mitbringsel.
Rekursiv noch die Zugehörigkeit ändern bzw. berichtigen:

sudo chown -R nagios: /usr/local/nagios/libexec

Nun zur Grund-Einstellung des Plugins, die ich nicht bis ins Detail beschreibe und auf die Entwickler-Seite verweise.
Gearbeitet wird im Plugin-Verzeichnis des Nagios:

cd /usr/local/nagios/libexec

Nun die Dateien „check_wmi_plus.pl“ öffnen und die wichtigen Zeilen bearbeiten:
sudo nano check_wmi_plus.pl:

my $conf_file='./check_wmi_plus.conf';
use lib "/usr/local/nagios/libexec";

Die Beispielkonfiguration gerne einmal anschauen, die wichtigsten Parameter sind durch die Standardinstallation bereits korrekt:

sudo mv check_wmi_plus.conf.sample check_wmi_plus.conf

PNP4Nagios

Der Klassiker für die grafische Darstellung von Diensten und mehr, installiert sich wie folgt.
Auch hier verwende ich wieder das Debian/Ubuntu typische Seiten-Verzeichnis.
Hinweis: Ohne weitere Optionen für „configure“ werden als Benutzer und Gruppe “nagios” verwendet:

cd ~/nagios_build
wget --content-disposition http://sourceforge.net/projects/pnp4nagios/files/latest/download?source=files
tar xfvz pnp4nagios-*.tar.gz
rm pnp4nagios-*.tar.gz
cd pnp4nagios*
./configure --with-httpd-conf=/etc/apache2/sites-available
make all
sudo make fullinstall

Zum Abschluss die Site-Konfiguration einschalten, das Apache-Modul „rewrite“ für PNP4Nagios aktivieren und diesen neustarten.

sudo a2ensite pnp4nagios.conf
sudo a2enmod rewrite
sudo service apache2 restart

Wie angerissen: Die typische, „synchrone“ Arbeitsweise wird verwendet. Andere Modi haben viele Vorteile, konfigurieren sich jedoch etwas komplizierter.

Zuerst folgende Änderungen durchführen:
/usr/local/nagios/etc/nagios.cfg

process_performance_data=1
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata

Nun zuerst die letzten beiden Command-Einträge mit den selben „command_names“ löschen!

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

Stattdessen diese einfügen:

define command {
	command_name    process-service-perfdata
	command_line    /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl
}

define command {
	command_name    process-host-perfdata
	command_line    /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}

Nagios die Änderungen mitteilen:

sudo service nagios reload

Jetzt kann die PNP4Nagios-Installation entgültig abgeschlossen werden.
Via Browser die Seite http://1.2.3.4/pnp4nagios/ aufrufen, prüfen, ob alles auf grün steht und – falls positiv – die Installationsdatei löschen:

sudo rm /usr/local/pnp4nagios/share/install.php

PNP4Nagios bietet zudem die Möglichkeit, die Konfiguration auf ihre Gültigkeit zu überprüfen. Dies erfolgt mit einem bereitgestellten Script.
Wer es ausprobieren möchte, macht es wie folgt. Die Pfade und Parameter habe ich bereits angepasst:

cd
wget http://verify.pnp4nagios.org/verify_pnp_config
perl verify_pnp_config -c /usr/local/nagios/etc/nagios.cfg -m sync -p /usr/local/pnp4nagios/etc

10 Antworten auf “Nagios auf Ubuntu Server LTS – Installation

  1. David L.

    Moin,

    müsste nicht in dem Konfigurationsteil „Optional: Statusmap mit farblichen Service-Status“ statt

    cd ~/nagios_build/cgi

    dieses stehen:

    cd ~/nagios_build/nagios/cgi

    Grüße und danke für die Anleitung
    David L.

  2. luca

    Erst Danke und Großes lob für die saubere Dokumentation..
    allerdings habe ich ein kleines verwunderliches problem… es hat alles ohne probleme funktioniert. blos wenn ich über den webserver mein nagios aufrufe mit der ip/nagios bekomme ich nur die home seite mit na anzeige nagios not-runnning allerdings läuft nagios im system selbst schon ohne probleme alle checks sagen okay und es ist kein error das einzigste ist ein WARNING `process_perf_data 1` is set for 1 hosts/services which are not providing performance data ! find den fehler nicht vllt. kannst du mir weiterhelfen oder einer der Netten mit leser :) LG und Großen danke im vorraus

      1. luca

        Glaub hab mein fehler gefunden ich bin mit neueren versionen an die gleiche vorgehensweise von dir ran gegeangen also evtl. lags daran :) ich versuchs nochmal mit den gleichen versionen wenn das nicht klappt melde ich mich nochmal und danke für dein dien unerstützung fals ich sie brauchen würde :)

        1. luca

          Sagte ich schon spitzen Doku ? funktioniert hervoragend mit der richtigen version :P
          allerdings wie müsste ich das jetzt machen um plugins zu integrieren :) so ist es ja grad nur ne leere hülle :)

  3. Valentin S.

    Ersteinmal Danke für den tollen Artikel!
    Für die Nachwelt möchte ich dennoch folgendes festhalten.
    Das Compilen von WMI hat bei mir mit folgendem Fehler zum Abbruch geführt:

    /usr/include/stdc-predef.h:0: error: Syntax error near ‚3‘

    Nach intensiver Suche nach einer Lösung für das Problem bin ich auf folgende Änderung am Source in /Samba/source/ gestoßen:

    https://bugzilla.redhat.com/attachment.cgi?id=693547&action=diff

    Die Zeilennummern stimmen zwar nicht, aber mit einer kleine Suche findet man die Stelle schnell.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.