looser27
Goto Top

Ubuntu 14.04. LTS Server - Nagios installieren und einrichten

Aufbauend auf diese Anleitung Ubuntu 14.04 - 16.04 - 18.04 - 20.04 LTS Server - Freeradius mit AD-Anbindung will ich euch meinen Weg zu Nagios nicht vorenthalten.

Man kann entweder einen vorhandenen Ubuntu-Server nehmen oder nimmt, wie ich, einen separaten alten PC, packt da Ubuntu 14.04. LTS Server drauf und lässt den als "Monitor" laufen.

Die Schritte zur Installation und Anbindung an das AD sind identisch zu o.g. Anleitung.

Alle folgenden Befehle werden als su ausgeführt.
Der Einfachheit halber einmal

sudo su
Kennwort: (wurde bei der Installation vergeben)

1. Pakete installieren
apt-get install nagios3

Damit wird der Nagios3 Server nebst erforderlichen Komponenten komplett installiert.
Das hier vergebene Kennwort für den Adminzugang unbedingt merken. Damit meldet man sich später am Webinterface an.
Die Einrichtung der E-Mail-Funktion passt man während der Installation an die eigenen Bedürfnisse an.

2. Windows vorbereiten
Die zu überwachenden Windows-Clients (Server) werden mit der Software NSClient++ ausgestattet.
Bei der Installation werden folgende Optionen gewählt:

4cc0a63085ffe2f5bf75912d6b062558

Anschließend ergänzt man manuell in der Datei C:\Prpgramme\NSClient++\nsclient.ini folgende Einträge, sofern nicht vorhanden:
allowed hosts = IP des Servers, auf dem Nagios läuft
password = SUPERGEHEIMNIS
port = 12489

Anschließend wird der NSClient-Dienst neu gestartet.

Damit kann der Windows-Client mit dem Nagios-Server kommunizieren.

3. Nagios Konfiguration

Es gibt verschiedene Ansätze den Überblick über die Hardware zu behalten. Je nach Menge macht es Sinn die Elemente (Switche, Windows-Server, Linux, Server, etc.) in Unterverzeichnissen zusammenzufassen.

Da unser Netzwerk relativ überschaubar ist, habe ich mich auf ein Verzeichnis für die Objekte beschränkt und die Hardware eindeutig benannt.

3.1 Vorlage definieren
Zuerst erzeugt man ein Verzeichnis für die Objekte und legt sich eine Vorlage für die Windows-Systeme an:
mkdir /etc/nagios3/objects
cd /etc/nagios3/objects
nano windows-server.cfg

Die Vorlage windows-server.cfg enthält bei mir:
define host{
  name                            windows-server
  use                               generic-host
  check_period                 24x7
  check_interval               5
  retry_interval                 1
  max_check_attempts    10
  check_command           check-host-alive
  notification_period         24x7
  notification_interval       30
  notification_options       d,r
  contact_groups             admins
  register                         0
}

3.2 Den ersten Windows-Server hinterlegen
Praktischerweise gibt es in Nagios eine Vorlage für Windows-Systeme.
Diese kopieren wir uns nach /etc/nagios3/objects und ändern wie folgt:

define host {
use windows-server
host_name server-01
alias Mein_erster_Windows-Server
address IP_des_Windows_Servers
icon_image win40.png
}

Der Bereich define hostgroup wird komplett auskommentiert. Die host_group definieren wir an anderer Stelle.

Jetzt tragen wir in jedem define service Bereich unseren Windows-Server ein, wenn wir diesen Service nutzen wollen.
define service{
	use                     generic-service
	host_name               server-01
	service_description     NSClient++ Version
	check_command           check_nt!CLIENTVERSION
}

Damit das Abfragen des freien Speicherplatzes funktioniert muss die entsprechende Zeile so aussehen:
check_command    check_nt!USEDDISKSPACE!'-l c -w 80 -c 90'  

