Sie sind auf Seite 1von 27

Netzwerkmanagement,

Analyse und Werkzeuge


(Praktikum)
Aufgabe 2: Nagios

Sommersemester 2007

Fakultät Informatik

verfasst von:

Lukas Kallies
Andreas Thienemann

3. Juni 2007
Inhaltsverzeichnis
1 Einleitung....................................................................................................
.............2
2 Was ist Nagios?................................................................................................ ........2
3 Installation und Konfiguration.................................................................................2
3.1 Anpassung des Systems........................................................................ ...........2
3.2 Apache Konfiguration.......................................................................................3
3.3 Nagios konfigurieren..................................................................................... ....3
Ping, HTTP, MySQL und freier Speicherplatz.....................................................6
Erreichbarkeit und Verfügbarkeit von Diensten................................................9
CVS mit check_tcp überwachen......................................................................14
LDAP mit check_ldap überwachen................................................................. ..15
Mailserver überwachen................................................................................. ...17
SSH mit check_ssh überwachen......................................................................19
Pixelschieben................................................................... ................................20
4 Testlauf.................................................................................................................
..23

i
Einleitung

1 Einleitung
Aufgabenstellung: „Im Rahmen des NAW Praktikums befassen wir uns mit dem
Netzwerkmanagement-Werkzeug Nagios. Auf virtuellen Hosts ist Nagios sowie
ein Webserver Apache vorinstalliert. Sie werden in 2er Gruppen dieses Nagios
konfigurieren.“

2 Was ist Nagios?


Aufgabenstellung: „Recherchieren Sie im Internet über das
Netzwerkmanagementtool „Nagios“ und machen sich mit Nagios, seinen
Aufgaben und Möglichkeiten vertraut.“
Nagios ist ein System- und Netzwerkmonitoring Werkzeug mit dessen Hilfe es möglich
ist zu überprüfen ob einzelne Dienste eines Rechners beziehungsweise der Rechner
selbst erreichbar ist. Durch den modularen Aufbau von Nagios ist es möglich Plugins
für die sogenannten Checks zu verwenden. Somit kann fast jede beliebige Eigenheit
eines Servers, Arbeitzsplatzrechners oder auch sonstigen Komponenten wie Switches
oder Drucker überwacht werden. Einige Beispiele sind die Erreichbarkeit des
Mailservers, die Auslastung der Festplatte, der Füllstand der Druckerpatronen eines
Abteilungsdruckers, die Temperatur im Serverrraum oder die Anzahl der freien Inodes.
Somit ist es einem Administrator möglich mehrere Ressourcen gleichzeitig zu
überprüfen ohne an jedes einzelne Gerät zu laufen oder sich durch die Benutzer
informieren lassen zu müssen.

3 Installation und Konfiguration


3.1 Anpassung des Systems
Neben den eigentlichen Anpassungen die für den Betrieb von Nagios relevant sind,
wurden von uns am System einige Änderungen vorgenommen. Wir wollen an dieser
Stelle nicht genauer darauf eingehen, sie der Vollständigkeit halber aber auflisten:

2
Installation und Konfiguration

# passwd
# groupadd naw
# useradd -G naw -d /home/kallies -s /bin/bash -c "Lukas Kallies" -m kallies
# useradd -G naw -d /home/ixs -s /bin/bash -c "Andreas Thienemann" -m ixs
# passwd kallies
# passwd ixs
# aptitude update
# aptitude upgrade
# aptitude install vim screen tree ntpdate nmap
# ntpdate time.uni-freiburg.de && hwclock -w
# cd /usr/share/nagios2/htdocs/images/logos && tar xvf /root/imagepak-base.tar.tar
# #fuer passive Checks:
# chmod 755 /var/lib/nagios2
# chmod 2770 /var/lib/nagios2/rw/

3.2 Apache Konfiguration


Aufgabenstellung: „Konfiguration des Apache-Webservers um die Nagios-
Webseiten automatisch darzustellen.“
Am Apache-Webserver mussten keine Änderungen vorgenommen werden da die
Debianpakete alle für uns notwendigen Einstellungen schon vorkonfiguriert haben. Um
Zugriff auf die Weboberfläche von Nagios zu bekommen mussten wir lediglich die
entsprechenden Benutzer in der Datei /etc/nagios2/htpasswd.users anlegen. Hierfür
haben wir folgende Befehle gefolgt von dem entsprechenden Passwort verwendet:

