Translations of this page:

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 :!:

Erik 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

  • HP ProLiant DL360 G3
  • Intel Xeon Prozessor 2,8GHz
  • 1024MB Arbeitsspeicher
  • 2×36,4GB SCSI-Festplatten Raid1
  • Ethernet-Karte 10/100/1000 Mbit

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

  • Standard-Installation mit Yast2
  • 2 Partitionen erstellt, / und swap
  • Minimale Software-Installation ausgewählt, weitere Applikationen wie oben beschrieben hinzugefügt.
  • Rechnername: <Rechnername>
  • IP-Adresse: <IP_Nagios>
  • Subnet-Mask: <Subnet_Mask>
  • Domain: <domain>
  • Nameserver1: <nameserver_1>
  • Nameserver2: <nameserver_2>
  • Default Gateway: <default_gw>
  • Integrierte SuSE Firewall deaktiviert, um Komplikationen zu vermeiden. Der Server steht im Intranet, das bereits durch eine Firewall-Lösung geschützt ist.
  • root Passwort festgelegt.
  • Benutzer angelegt: nagios
  • Die Pakete nagios 2.0b4 und nagios plugins 1.4.1 herunterladen und in einem separaten download-Verzeichnis abgelegt (/usr/local/src/).

Nagios installieren

  • Nagios benötigt einige zusätzliche Pakete.
    • gd
    • gd-devel → nicht da?
    • zlib
    • libjpeg
    • jpeg
    • libpng-devel
    • libjpeg-devel
  • Entpacken des Nagios-Pakets mit
 tar xzf nagios-2.0b4.tar.gz
  • Neue Gruppe „nagios“ anlegen in YAST und den bereits bei der Installation des Betriebssystems angelegten User „nagios“ eintragen.
  • Neue Gruppe „nagcmd“ anlegen in YAST und User „nagios“ und „wwwrun“ eintragen.
  • Nagios-Verzeichnis anlegen:
 mkdir /usr/local/nagios
  • User und Gruppe „nagios“ als Besitzer des Verzeichnisses eintragen:
 chown nagios.nagios /usr/local/nagios
  • Konfigurations-Script ausführen mit
 ./configure --with-command-group=nagcmd
  • Kompilieren von Nagios und den CGIs:
 make all
  • Binaries und html files Installieren:
 make install
  • Erstellen des Runlevel Scripts „nagios“ für den Systemstart in /etc/init.d:
 make install-init
  • make install-commandmode
  • Beispieldateien installieren:
 make install-config
  • Das Programm gibt nach jedem Installationsschritt an, wie weiter zu verfahren ist. Diese Ausgaben unbedingt beachten!
  • Für nähere Informationen zur Installation, die Datei /usr/local/src/nagios-2.0b4/INSTALLING sowie installing beachten.
  • Im Verzeichnis /usr/local/nagios sind 5 Unterverzeichnisse:
    • bin/ –> Das Programm
    • etc/ –> Konfigurationsdateien
    • sbin/ –> CGIs
    • share/ –> HTML files
    • var/ –> Log files, Status files
  • Im Runlevel-Editor von YAST „nagios“ für Runlevel 2, 3 und 5 eintragen.
  • Eine Beispielkonfiguration ist eingerichtet. Jedoch ist Nagios damit noch nicht startbereit.

Plugins installieren

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

  • Entpacken der Plugins mit
tar xzf nagios-plugins-1.4.1.tar.gz
  • Konfigurations-Script ausführen mit
./configure
  • Kompilieren mit
make
  • Installieren mit
make install
  • Plugins befinden sich im neuen Verzeichnis /usr/local/nagios/libexec/

Web-Interface aufsetzen

  • Folgende zwei Einträge in der Datei /etc/apache2/httpd.conf hinzufügen:

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

  • Erstellen einer Datei .htaccess im Verzeichnis /usr/local/nagios/sbin sowie in /usr/local/nagios/share mit folgendem Inhalt:
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user
  • Damit ist die Authentifizierung auf dem Webserver aktiviert und es müssen Benutzer angelegt werden, die auf Nagios zugreifen dürfen.
  • Mit folgendem Befehl wird eine neue Datei htpasswd.users mit den berechtigten Nutzern und deren Passwörtern im Verzeichnis /usr/local/nagios/etc/ angelegt.
