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 ;)
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.
⇒ 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.).
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 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
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>
AuthName "Nagios Access" AuthType Basic AuthUserFile /usr/local/nagios/etc/htpasswd.users require valid-user
htpasswd2 -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
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
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!
Ü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.
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
}
define contactgroup {
contactgroup_name Nagios_Admin
alias Nagios_Admin
members nagiosadmin
}
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
}
define hostgroup{
hostgroup_name Switch
alias Switch
members Switch01, Switch02, Switch03
}
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
}
# 'check_cisco' command definition
define command{
command_name check_cisco
command_line $USER1$/check_cisco -H $HOSTADDRESS$ -C
$ARG1$ -P $ARG2$
}
# '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$
}
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
}
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$
}
# '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
chmod +x <plugin>
sollte überall gesetzt sein, sonst keine Ausführung möglich!
./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/).
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
/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
http://<user>@<IP_Nagios>/nagios/