Wichtig sind hier die Hochkommas (') an der richtigen Stelle!

Nicht genutzte Services unbedingt auskommentieren.

3.3 host groups definieren

Die Datei zum Definieren der Hostgroups liegt im Verzeichnis /etc/nagios3/conf.d/hostgroups_nagios2.cfg
Hier ergänzt man die hostgroups, die man verwenden möchte nach dem gleichen Schema:
define hostgroup {
hostgroup_name windows-server
alias Windows Server
members server-01
}

3.4 Nagios Server konfigurieren
Jetzt muss nur noch dem Nagios-Server mitgeteilt werden, wo die entsprechenden Dateien zu finden sind.
Hierzu editiert man die Datei /etc/nagios3/nagios.cfg
# Template fuer Windows-Server
cfg_file=/etc/nagios3/objects/windows-server.cfg

#Definitionen fuer Windows-Server
cfg_file=/etc/nagios3/objects/server-01.cfg

3.5 nt.cfg
Damit der Nagios-Server mit dem Client kommunizieren kann, haben wir bei der Installation ein SUPERGEHEIMNIS vergeben. Dieses muss jetzt dem Nagios-Server noch mitgeteilt werden:
/usr/lib/nagios/plugins/check_nt -H $HOSTADDRESS$ -p 12489 -s SUPERGEHEIMNIS -v $ARG1$ $ARG2$

Dieser Eintrag muss in beiden Zeilen angepasst werden.

4 Nagios Server (neu) starten
service nagios3 restart

Wenn alles richtig ist, startet der Dienst und man kann sich am Webinterface einloggen.
Sollte es zu Fehlermeldungen kommen, so liegt das meist an Rechtschreibfehlern.

5. Webinterface
Das Webinterface erreicht man unter IP_des_Nagios-Servers/nagios3.
Der Anmeldename ist nagiosadmin; das Passwort ist das selber vergebene Passwort aus der Nagios-Installation.

6. Anmerkungen
Nach jeder Änderung oder dem Hinzufügen von weiteren Clients, muss der Nagios-Server neu gestartet werden.
Die möglichen Bilder, welche unter 3.2 unter icon_image verwendet wurden findet man am einfachsten mit
find /* | grep win40.png


Das Ergebnis zeigt den Speicherort für jede Menge Pics an, die man zur Unterscheidung einsetzen kann.

Man muss ein wenig Geduld mitbringen, denn nach einem Neustart des Dienstes dauert es unter Umständen eine ganze Weile bis das neu hinzugefügte Element abgefragt und der Status korrekt angezeigt wird.

Dann sieht das z.B. so aus:

1ac24305cf824fdc8f1f2d7709b30222

6.1 Linux-Systeme hinzufügen
Für das Hinzufügen von Linux-Sytemen kopiert man sich die Datei /etc/nagios3/conf.d/generic_host_nagios2.cfg nach /etc/nagios3/objects und verändert die entsprechend als Vorlage für Linux.
Ich habe für Firewalls, Telefonanlagen, etc. hieraus separate Vorlagen generiert um später flexibler zu sein.
Die eigentlichen Definitionen habe ich durch kopieren und anpassen der Datei /etc/nagios3/conf.d/localhost_nagios2.cfg erzeugt

6.2 E-Mail Benachrichtigungen einrichten
Dies ist auf dieser Seite sehr schön beschrieben und kann 1:1 übernommen werden.
Es hat sich nur herausgestellt, dass wenn man einen lokalen Mail-Server betreibt, der die Mails von einem Provider abholt und über diesen als Smarthost versendet, so funktioniert der Versand an lokale Mail-Adressen nicht. Deswegen muss man in der contacts_nagios2.cfg unbedingt ein externes Mailkonto eintragen. Oder man nutzt einen anderen externen Smarthost und zieht dann die Mails wie gewohnt ins eigene System.

6.3 Memory bei Windows Servern korrekt abfragen
Das Problem der o.g. check_nt Abfrage ist, dass sowohl der physische, als auch der virtuelle Speicher zusammengerechnet wird und man kein aussagekräftiges Ergebnis erhält.
Um das zu ändern, sind folgende Einstellungen notwendig:

Auf dem Windows Server ändert man die Zeile alias_mem in der nsclient.ini wie folgt:

alias_mem = checkMem MaxWarn=80% MaxCrit=90% ShowAll=long type=physical

Anschließend wird der Dienst neu gestartet.

Als nächstes prüft man die korrekte Einstellung auf dem nagios-Server.
Die Datei check_nrpe.cfg im Verzeichnis etc/nagios-plugins/config sollte so aussehen:
 # this command runs a program $ARG1$ with arguments $ARG2$
define command {
        command_name    check_nrpe
        command_line    /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
}

# this command runs a program $ARG1$ with no arguments
define command {
        command_name    check_nrpe_1arg
        command_line    /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Zuletzt noch die Service-Definition für den Windows-Server anpassen:

Muster:
define service {
    use    generic-service
    host_name    server-name
    service_description    Memory Usage
    check_command    check_nrpe_1arg!alias_mem
}

Zum Abschluß noch den nagios-Dienst neu starten mit service nagios3 restart. Das Ergebnis zeigt dann den physischen Speicher mit einer Warngrenze von 80% und einer kritischen Grenze bei 90%.

6.4 Druckerabfrage mit nagios
Hier kann man sich ein fertiges Plugin herunterladen, welches man nur noch nach
/usr/lib/nagios/plugins
kopieren muss. Folgt man der Anleitung auf der Seite, so kann man vorhandenen Netzwerkdrucker übersichtlich erfassen.
Die Status-Abfrage habe ich allerdings nicht integriert, da man ständig Mails bekommt, wenn das Gerät in Standby geht.

6.4.1 PHP Druckerabfrage
Hierfür müssen folgende Pakete installiert werden:
php5-cli
php5-common
php5-snmp

Anschließend lädt man sich dieses Plugin herunter und kopiert es nach
/usr/lib/nagios/plugins

Nicht vergessen das Plugin ausführbar zu machen mit
chmod a+x PLUGINNAME

Das Plugin kann man anschließend testen mit
./PLUGINNAME IP_DES_DRUCKERS public 1 counter 1
Zurückgegeben sollte nun als Wert die Anzahl bisher gedruckter Seiten sein.

Nun kann man die commands.cfg anpassen. Bei mir sieht die dann so aus:
####### Druckerabfrage Canon per php #####

# Drucker-Abfrage php
define command {
        command_name    check-toner-black
        command_line    /usr/lib/nagios/plugins/check-printer.php $HOSTADDRESS$ public 1 toner 1 0.05
        }
# Drucker-Abfrage php
define command {
        command_name    check-toner-cyan
        command_line    /usr/lib/nagios/plugins/check-printer.php $HOSTADDRESS$ public 1 toner 2 0.05
        }
# Drucker-Abfrage php
define command {
        command_name    check-toner-magenta
        command_line    /usr/lib/nagios/plugins/check-printer.php $HOSTADDRESS$ public 1 toner 3 0.05
        }
# Drucker-Abfrage php
define command {
        command_name    check-toner-yellow
        command_line    /usr/lib/nagios/plugins/check-printer.php $HOSTADDRESS$ public 1 toner 4 0.05
        }
# Drucker-Abfrage php
define command {
        command_name    check-toner-waste
        command_line    /usr/lib/nagios/plugins/check-printer.php $HOSTADDRESS$ public 1 toner 5 -0.95 -1
        }

# Drucker-Abfrage php
define command {
        command_name    check-printer-page
        command_line    /usr/lib/nagios/plugins/check-printer.php $HOSTADDRESS$ public 1 counter 1
        }

Nun noch die Konfirguration des Druckers anpassen:
##### PHP Abfragen der Toner und gedruckten Seiten

define service {
        use                     generic-service
        host_name               canon
        service_description     Toner Black
        check_command           check-toner-black
}

define service {
        use                     generic-service
        host_name               canon
        service_description     Toner Cyan
        check_command           check-toner-cyan
}

define service {
        use                     generic-service
        host_name               canon
        service_description     Toner Magenta
        check_command           check-toner-magenta
}

define service {
        use                     generic-service
        host_name               canon
        service_description     Toner Yellow
        check_command           check-toner-yellow
}

define service {
        use                     generic-service
        host_name               canon
        service_description     Resttonerbehaelter
        check_command           check-toner-waste
}

define service {
        use                     generic-service
        host_name               canon
        service_description     Gedruckte Seiten
        check_command           check-printer-page
}

Anschließend den nagios-Dienst neu starten und auf die Anzeige des Status warten.

6.5 Abfrage einer APC USV mit Nagios
Hier gibt es ein sehr schönes Plugin, welches man analog zu 6.4 einfügt und auf Anhieb laufen sollte.

6.6 Auswertung Temperatur Sensor
Wir haben bei uns an einem Server einen externen Temperatursensor per USB hängen zur Überwachung der Raumtemperatur.
Diesen wollte ich natürlich mit in Nagios einbinden, damit ich alle Daten zusammen habe.

Es handelt sich um den Temperature@lert USB.
Nachdem man sich von der Homepage die betreffenden SNMP IDs geholt hat, kann man die Abfrage integrieren:
define service {
        use                     generic-service
        host_name               serverraum-wb
        service_description     Temperatur im Serverraum
        check_command           check_snmp!public!.1.3.6.1.4.1.27297.1.2!25!30
        }
define service {
        use                     generic-service
        host_name               serverraum
        service_description     COM-Port Temperatursensor
        check_command           check_snmp_1ARG!public!.1.3.6.1.4.1.27297.1.1
        }
define service {
        use                     generic-service
        host_name               serverraum
        service_description     Letzte Temperaturauswertung
        check_command           check_snmp_1ARG!public!.1.3.6.1.4.1.27297.1.3
        }

Die hierfür erforderlichen Änderungen in der commands.cfg sehen so aus:
define command {
        command_name    check_snmp_1ARG
        command_line    /usr/lib/nagios/plugins/check_snmp  -H $HOSTADDRESS$ -C $ARG1$ -o $ARG2$
        }

Das erforderliche SNMP-Plugin ist in Nagios bereits enthalten. Somit braucht man nicht die umständlichen Umwege über das Perl-Plugin zu gehen und erhält trotzdem das gewünschte Ergebnis.

6.7 Update auf Ubuntu 16.04.01 LTS
Nach dem Distributionsupgrade (über "do-release-upgrade") wird der Freie Speicherplatz bei Linuxsystemen auf Critical gesetzt mit der Bemerkung, dass die Berechtigung nicht mehr ausreicht.
Hierzu habe ich einen funktionierenden Workaround gefunden:
sudo chown root:root /usr/lib/nagios/plugins/check_disk
sudo chmod u+s /usr/lib/nagios/plugins/check_disk
sudo chmod o+x /usr/lib/nagios/plugins/check_disk

Nach dem Ausführen wird der Speicherplatz wieder korrekt angezeigt.


7. Quellen
https://awaseroot.wordpress.com/2012/11/23/monitoring-windows-with-nagio ...
Netzwerk Management Server mit Raspberry Pi
http://www.myslug.de/index.php?title=Nagios_installieren_und_konfigurie ...
http://exchange.nagios.org/directory/Plugins/Hardware/Printers/SNMP-Pri ...
https://bugs.launchpad.net/ubuntu/+source/nagios-plugins/+bug/1516451

Änderungsindex:
2015-04-08 - Kapitel 6.2 eingefügt
2015-04-21 - Kapitel 6.3 eingefügt
2015-04-28 - Kapitel 6.4 eingefügt
2015-05-22 - Kapitel 6.5 eingefügt
2015-09-01 - Kapitel 6.6 eingefügt
2016-10-07 - Kapitel 6.4.1 eingefügt
2016-10-24 - Kapitel 6.7 eingefügt

Content-Key: 268479

Url: https://administrator.de/contentid/268479

Ausgedruckt am: 19.03.2024 um 11:03 Uhr

Mitglied: STRUBartacus
STRUBartacus 17.04.2015 um 14:50:19 Uhr
Goto Top
Schöne Anleitung face-smile Mein Favorit heisst jedoch Observium.
Mitglied: Looser27
Looser27 21.04.2015 um 12:27:24 Uhr
Goto Top
Danke. Leider haben wir jede Menge Hardware, die von Observium nicht unterstützt wird und da ist Nagios einfach flexibler.

Gruß

Looser
Mitglied: rzlbrnft
rzlbrnft 21.04.2015 um 16:48:56 Uhr
Goto Top
Coole Sache. Wir würden gerne Nagios mit Centreon benutzen. Ich habe keine Anleitung gefunden die mit Nagios3 aus dem Package Manager arbeitet und dann Centreon drauf installiert. Hast du dafür auch eine Lösung?
Mitglied: Looser27
Looser27 22.04.2015 um 08:13:46 Uhr
Goto Top
Ich habe nach einer Lösung für unser System gesucht und bin den ersten Ansätzen von aqui's Anleitung gefolgt. Den Rest habe ich mir aus diversen Quellen zusammengesucht und eingebaut. Als Abschluß habe ich dann diese Anleitung für Nachahmer gemacht.

Mit Centreon habe ich mich noch gar nicht beschäftigt.

Gruß

Looser
Mitglied: Looser27
Looser27 22.04.2015 um 08:35:17 Uhr
Goto Top
Vielleicht wirst Du hier fündig.