# htpasswd /etc/nagios2/htpasswd.users nagiosadmin


# htpasswd /etc/nagios2/htpasswd.users guest

Den neu angelegten Benutzer „guest“ haben wir in der Datei /etc/nagios2/cgi.cfg
eingetragen um ihm Zugriff auf die Weboberfläche zu gewähren.
/etc/nagios2/cgi.cfg
< authorized_for_all_services=nagiosadmin
< authorized_for_all_hosts=nagiosadmin
...
> authorized_for_all_services=nagiosadmin,guest
> authorized_for_all_hosts=nagiosadmin,guest

3.3 Nagios konfigurieren


Aufgabenstellung: „Im Nagios Konfigurationsbereich müssen mit Hilfe der
dortigen Konfigurationsfiles folgende Aufgaben erledigt werden.“
Das bei Debian 4.0 GNU/Linux mitgeliefert Paket nagios2-common legt seine
Konfigurationsdateien unter /etc/nagios2 ab. In diesem Verzeichnis finden sich die
Grundeinstellungen von Nagios in der Datei nagios.cfg. Dort wird definiert wo sich
weitere Konfigurationsdateien befinden und beispielsweise wo Nagios sein PID-File
ablegen soll. Außerdem müssen in diesem Verzeichnis noch die Dateien cgi.cfg und

3
Installation und Konfiguration

