Inhaltsverzeichnis

Installation Nagios 2.04b auf Suse 9.3

Hier das Howto über die Installation eines Nagios-Server auf Suse 9.3Pro.

:!: Fragen, Anmerkungen sowie Verbesserungen sind ausdrücklich erwünscht :!:

13.09.2005 10:02

Allgemeines

Was ist Nagios

Nagios ist ein Network Monitoring Programm für die Überwachung von Hosts, Services und Netzwerken.

Dieses Netz- und Systemüberwachungswerkzeug ist im Gegensatz zu den kostspieligen kommerziellen Lösungen, wie z.B. Tivoli von IBM oder OpenView von HP, völlig quelloffen (OpenSource) und steht unter GPL-Lizenz.

Es ist kostenlos und kann sehr individuell auf die jeweiligen Anforderungen „maßgeschneidert“ werden. Außerdem besteht inzwischen eine stetig wachsende Gemeinde von Nagios-usern weltweit. Viele große Firmen sind inzwischen auf dieses System gewechselt, siehe http://www.nagios.org/userprofiles/quickstats.php. Sollte man auf programmspezifische Probleme stoßen, so wird einem in Foren und Mailing-Listen im Internet sehr schnell weiter geholfen.

Das Programm selbst besteht aus einem in C geschriebenen Daemon, der über eine Reihe von Konfigurationsdateien gesteuert wird, sowie einigen weiteren Komponenten. Statusinformationen gibt Nagios über ein Logfile, vor allem aber über ein übersichtliches Web-Frontend aus.

Die beschriebene Installation ist nicht allgemein gültig. Je nach verwendeten Distributionen und Programmversionen kann die Einrichtung eines solchen Nagios-Servers von dieser Anleitung abweichen. Deshalb bitte immer die den verschiedenen Paketen beigelegten Dokumente lesen und gegebenenfalls berücksichtigen.

Verwendete Hardware

Verwendete Software

⇒ Die verwendete Software ist Bestandteil der vorliegenden Suse Linux Distribution. Wer auf Aktualität besteht, kann sich die Sourcen selbstverständlich auch auf den oben angegebenen Seiten im Internet herunterladen und „per Hand“ Konfigurieren-Kompilieren-Installieren.

⇒ Die beiden Pakete nagios 2.0b4 und nagios plugins 1.4.1 wurden nachträglich installiert.

⇒ Um nrpe nutzen zu können, werden außerdem die Pakete nrpe-2.0 und nrpe_nt.0.8 benötigt (s.u.).

Installation

Betriebssystem installieren

Nagios installieren

 tar xzf nagios-2.0b4.tar.gz
 mkdir /usr/local/nagios
 chown nagios.nagios /usr/local/nagios
 ./configure --with-command-group=nagcmd
 make all
 make install
 make install-init
 make install-config

Plugins installieren

⇒ Plugins sind Scripte oder ausführbare Dateien, die die Dienste- und HostsÜberprüfung durchführen.

tar xzf nagios-plugins-1.4.1.tar.gz
./configure
make
make install

Web-Interface aufsetzen


ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"

<Directory "/usr/local/nagios/sbin">
Options ExecCGI
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>

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

<Directory "/usr/local/nagios/share">
Options None
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>

Nach einem Neustart des Webservers mit

 /etc/init.d/apache2 restart

ist die Nagios Weboberfläche unter der Adresse http:<IP_Nagios>/nagios zu erreichen. ==== URL anpassen ==== * Hier zwei Möglichkeiten die Adresse der Weboberfläche ein bisschen benutzerfreundlicher zu gestalten. * In den Document root des Apache2 (/srv/www/htdocs/) eine Datei index.html anlegen mit folgendem Inhalt: <code><META http-equiv=„refresh“ content=„0;URL=http:<IP_Nagios>/nagios/“></code>

Authentifizierung einrichten

AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user
htpasswd2 -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Login ohne Passwort

.htaccess

AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user
Order deny,allow
Deny from all
Allow from 172.18.5.200
Allow from 172.18.5.137
satisfy any

httpd.conf

ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
Options ExecCGI
AllowOverride AuthConfig limit
Order allow,deny
Allow from all
</Directory>

Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
Options None
AllowOverride AuthConfig limit
Order allow,deny
Allow from all
</Directory>

Übernahme der Konfiguration mit

 /etc/init.d/apache2 restart 

nicht vergessen!

Konfiguration

Über die verschiedenen Konfigurationsdateien bindet man die von Nagios zu verwaltenden Objekte wie Hosts, Dienste und Kontaktpersonen ein.

