Nagios liegt zurzeit (November 2007) für den produktiven Einsatz in der Version 2.10 vor.
Als Betriebssystem für die Installation dient Suse Linux 10.2.
Bei der Installation von Suse Linux 10.2 während der Installation unter „Desktop“ KDE wählen. In dieser Konfiguration fehlen für Nagios nur noch wenige zusätzliche Pakete.
Am einfachsten rüstet man sie in der Software-Auswahl mit der Selektion „C/C++ Compiler und Werkzeuge“ nach und nimmt zusätzlich die Pakete Apache2, imap, gd, libjpeg-devel und openssl-devel, mysql*, perl-net-snmp, php5* mit. Nach dem Ja zu den Abhängigkeiten kann es wie gewohnt mit der Installation weitergehen.
Nachdem man das frisch installierte System gebootet hat, muss das Paket gd-devel installiert werden. Da es leider nicht auf den als Download erhältlichen Medien ist, muss das Paket von Suse heruntergeladen werden. Ein einfaches rpm -ivh gd-devel-2.0.32-23.i586.rpm erledigt dann die Installation.
Zunächst werden die benötigten Benutzer und eine Gruppe angelegt, sowie die Gruppenmitgliedschaften geklärt.
useradd nagios groupadd nagios mkdir /usr/local/nagios chown nagios.nagios /usr/local/nagios groupmod -A nagios www groupmod -A nagios nagios
Dann wird das tar-Archiv mit dem Nagios-Sourcecode entpackt und die Sourcen konfiguriert und kompiliert.
tar xfvz nagios*.tar.gz cd nagios* ./configure --with-command-group=www –enable-event-broker make all
Eine Reihe von make install-Kommandos verteilen dann Nagios, ein Startskript und einen Satz Dateien auf der Festplatte, darunter auch eine Beispielkonfiguration in /usr/local/nagios/etc/:
make install make install-init make install-commandmode make install-config
Über Runleveleditor den automatischen Start von Apache2, Mysql und Nagios veranlassen. (oder mit
ln –s /etc/init.d/nagios /etc/init.d/rc5.d/S99nagios
ln –s /etc/init.d/nagios /etc/init.d/rc5.d/K99nagios ….)
Damit die Nachrichten auch verschickt werden muß im Mail Transfer Agent die IP des SMTP-Servers eingetragen werden.
Firewall deaktiviert.
Der Webserver muss in der Datei /etc/apache2/conf.d/nagios.conf konfiguriert werden. Das sieht mit konfigurierter Zugangsberechtigung so aus:
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin/ <Directory /usr/local/nagios/sbin/> Options ExecCGI order deny,allow allow from all AuthName "Nagios Access" AuthType Basic AuthUserFile /usr/local/nagios/etc/htpasswd.users Require valid-user </Directory>
Alias /nagios /usr/local/nagios/share/ <Directory /usr/local/nagios/share/> Options None order deny,allow allow from all AuthName "Nagios Access" AuthType Basic AuthUserFile/usr/local/nagios/etc/htpasswd.users Require valid-user </Directory>
Die letzten vier Zeilen in den beiden oben gezeigten Directory-Blöcken weisen den Web-Server an, nur Benutzern Zugriff zu gewähren, die sich mit Benutzername und Passwort anmelden.
Die Passwörter werden in diesem Fall in der Datei /usr/local/nagios/etc/htpasswd.users nachgeschlagen.
Dazu müssen die Benutzer angelegt werden, der erste mit
htpasswd2 -c /usr/local/nagios/etc/htpasswd.users nagios password
alle weiteren ohne das -c.
Der Name muss dem contact_name aus der Host- oder Service-Definition entsprechen, denn anhand dieser Kombination bestimmt Nagios, wer was zu sehen bekommt. Zusätzlich erhält jeder Benutzer Zugriff auf die Funktionen des Webinterface, für die er durch die mit authorized_for_ beginnenden Parameter in cgi.cfg autorisiert ist.
Eine entsprechende Konfiguration in der cgi.cfg könnte beispielsweise so aussehen:
use_authentication=1 authorized_for_system_information=nagios authorized_for_configuration_information=nagios authorized_for_system_commands=nagios authorized_for_all_services=nagios authorized_for_all_hosts=nagios authorized_for_all_service_commands=nagios authorized_for_all_host_commands=nagios
Mit dem Befehl
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
prüft man nun die Konfiguration. Syntaktische oder inhaltliche Fehler werden dabei gnadenlos angekreidet. Wenn dann ein
Things look okay – No serious problems were detected during the pre-flight check
das OK gibt, startet man mit
/etc/init.d/nagios start
den Nagios-Server.
Das Startskript testet vorher die Konfiguration.
Um sich vom erfolgreichen Start zu überzeugen, kann man einen Blick in die Logdatei
/usr/local/nagios/var/nagios.log
werfen.
Nagios selbst bringt noch keine Plug-ins mit. Das Kompilieren und die Installation der offiziellen Nagios Plug-ins ist aber nach dem Entpacken des tar-Archivs mit dem klassischen Dreisprung (./configure; make; make install; make install-root) in dem entstandenen Verzeichnis erledigt.
tar xfvz nagios-plugins-1.4.*.tar.gz cd nagios-plugins-1.4.* ./configure make make install make install-root chown –R nagios:nagios /usr/local/nagios/libexec
Die PlugIns check_icmp und check_dhcp benötigen folgende Rechte:
chown root:nagios /usr/local/nagios/libexec/check_icmp chmod 4777 /usr/local/nagios/libexec/check_icmp chown root:nagios /usr/local/nagios/libexec/check_dhcp chmod 4777 /usr/local/nagios/libexec/check_dhcp
Falls mysql noch nicht aktiv ist:
/etc/init.d/mysql start
Tip: Unter SLES10 muss das Paket mysql-devel installiert sein, sonst werden die MySQL libaries nicht gefunden.
Die Installation erfolgt wie gewohnt:
tar xfvz ndoutils-1.4*.tar.gz.tar.gz cd ndooutils-1.4* ./configure -–enable-mysql –with-mysql-lib=/var/lib/mysql make
Anlegen der Konfigurieren der Datenbank:
mysqladmin –p create nagios mysql –u root –p nagios < db/mysql.sql cp src/ndo2db-2x /usr/local/nagios/bin/ndo2db cp src/ndomod-2x.o /usr/local/nagios/bin/ndomod.o cp config/ndo*.cfg /usr/local/nagios/etc
Die Inhalte der config/nagios.cfg und config/misccommands.cfg in die Original Konfigurationsdateien /usr/local/nagios/etc anpassen und einfügen
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg event_broker_options=-1
Anpassen der Rechte:
chown –R nagios:nagios /usr/local/nagios/bin chown –R nagios:nagios /usr/local/nagios/etc
Der Befehl zum Starten:
/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg > /dev/null 2>&1;
Fehler werden in der Datei /usr/local/nagios/var/nagios.log mitprotokolliert.
Komfortabler ist es ein Startskript unter /etc/init.d/ndo2db abzulegen und den automatischen Start zu veranlassen:
status_ndo ()
{ if test -x $NdoCGI/daemonchk.cgi; then
if $NdoCGI/daemonchk.cgi -l $NdoRunFile; then
return 0
else
return 1
fi
else
if ps -p $NdoPID > /dev/null 2>&1; then
return 0
else
return 1
fi
fi
return 1
}
printstatus_ndo()
{
if status_ndo $1 $2; then
echo "ndo (pid $NdoPID) is running..."
else
echo "ndo is not running"
fi
}
killproc_ndo ()
{
kill $2 $NdoPID
}
pid_ndo ()
{
if test ! -f $NdoRunFile; then
echo "No lock file found in $NdoRunFile"
exit 1
fi
NdoPID=`head -n 1 $NdoRunFile`
}
# Source function library
# Solaris doesn't have an rc.d directory, so do a test first
if [ -f /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
elif [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
fi
prefix=/usr/local/nagios
exec_prefix=${prefix}
NdoBin=${exec_prefix}/bin/ndo2db
NdoCfgFile=${prefix}/etc/ndo2db.cfg
NdoStatusFile=${prefix}/var/status.dat
NdoRetentionFile=${prefix}/var/retention.dat
NdoCommandFile=${prefix}/var/rw/ndo.cmd
NdoVarDir=${prefix}/var
NdoRunFile=${prefix}/var/ndo.sock
NdoLockDir=/var/lock/subsys
NdoLockFile=nagios
NdoCGIDir=${exec_prefix}/sbin
NdoUser=nagios
NdoGroup=nagios
# Check that ndo exists.
if [ ! -f $NdoBin ]; then
echo "Executable file $NdoBin not found. Exiting."
exit 1
fi
# Check that ndo.cfg exists.
if [ ! -f $NdoCfgFile ]; then
echo "Configuration file $NdoCfgFile not found. Exiting."
exit 1
fi
# See how we were called.
case "$1" in
start)
echo -n "Starting ndo:"
$NdoBin -c $NdoCfgFile > /dev/null 2>&1;
if [ $? -eq 0 ]; then
exit 0
else
echo "CONFIG ERsROR! Start aborted. Check your Ndo configuration."
exit 1
fi
;;
stop)
echo -n "Stopping ndo: "
pid_ndo
killproc_ndo ndo
# now we have to wait for ndo to exit and remove its
# own NdoRunFile, otherwise a following "start" could
# happen, and then the exiting ndo will remove the
# new NdoRunFile, allowing multiple ndo daemons
# to (sooner or later) run - John Sellens
#echo -n 'Waiting for ndo to exit .'
for i in 1 2 3 4 5 6 7 8 9 10 ; do
if status_ndo > /dev/null; then
echo -n '.'
sleep 1
else
break
fi
done
if status_ndo > /dev/null; then
echo ''
echo 'Warning - ndo did not exit in a timely manner'
else
echo 'done.'
fi
rm -f $NdoStatusFile $NdoRunFile $NdoLockDir/$NdoLockFile $NdoCommandFile
;;
status)
pid_ndo
printstatus_ndo ndo
;;
check)
echo "Running configuration check..."
$NdoBin -v $NdoCfgFile;
if [ $? -eq 0 ]; then
echo "done."
$0 stop
$0 start
else
echo " CONFIG ERROR! Check your Ndo configuration."
exit 1
fi
;;
restart)
printf "Running configuration check..."
$NdoBin -v $NdoCfgFile > /dev/null 2>&1;
if [ $? -eq 0 ]; then
echo "done."
$0 stop
$0 start
else
echo " CONFIG ERROR! Restart aborted. Check your Ndo configuration."
exit 1
fi
;;
reload|force-reload)
printf "Running configuration check..."
$NdoBin -v $NdoCfgFile > /dev/null 2>&1;
if [ $? -eq 0 ]; then
echo "done."
if test ! -f $NdoRunFile; then
$0 start
else
pid_ndo
if status_ndo > /dev/null; then
printf "Reloading ndo configuration..."
killproc_ndo ndo -HUP
echo "done"
else
$0 stop
$0 start
fi
fi
else
echo " CONFIG ERROR! Reload aborted. Check your Ndo configuration."
exit 1
fi
;;
*)
echo "Usage: ndo {start|stop|restart|reload|force-reload|status|check}"
exit 1
;;
esac
# End of this script
Zum automatischen Start beim booten:
ln -s /etc/init.d/rc3.d/S<Zahl>ndo2db /etc/init.d/ndo2db
Unter SLES10 aber bestimmt auch anderen Linux Distributionen muss das Paket OpenSSL-devel installiert sein.
tar xfvz nrpe-2.10.tar.tar cd nrpe-2.10 ./configure make all
Auf dem Nagios-Server wird vom NRPE das Plug-in check_nrpe gebraucht, das mit
cp src/check_nrpe /usr/local/nagios/libexec/
am richtigen Platz landet.
tar xfvz libart*.*.tar.gz cd libart* ./configure make make install
tar xfvz rrd*.*.tar.gz cd rrd* ./configure make make install
tar xfvz c* cd c** ./install.sh
pear-Installation:
pear install Auth_SASL-1.0.2.tgz pear install DB-1.7.13.tgz pear install DB_DataObject-1.8.7.tgz pear install –n DB_DataObject_FormBuilder-1.0.ORC7.tgz pear install Date-1.4.7.tgz pear install HTML_Common-1.2.4tgz pear install HTML_QuickForm-3.2.10.tgz pear install HTML_QuickForm-advmultiselect-1.4.0.tgz pear install HTML_Common-1.2.4tgz pear install HTML_Table-1.6.1.tgz pear install HTTP-1.4.0.tgz pear install Image_Canvas-0.3.1.tgz pear install Image_Color-1.0.2.tgz pear install Image_Graph-0.7.2.tgz pear install Image_GraphViz-1.2.1.tgz pear install MDB2-2.4.1.tgz pear install Mail-1.1.14.tgz pear install Mail_Mime-1.3.1.tgz pear Net_Ping-2.4.2.tgz pear Net_SMTP-1.2.10.tgz pear Net_Socket-1.0.8.tgz pear Net_Traceroute-0.21.1.tgz pear Numbers_Roman-1.0.1.tgz pear Numbers_Words-0.15.0.tgz pear –d SOAP-0.11.0.tgz pear Validate-0.7.0.tgz pear XML_RPC-1.5.1.tgz
Unter
http://127.0.0.1/oreon/install/setup.php
kann man nun die CETNTREON Datenbank konfigurieren.
Jetzt ist CENTREON unter
http:/127.0.0.1/oreon/
bereit.
tar xvzf nagvis-1.x.tar.gz mv nagvis-1.2.2 nagvis mv nagvis /usr/local/nagios/share cd /usr/local/nagios/share/nagvis cp etc/nagvis.ini.php-sample etc/nagvis.ini.php
Konfigurationsdatei anpassen! Infos hierzu:
http://www.nagvis.org/docs/1.2/nagvis_config_format_description
chown wwwrun:nagios /usr/local/nagios/share/nagvis -R chmod 664 /usr/local/nagios/share/nagvis/etc/nagvis.ini.php chmod 775 /usr/local/nagios/share/nagvis/nagvis/images/maps chmod 664 /usr/local/nagios/share/nagvis/nagvis/images/maps/* chmod 775 /usr/local/nagios/share/nagvis/etc/maps chmod 664 /usr/local/nagios/share/nagvis/etc/maps/*
WUI
http://<nagiosserver>/<path-to-nagvis>/config.php (http://127.0.0.1/nagios/nagvis/wui/index.php)
Wenn man das NagVis Icon sieht kann man diese mit der rechten Maustaste anklicken und NagVis konfigurieren und Maps anlegen.
(Achtung: Funktioniert nicht im Konqueror).
Das Konfigurationstool zeigt keine aktuellen Stände an.
Wenn man die WUI nicht nutzen will kann man auch einfach die Konfigurationsdateien (nagvis/etc/maps/) bearbeiten. Siehe auch: http://www.nagvis.org/doku.php?id=map_config_format_description_1_0
Aktuelle Mappen ansehen:
http://<nagiosserver>/<path-to-nagvis>/index.php?map=<mapname> http://25.13.33.45/nagios/nagvis/nagvis/index.php)
tar xfvz pnp*.tar.gz cd pnp* ./configure make all make install
Eintrag in nagios.cfg
process_performance_data=1 service_perfdata_command=process-service-perfdata
Eintrag ändern:
illegal_macro_output_chars=`~$&|"<>
Eintrag in commands.cfg
define command{
command_name process-service-perfdata
command_line /usr/local/nagios/libexec/process_perfdata.pl
}
Ansehen kann man sich dann alles unter
http://127.0.0.1/nagios/pnp
tar xzf nagios-nuvola-1.0.3.tar.gz cp -r html/* /usr/local/nagios/share
Die Dateien config.js, main.html, side/apytmenu_data.js, side/dtree_data.js enthalten die Textstellen zu den Menüpunkten, man kann diese zum Beispiel ins Deutsche übersetzen oder generell anders benennen.
Hinweis: Die Datei config.js setzt die cgipath Variable.
chown -R nagios:nagios /usr/local/nagios/share