htpasswd2 -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
  • Bei erneutem Aufruf (Hinzufügen weiterer User) wird Option „-c“ nicht mehr benötigt, damit wurde Datei angelegt.
  • Wichtig: Überprüfen, ob use_authentication=1 in Datei cgi.cfg gesetzt.
  • Ab sofort können nur noch so angelegte Benutzer auf die Nagios Weboberfläche zugreifen (Benutzername und Passwort werden abgefragt).

Login ohne Passwort

  • Um einer ausgewählten Gruppe von Rechnern Zugriff zu gewähren, ohne jedes Mal nach einem Passwort gefragt zu werden, müssen die Einträge in httpd.conf und .htaccess angepasst werden.
  • Steht eine IP-Adresse wie unten beschrieben in der .htaccess, hat dieser Rechner Zugriff auf die Nagios-Oberfläche ohne Passwort-Abfrage. Versucht ein User/Rechner mit einer nicht eingetragenen IP-Adresse die Web-Oberfläche aufzurufen, wird nach user/password Kombination gefragt. So konfiguriert eignet sich die Oberfläche sehr gut um diese z.B. automatisch bei Start eines Monitoring-Rechners auf einem großen Flachbildschirm anzuzeigen.

.htaccess

  • Die angepasste Datei sollte folgendermaßen aussehen und in beiden Verzeichnissen(/usr/local/nagios/sbin/, /usr/local/nagios/share/) identisch sein:
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

  • So sollte die Apache2-Konfigurationsdatei angepasst werden:
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

  • Definitionen der Makros
  • siehe macros

cgi.cfg

contacts.cfg

  • Definitionen der verfügbaren Kontakte in Nagios
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$
}
  • weitere Beispiele für action_url:
    • action_url http:$HOSTADDRESS$ * action_url file:fileserver/J/rdpfiles/$HOSTADDRESS$.RDP
  • Die Bilder/icons sollten sich im Verzeichnis /usr/local/nagios/share/images/logos/ befinden.

Anmerkungen

check_cisco Plugin

  • für korrekte Funktionsweise das das Paket net-snmp (hier: Version 5.2.1) nachinstallieren.

check_compaq_insight.pl Plugin

  • für korrekte Funktionsweise das Paket perl-Net-SNMP (hier: Version 5.0.1) nachinstallieren.

check_ping Plugin

  • wegen etlichen Problemen mit dem Plugin „check_ping“ wird dieses ersetzt durch check_icmp.
  • Dazu Einträge in checkcommands.cfg ändern:
# '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$

}
  • Rechte richtig setzen nicht vergessen:
chown nagios.nagios check_icmp
chmod 000 check_icmp
chown root check_icmp
chmod 4711 check_icmp
  • Wichtig:
    chmod +x <plugin>

    sollte überall gesetzt sein, sonst keine Ausführung möglich!

trends.cgi, histogram.cgi und statusmap.cgi

  • für die korrekte Anzeige von trends, histogramm und statusmap auf der Web-Oberfläche müssen libraries und devel-Pakete von gd, png, zlib und jpeg nachinstalliert werden.
  • Bei der hier verwendeten CD-Version von Suse sind keine Devel-Pakete von gd beigelegt, also herunterladen von http://www.boutell.com/gd/ (hier: Version 2.0.33)
    • Auf der DVD-Version verfügbar!
  • Entpacken und Konfigurieren mit
./configure –prefix=/usr
  • Kompilieren mit
make all

und installieren mit

make install
  • Dann im Nagios-download-Verzeichnis ein
make clean

und erneutes Konfigurieren mit

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

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

  • Damit sollten jetzt alle Funktionen der Nagios-Weboberfläche aktiv sein.

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

  • Konfigurationsdateien auf Richtigkeit überprüfen:
 /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  • Nagios starten:
 Usage: nagios {start|stop|restart|reload|force-reload|status}

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

Web-Oberfläche

  • Anmelden mit verschiedenen Usern:
http://<user>@<IP_Nagios>/nagios/
nagios/howtos/nagios_suse.txt · Zuletzt geändert: 2007/12/23 23:01 von mess
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0