Nagios kennt dabei für jeden Dienst einen host, der diesen Dienst anbietet. Mehrere solcher Hosts lassen sich zu einer hostgroup zusammenfassen. Über eine servicegroup kann man dagegen die einzelnen Dienste mehrerer Hosts zusammenfassen.

Wird eine Benachrichtigung (notification) ausgelöst, geht diese entweder an einen einzelnen contact, oder die Mitglieder einer contactgroup. Nagios enthält bereits einige Vorschläge für solche Kontaktgruppen, beiuspielsweise Linux- oder Windows-Administratoren.

Über das Modul NRPE (Nagios Remote Plugin Executor) kann Nagios Plugins direkt auf einem externen Host starten Alternativ kann ein NSCA (Nagios Service Check Acceptor) als Agent auch Ereignisse von selbst an den Nagios-Daemon melden.

Über all diese Mechanismen lassen sich beispielsweise ausgefeilte Eskalationsstrategien nachbilden, die so manches kommerzielle Netzwerkmanagement-System (NMS) ziemlich blaß aussehen lassen.

Die Konfigurationsdateien

nagios.cfg

resource.cfg

cgi.cfg

contacts.cfg

define contact {
contact_name nagiosadmin
alias nagiosadmin
host_notification_period 24x7
host_notification_options d,u,r
host_notification_commands notify-by-email
service_notification_period 24x7
service_notification_options w,u,c,r
service_notification_commands notify-by-email
email nagios@localhost
}

contactgroups.cfg

define contactgroup {
contactgroup_name Nagios_Admin
alias Nagios_Admin
members nagiosadmin
}

hosts.cfg

define host{
host_name Switch01
alias Switch cisco
address 192.16.4.50
check_command check-host-alive
max_check_attempts 5
process_perf_data 0
retain_nonstatus_information 0
notification_interval 30
notification_period 24x7
notification_options d,u,r
contact_groups Nagios_Admin
}

hostgroups.cfg

define hostgroup{
hostgroup_name Switch
alias Switch
members Switch01, Switch02, Switch03
}

services.cfg

define service{
host_name Switch01, Switch03
service_description Cisco Port 49 - GigabitEthernet0/1
check_command check_cisco!public!49
max_check_attempts 3
normal_check_interval 1
retry_check_interval 1
check_period 24x7
notification_interval 20
notification_period 24x7
notification_options w,c,u,r
contact_groups Nagios_Admin
}

checkcommands.cfg

# 'check_cisco' command definition
define command{
command_name check_cisco
command_line $USER1$/check_cisco -H $HOSTADDRESS$ -C
$ARG1$ -P $ARG2$
}

misccommands.cfg

# 'notify-by-email' command definition
define command{
command_name notify-by-email
command_line /usr/bin/printf "%b" "***** Nagios
*****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService:
$SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState:
$SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional
Info:\n\n$SERVICEOUTPUT$" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$
alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **"
$CONTACTEMAIL$
}

timeperiods.cfg

define timeperiod {
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}

hostextinfo.cfg

define hostextinfo{
host_name Switchrouter
icon_image network.gif
vrml_image network.gif
statusmap_image network.gif
2d_coords 20,20
3d_coords 100.0,50.0,75.0
action_url telnet://$HOSTADDRESS$
}

Anmerkungen

check_cisco Plugin

check_compaq_insight.pl Plugin

check_ping Plugin

# 'check-host-alive' command definition
define command{
command_name check-host-alive
command_line $USER1$/check_icmp -H $HOSTADDRESS$
}

und

# 'check_ping' command definition
define command{
command_name check_ping
command_line $USER1$/check_icmp -H $HOSTADDRESS$

}
chown nagios.nagios check_icmp
chmod 000 check_icmp
chown root check_icmp
chmod 4711 check_icmp

trends.cgi, histogram.cgi und statusmap.cgi

./configure –prefix=/usr
make all

und installieren mit

make install
make clean

und erneutes Konfigurieren mit

./configure --with-gd-lib=/usr/lib --with-gd-inc=/usr/include
make all

neu Kompilieren und die jetzt verfügbaren cgi´s ins Nagios-Verzeichnis kopieren (/usr/local/nagios/sbin/).

Nützliche Kommandos

Apache2

Usage: /etc/init.d/apache2 <command>
start - start httpd
stop - stop httpd (sendign SIGTERM to parent)
status - check whether httpd is running
restart - stop httpd if running; start httpd
configtest - do a configuration syntax test
server-status - dump a short status screen
help - this screen

Nagios

 /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
 Usage: nagios {start|stop|restart|reload|force-reload|status}

⇒ Für Neustart am besten: /etc/init.d/nagios reload

Web-Oberfläche

http://<user>@<IP_Nagios>/nagios/