Verzeichnisbaum 1: /etc/nagios2
.
|-- apache2.conf
|-- cgi.cfg
|-- commands.cfg
|-- conf.d
| |-- contacts_nagios2.cfg
| |-- generic-host_nagios2.cfg
| |-- generic-service_nagios2.cfg
| |-- hostgroups_nagios2.cfg
| |-- hosts
| | |-- 141.28.65.142_nagios2.cfg
| | |-- FOO-GW.rz-int.fh-furtwangen.de_nagios2.cfg
| | |-- SusiDerkins.foo.fh-furtwangen.de_nagios2.cfg
| | |-- averell.foo.fh-furtwangen.de_nagios2.cfg
| | |-- eva.foo.fh-furtwangen.de_nagios2.cfg
| | |-- fermat.ai-lab.fh-furtwangen.de_nagios2.cfg
| | |-- ftpserver.alpha.fh-furtwangen.de_nagios2.cfg
| | |-- hack-fw.foo.fh-furtwangen.de_nagios2.cfg
| | |-- host-gateway_nagios2.cfg
| | |-- kenny.foo.fh-furtwangen.de_nagios2.cfg
| | |-- ldap-RZ.informatik.hs-furtwangen.de_nagios2.cfg
| | |-- ldapin.informatik.fh-furtwangen.de_nagios2.cfg
| | |-- localhost_nagios2.cfg
| | |-- son.foo.fh-furtwangen.de_nagios2.cfg
| | |-- whisky.uni-koblenz.de_nagios2.cfg
| | `-- zeus.ai-lab.fh-furtwangen.de_nagios2.cfg
| |-- servicegroups_nagios2.cfg
| |-- services_nagios2.cfg
| `-- timeperiods_nagios2.cfg
|-- htpasswd.users
|-- nagios.cfg
|-- resource.cfg
`-- stylesheets

resource.cfg vorhanden sein. Diese definieren das Verhalten der Skripte der
Weboberfläche (cgi.cfg), benutzerspezifische Makros wie den Pfad zu den Plugins
(resource.cfg). In unserer Konfiguration liegt in diesem Verzeichnis noch die Datei
commands.cfg, welche alle command-Objekte definiert, also alles was Nagios tut
beziehungsweise tun kann.
Da Nagios an sich nur die Grundlage bildet und selbst keine Checks durchführen kann
benötigt man noch das Paket nagios-plugins-basic. Dieses wiederum legt seine
Konfigurationsdateien unter /etc/nagios-plugins ab. So wird beispielsweise das
generische Plugin check_tcp unter /etc/nagios-plugins/config/tcp_udp.cfg wie folgt
definiert:
/etc/nagios-plugins/config/tcp_udp.cfg
# 'check_tcp' command definition
define command{
command_name check_tcp
command_line /usr/lib/nagios/plugins/check_tcp -H $HOSTADDRESS$ -p $ARG1$
}

4
Installation und Konfiguration

Hier wird definiert, dass das Kommando check_tcp das Skript


/usr/lib/nagios/plugins/check_tcp mit den Parametern -H und -p aufruft und dieses
über die beiden Variablen $HOSTADDRESS$ und $ARG1$ über eine Servicedefinition
angesprochen werden kann.

Verzeichnisbaum 2: /etc/nagios-plugins
.
`-- config
|-- apt.cfg
|-- dhcp.cfg
|-- disk.cfg
|-- dummy.cfg
|-- ftp.cfg
|-- http.cfg
|-- load.cfg
|-- mail.cfg
|-- news.cfg
|-- nmap.cfg
|-- ntp.cfg
|-- ping.cfg
|-- procs.cfg
|-- real.cfg
|-- ssh.cfg
|-- tcp_udp.cfg
|-- telnet.cfg
`-- users.cfg

Einen sehr guten Einblick in die komplexen Zusammenhänge der einzelnen


Konfigurationsdateien gibt folgende Grafik aus der Dokumentation von Nagios.

5
Installation und Konfiguration

Ping, HTTP, MySQL und freier Speicherplatz


Aufgabenstellung: „Prüfen Sie, ob die Dienste der virtuellen Nodes:
141.28.65.141 (Ping), 141.28.65.142 (Ping, HTTP, MySQL), 141.28.65.151 (den
freien Speicher des Nagios Servers) erreichbar sind und erörtern Sie kurz die
Ausgabe der spezifischen Nagios-Plugins.“
Zuerst wurden von uns die einzelnen Hosteinträge angelegt. Bis auf localhost wurden
die Services in gesonderten Dateien definiert. Danach wurden die Hosts den
entsprechenden Hostgruppen zugeordnet.
/etc/nagios2/conf.d/hosts/whisky.uni-koblenz.de_nagios2.cfg
define host{
use generic-host
parents localhost
host_name whisky
alias whisky.uni-koblenz.de
address 141.28.65.141
}

6
Installation und Konfiguration

/etc/nagios2/conf.d/hosts/141.28.65.142_nagios2.cfg
define host{
use generic-host
parents localhost
host_name 141.28.65.142
alias 141.28.65.142
address 141.28.65.142
}

/etc/nagios2/conf.d/hosts/localhost_nagios2.cfg
define host{
use generic-host
host_name localhost
alias localhost
address 141.28.65.151
}

define service{
use generic-service
host_name localhost
service_description Disk Space
check_command check_all_disks!20%!10%
}

/etc/nagios2/conf.d/hostgroups_nagios2.cfg
define hostgroup {
hostgroup_name http-servers
alias HTTP servers
members 141.28.65.142
}

define hostgroup {
hostgroup_name mysql-servers
alias MYSQL servers
members 141.28.65.142
}

define hostgroup {
hostgroup_name ping-servers
alias Pingable servers
members whisky,141.28.65.142
}

/etc/nagios2/conf.d/services_nagios2.cfg
define service {
hostgroup_name http-servers
service_description HTTP
check_command check_http

7
Installation und Konfiguration

use generic-service
notification_interval 0
}

define service {
hostgroup_name mysql-servers
service_description MYSQL
check_command check_tcp!3306
use generic-service
notification_interval 0
}

define service {
hostgroup_name ping-servers
service_description PING
check_command check_ping!100.0,20%!500.0,60%
use generic-service
notification_interval 0
}

Nachfolgende Grafik zeigt einen angepassten Screenshot der Ausgabe der einzelnen
Nagios-Plugins in der Weboberfläche.

Service Beispiel Erläuterung


PING OK - 141.28.65.142: rta Es wurde ein Ping an 141.28.65.142
3.207ms, lost 0% abgesetzt. Die durchschnittliche
Reaktionszeit beträgt in diesem Fall
3,207 ms, es liegt kein Paketverlust vor.
MYSQL TCP OK - 0.016 second In diesem Fall wird MySQL mit dem
response time on port 3306 generischen check_tcp geprüft. Dabei
wird die Erreichbarkeit des Ports 3306
validiert. In unserem Fall dauerte dies
0,016 Sekunden.

8
Installation und Konfiguration

HTTP HTTP OK HTTP/1.1 200 OK - Eine HTTP Anfrage auf Port 80 dauerte
5553 bytes in 0.096 seconds 0,096 Sekunden und lieferte ein Code
200 (OK) zurück. Übertragen wurden
dabei 5553 Bytes.
Disk Space DISK OK - free space: / 6551 Die Festplatte unseres Servers ist zu 9%
MB (91% inode=96%): belegt, es sind noch 6551 MB und 96%
/dev/shm 30 MB (100% der Inodes verfügbar.
inode=99%):

Erreichbarkeit und Verfügbarkeit von Diensten


Aufgabenstellung: „Prüfen Sie, ob die Nodes: 141.28.15.26, 141.28.2.19,
141.28.64.100, 141.28.64.197, 141.28.64.210, 141.28.34.108, 141.28.33.99
erreichbar sind und welche Dienste bereitgestellt werden.“
Um eine schnelle Übersicht über die gescannten Rechner zu bekommen haben wir
eine Servicegoup definiert und die einzelnen Hosts der Gruppe zugeordnet.
/etc/nagios2/conf.d/servicegroups_nagios2.cfg
define servicegroup {
servicegroup_name nmap-scanned
alias NMAP scanned servers
}

Da wir mit check_by_nmap ein neues Plugin hinzugefügt haben, müssen wir dieses
unter /etc/ nagios-plugins bekannt machen. Dies geschieht wie folgt:
/etc/nagios-plugins/config/nmap.cfg
# 'check_by_nmap' command definition
define command{
command_name check_by_nmap
command_line /usr/lib/nagios/plugins/check_by_nmap -n /usr/bin/nmap -i
$HOSTADDRESS$ -p $ARG1$
}

Nachfolgend werden die einzelnen Host- und Servicedefinitionen sowie die einzelnen
Ports und die dazugehörenden Dienste gelistet, welche am 29.03.2007 als geöffnet
angezeigt wurden (manueller nmap-Scan mit Parameter -O).
/etc/nagios2/conf.d/hosts/FOO-GW.rz-int.fh-furtwangen.de_nagios2.cfg
define host{
use generic-host
parents localhost
host_name foo-gw
alias FOO-GW.rz-int.fh-furtwangen.de
address 141.28.15.26

9
Installation und Konfiguration

define service{
use generic-service
host_name foo-gw
servicegroups nmap-scanned
service_description NMAPScanned
check_command check_by_nmap!22,80
}

Port Dienst
22 SSH
80 HTTP
Tabelle 1: FOO-GW.rz-int.fh-furtwangen.de
/etc/nagios2/conf.d/hosts/ftpserver.alpha.fh-furtwangen.de_nagios2.cfg
define host{
use generic-host
parents localhost
host_name ftpserver
alias ftpserver.alpha.fh-furtwangen.de
address 141.28.2.19
}

define service{
use generic-service
host_name ftpserver
servicegroups nmap-scanned
service_description NMAPScanned
check_command
check_by_nmap!10000,111,21,22,25,27000,32773,427,443,53,631,747,80,990
}

10
Installation und Konfiguration

Port Dienst
21 FTP
22 SSH
25 SMTP
53 DNS
80 HTTP
111 RPC
427 Server Location
443 HTTPS
631 IPP
747 Fujitsu Device
Control
990 FTPS
10000 Webmin
27000 FlexLM/unknown
32773 RPC/unknown
Tabelle 2: ftpserver.alpha.fh-furtwangen.de
/etc/nagios2/conf.d/hosts/eva.foo.fh-furtwangen.de_nagios2.cfg
define host{
use generic-host
parents localhost
host_name eva
alias eva.foo.fh-furtwangen.de
address 141.28.64.100
}

define service{
use generic-service
host_name eva
servicegroups nmap-scanned
service_description NMAPScanned
check_command check_by_nmap!1008,111,113,2049,22,443,625,80,902
}

11
Installation und Konfiguration

Port Dienst
22 SSH
80 HTTP
111 RPC
113 Auth
443 HTTPS
625 unknown
902 iss-realsecure-sensor
1008 UFSD
2049 NFS
Tabelle 3: eva.foo.fh-furtwangen.de
/etc/nagios2/conf.d/hosts/kenny.foo.fh-furtwangen.de_nagios2.cfg
define host{
use generic-host
parents localhost
host_name kenny
alias kenny.foo.fh-furtwangen.de
address 141.28.64.197
}

define service{
use generic-service
host_name kenny
servicegroups nmap-scanned
service_description NMAPScanned
check_command check_by_nmap!111,113,2049,22,548,631,694,718
}

Port Dienst
22 SSH
111 RPC
113 Auth
548 unknown
631 IPP
694 unknown
718 unknown
2049 NFS
Tabelle 4: kenny.foo.fh-furtwangen.de

12
Installation und Konfiguration

/etc/nagios2/conf.d/hosts/SusiDerkins.foo.fh-furtwangen.de_nagios2.cfg
define host{
use generic-host
parents localhost
host_name SusiDerkins
alias SusiDerkins.foo.fh-furtwangen.de
address 141.28.64.210
}

define service{
use generic-service
host_name SusiDerkins
servicegroups nmap-scanned
service_description NMAPScanned
check_command check_by_nmap!23,80
}

Port Dienst
23 Telnet
80 HTTP
Tabelle 5: SusiDerkins.foo.fh-furtwangen.de
/etc/nagios2/conf.d/hosts/fermat.ai-lab.fh-furtwangen.de_nagios2.cfg
define host{
use generic-host
parents localhost
host_name fermat
alias fermat.ai-lab.fh-furtwangen.de
address 141.28.34.108
}

define service{
use generic-service
host_name fermat
servicegroups nmap-scanned
service_description NMAPScanned
check_command check_by_nmap!22,389,443,53,80
}

13
Installation und Konfiguration

Port Dienst
22 SSH
53 DNS
80 HTTP
389 LDAP
443 HTTPS
Tabelle 6: fermat.ai-lab.fh-furtwangen.de
/etc/nagios2/conf.d/hosts/zeus.ai-lab.fh-furtwangen.de_nagios2.cfg
define host{
use generic-host
parents localhost
host_name zeus
alias zeus.ai-lab.fh-furtwangen.de
address 141.28.33.99
}

define service{
use generic-service
host_name zeus
servicegroups nmap-scanned
service_description NMAPScanned
check_command check_by_nmap!111,2049,22,23,25,32771,32774,32775,4045
}

Port Dienst
22 SSH
23 Telnet
25 SMTP
111 RPC
2049 NFS
4045 Lockd/unknown
32771 RPC/unknown
32774 RPC/unknown
32775 RPC/unknown
Tabelle 7: zeus.ai-lab.fh-furtwangen.de

CVS mit check_tcp überwachen


Aufgabenstellung: „Da es für Nagios kein Plugin gibt, welches den CVS-Server
141.28.64.51 überwacht, muss hierzu das Plugin „check_tcp“ verwendet werden

14
Installation und Konfiguration

(Datei: checkcommands.cfg).“
Wir definieren an dieser Stelle einen Service, welcher einer Hostgroup zugeordnet ist
und check_tcp auf Port 2401 ausführt.
/etc/nagios2/conf.d/services_nagios2.cfg
# check that CVS is running
define service {
hostgroup_name cvs-servers
service_description CVS
check_command check_tcp!2401
use generic-service
notification_interval 0
}

Um der Hostgroup Mitglieder zuzuordnen ist folgender Eintrag notwendig:


/etc/nagios2/conf.d/hostgroups_nagios2.cfg
# A list of your cvs servers
define hostgroup {
hostgroup_name cvs-servers
alias CVS servers
members son
}

Da wir den Host bislang noch nicht definiert haben ist ein neuer Hosteintrag
notwendig.
/etc/nagios2/conf.d/hosts/son.foo.fh-furtwangen.de_nagios2.cfg
define host{
use generic-host
parents localhost
host_name son
alias son.foo.fh-furtwangen.de
address 141.28.64.51
}

LDAP mit check_ldap überwachen


Aufgabenstellung: „Überprüfen des Dienstes LDAP auf den Nodes 141.28.79.1
und 141.28.65.131 (verwenden Sie hierzu das Plugin „check_tcp“).“
Da es für Nagios das Plugin check_ldap gibt haben wir uns dazu entschlossen dieses
zu kompilieren und zu verwenden. Dazu werden die developer LDAP-Libraries sowie

15
Installation und Konfiguration

SSL-Libraries (für LDAPS Support) benötigt. Die Installation von fping ist an dieser
Stelle optional, kann jedoch für spätere Erweiterungen sinnvoll sein.

# aptitude install libldap2-dev libldap2-dev libssl-dev fping


# wget http://belnet.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-
1.4.6.tar.gz
# tar xvfz nagios-plugins-1.4.6.tar.gz
# ./configure
# make

Da der Einsatz von check_ldap Probleme machte haben wir jedoch auf dessen Einsatz
verzichtet und wie in der Aufgabe beschrieben check_tcp verwendet.
Da wir einen noch nicht vorhandenen Servicecheck ausführen wollen, erstellen wir
diesen wie folgt in /etc/nagios2/conf.d/services_nagios2.cfg.
/etc/nagios2/conf.d/services_nagios2.cfg
# check that LDAP is running
define service {
hostgroup_name ldap-servers
service_description LDAP
check_command check_tcp!389
use generic-service
notification_interval 0
}

# check that LDAPS is running


define service {
hostgroup_name ldaps-servers
service_description LDAPS
check_command check_tcp!636
use generic-service
notification_interval 0
}

Den einzelnen Hosts ordnen wir mithilfe einer Hostgroup die Servicechecks zu. Somit
muss nicht für jeden Host ein eigener Servicecheck definiert werden.
/etc/nagios2/conf.d/hostgroups_nagios2.cfg
define hostgroup {
hostgroup_name ldap-servers
alias LDAP servers
members ldapIN,ldap-RZ
}

define hostgroup {
hostgroup_name ldaps-servers
alias LDAPS servers
members ldapIN,ldap-RZ
}

16
Installation und Konfiguration

Natürlich müssen die zu prüfenden Hosts existieren um überhaupt Checks darauf


anwenden zu können. Auch hier erstellen wir wieder für jeden Host eine eigene Datei.
Natürlich wäre es auch möglich die Hosts alle in einer Datei einzutragen. Da wir aber
wenige Hosteinträge verwenden und teilweise hostspezifische Einträge verwenden ist
die Lösung mit mehreren getrennten Dateien in einem Ordner aber nicht die
schlechteste – wenn auch nicht die einzig sinnvolle.
/etc/nagios2/conf.d/hosts/ldapin.informatik.fh-furtwangen.de_nagios2.cfg
define host{
use generic-host
parents localhost
host_name ldapIN
alias ldapin.informatik.fh-furtwangen.de
address 141.28.65.131
}

/etc/nagios2/conf.d/hosts/ldap-RZ.informatik.hs-furtwangen.de_nagios2.cfg
define host{
use generic-host
parents localhost
host_name ldap-RZ
alias ldap-RZ.informatik.hs-furtwangen.de
address 141.28.79.1
}

Nach der erneuten Eingabe von /etc/init.d/nagios2 reload sehen wir in der
Weboberfläche jetzt die beiden Hostgroups und können uns die Ausgabe der einzelnen
Checks ansehen.

Mailserver überwachen
Aufgabenstellung: „Die Dienste (Ping, POP, SMTP) des Mailservers 141.28.64.55
sollten ebenfalls überwacht werden.“
Da wir den Host 141.28.64.55 (averell.foo.fh-furtwangen.de) bislang noch nicht
verwendet haben, definieren wir zuerst einen Hosteintrag für diesen.

17
Installation und Konfiguration

/etc/nagios2/conf.d/hosts/averell.foo.fh-furtwangen.de_nagios2.cfg
define host{
use generic-host
parents localhost
host_name averell
alias averell.foo.fh-furtwangen.de
address 141.28.64.55
}

Auch an dieser Stelle ordnen wir den Hosts mithilfe von Hostgroups die Servicechecks
zu. Die Hostgroup ping-servers haben wir um den Eintrag averell erweitert, da den
Hosts whisky und 141.28.65.142 bereits im ersten Aufgabenteil dieser Servicecheck
zugeordnet wurde.
/etc/nagios2/conf.d/hostgroups_nagios2.cfg
# A list of your pop servers
define hostgroup {
hostgroup_name pop-servers
alias POP servers
members averell
}

# A list of your smtp servers


define hostgroup {
hostgroup_name smtp-servers
alias SMTP servers
members averell
}

define hostgroup {
hostgroup_name ping-servers
alias Pingable servers
members whisky,141.28.65.142,averell
}

Nach der Eingabe von /etc/init.d/nagios2 reload bekommen wir auch diese
Servicechecks in unserer Werboberfläche angezeigt:

18
Installation und Konfiguration

SSH mit check_ssh überwachen


Aufgabenstellung: „Für den SSH-Dienst des Servers 141.28.64.253 ist das Plugin
„check_ssh“ zu verwenden.“
Wie gehabt erstellen wir einen Hosteintrag für den zu prüfenden Host 141.28.64.253 (
hack-fw.foo.fh-furtwangen.de).
/etc/nagios2/conf.d/hosts/hack-fw.foo.fh-furtwangen.de_nagios2.cfg
define host{
use generic-host
parents localhost
host_name hack-fw
alias hack-fw.foo.fh-furtwangen.de
address 141.28.64.253
}

In services_nagios2.cfg wurde der Servicecheck für SSH definiert und der Hostgroup
ssh-servers zugeordnet.
/etc/nagios2/conf.d/services_nagios2.cfg
# check that ssh services are running
define service {
hostgroup_name ssh-servers
service_description SSH
check_command check_ssh
use generic-service
notification_interval 0
}

Der Hostgroup ssh-servers wiederum ordnen wir nun unseren Host zu.
/etc/nagios2/conf.d/hostgroups_nagios2.cfg
# A list of your ssh-accessible servers
define hostgroup {
hostgroup_name ssh-servers
alias SSH servers

19
Installation und Konfiguration

members hack-fw
}

Nun kann man in der Weboberfläche auch den Status für diesen Servicecheck
abfragen. Hier wird sehr deutlich, dass SSH-Verbindungen von hack-fw dauerhaft (seit
über 38 Tagen) abgewiesen werden.

Pixelschieben
Aufgabenstellung: „Positionieren Sie die Nodes auf der 2D-Grafik.“
Um die Hosts auf der Grafik zu positionieren sind so genannte hostextinfo-Einträge
notwendig. Über diese Einträge kann man den Hosts in der Grafik bestimmte
Eigenschaften wie Beschreibung, Position oder Symbol mitgeben. Hier ein nicht
vollständiges Beispiel:
hostextinfo-Eintrag
#Hosteintrag
define host{
use generic-host ; Name of host template to use
host_name localhost
alias localhost
address 127.0.0.1
}

#Hostextinfo-Eintrag
define hostextinfo{
hostgroup_name debian-servers
notes Debian GNU/Linux servers
notes_url http://localhost/
icon_image base/debian.png
icon_image_alt Debian GNU/Linux
vrml_image debian.png
statusmap_image base/debian.gd2
2d_coords 100,100
}

In unserer Konfiguration haben wir die einzelnen Einträge in die Dateien geschrieben,
in denen auch die Hostdefinition stehen, also beispielsweise
/etc/nagios2/conf.d/hosts/kenny.foo.fh-furtwangen.de_nagios2.cfg. Um nicht noch
einmal alle Dateien einzelnen auflisten zu müssen, führen wir die
Positionierungsinformationen als ein Listing auf.
Positionierungsinformationen der einzelnen Hosts

20
Installation und Konfiguration

#141.28.65.141
define hostextinfo{
host_name whisky
statusmap_image base/linux40.gd2
icon_image base/linux40.png
2d_coords 500,300
}

#141.28.65.142
define hostextinfo{
host_name 141.28.65.142
2d_coords 100,200
}

#141.28.65.151
define hostextinfo{
hostgroup_name debian-servers
notes Debian GNU/Linux servers
icon_image base/debian.png
icon_image_alt Debian GNU/Linux
vrml_image debian.png
statusmap_image base/debian.gd2
2d_coords 300,250
}

#141.28.15.26
define hostextinfo{
host_name foo-gw
2d_coords 300,100
}

#141.28.2.19
define hostextinfo{
host_name ftpserver
statusmap_image base/linux40.gd2
icon_image base/linux40.png
2d_coords 500,200
}

#141.28.64.100
define hostextinfo{
host_name eva
statusmap_image base/debian.gd2
icon_image base/debian.png
2d_coords 100,400
}

#141.28.64.197
define hostextinfo{
host_name kenny
statusmap_image base/debian.gd2
icon_image base/debian.png
2d_coords 200,400
}

21
Installation und Konfiguration

#141.28.64.210
define hostextinfo{
host_name SusiDerkins
2d_coords 100,100
}

#141.28.34.108
define hostextinfo{
host_name fermat
statusmap_image base/debian.gd2
icon_image base/debian.png
2d_coords 200,100
}

#141.28.33.99
define hostextinfo{
host_name zeus
statusmap_image base/sun40.gd2
icon_image base/sun40.png
2d_coords 300,400
}

#141.28.64.51
define hostextinfo{
host_name son
statusmap_image base/sun40.gd2
icon_image base/sun40.png
2d_coords 500,400
}

#141.28.79.1
define hostextinfo{
host_name ldap-RZ
2d_coords 400,100
}

#141.28.65.131
define hostextinfo{
host_name ldapIN
2d_coords 100,300
}

#141.28.64.55
define hostextinfo{
host_name averell
statusmap_image base/sun40.gd2
icon_image base/sun40.png
2d_coords 400,400
}

#141.28.64.253
define hostextinfo{
host_name hack-fw
2d_coords 500,100
}

22
Installation und Konfiguration

Abbildung 1: Positionierte Hosts in der 2D Status Map

4 Testlauf
Aufgabenstellung: „Die Tests sollen min. 2 Wochen laufen. Danach sollen die
Diagnosemodule überprüft und bewertet werden.“
Seit dem produktiven Einsatz unseres Nagios Servers Anfang April 2007 wurden von
unserem Nagios Prozess über 700 eMails versendet. Die meisten davon wegen neu
geöffneter oder geschlossener Ports die unser Nagios Plugin check_by_nmap gefunden
hat. Da einige Rechner – allen voran der FTP-Server des Rechenzentrums – täglich
mehrere male neue Ports öffnen und in relativ kurzer Zeit wieder schließen ist es bei
diesen Rechnern nicht sinnvoll dauerhaft zu prüfen welche Ports offen sind. Nur wenn
man sicherstellen will, dass nur bestimmte Ports geöffnet sein dürfen und auch
müssen ist der Einsatz eines dauerhaften Portscans durch check_by_nmap sinnvoll.
Andere eMails die versendet wurden weisen darauf hin, dass Hosts gerade nicht
erreichbar oder eben wieder erreichbar sind. Diese durch Hostchecks sind ein sehr
wichtiges Indiz für den Administrator zu handeln – denn bei einem gewollten Ausfall,

23
Testlauf

beispielsweise wegen Wartungsarbeiten, hätte er in Nagios eine Downtime


angekommen können und sollte diese Funktion auch benutzen. Denn nichts ist
ärgerlicher als eine ungewollte Benachrichtigung, in anderen Umfeldern
beispielsweise per SMS an den Kollegen im Urlaub.
Während der Laufzeit unseres Tests konnten wir nur einen kurzfristigen Ausfall bzw.
die Nichterreichbarkeit des SMTP-Servers feststellen. Einen POP Ausfall konnten wir
nicht verzeichnen. Auch andere relevante Dienste wie HTTP, MySQL, LDAP und CVS
waren nicht von einem Ausfall betroffen beziehungsweise konnten nicht getestet
werden weil der Nagios Server selbst nicht erreichbar war. Der SSH Dienst auf hack-fw
war durchgehend von unserem Server aus nicht erreichbar und hat somit lediglich ein
einziges „SSH is CRITICAL“ verursacht.
Daher bleibt für uns zu sagen, dass der Einsatz der aller Plugins sinnvoll ist, jedoch
sollte check_by_nmap aus oben genannten Gründen lediglich auf sehr wenige Server
angesetzt werden.
Zu guter Letzt ein Screenshot des Punktes „Service Problems“ der Nagios
Weboberfläche. Diese Seite sollte sich jeder Administrator ab und an etwas genauer
ansehen um einen Überblick zu bekommen welche seiner überwachten Dienste nicht
erreichbar sind. Gleiches gilt natürlich auch für „Host Problems“, diese sind aber bei
einer guten Konfiguration meist durch Servicechecks abgedeckt und somit auch unter
„Service Problems“ gelistet.

24
Testlauf

Abbildung 2: „Service Problems“ in der Nagios Weboberfläche

25