Auf dem Nagios-Server sollten bestimmte Basisdienste installiert und konfiguriert sein.
Die SNMP-Tools (snmpwalk, snmpget) und der SNMP-Daemon (zur „Eigenüberwachung“) sollten nicht fehlen.
apt-get install snmpd snmp
Beim snmpd empfiehlt sich eine etwas „einfachere“ Config:
# vi /etc/snmp/snmpd.conf # Listen for connections from the local system only #agentAddress udp:127.0.0.1:161 #rocommunity <community> localhost rocommunity <community> sysLocation Arbeitszimmer sysContact JB <raspberrypi2@jbackes.de> dontLogTCPWrappersConnects true
Damit Nagios eMails versenden kann, muss Postfix installiert und konfiguriert werden.
apt-get install postfix mailutils
Der Postfix muss noch konfiguriert werden.
# vi /etc/postfix/main.cf # ... myhostname = raspberrypi2.jbackes.de # ... relayhost = my.relayhost.de # ... sender_canonical_maps = hash:/etc/postfix/sender_canonical recipient_canonical_maps = hash:/etc/postfix/recipient_canonical # ...
Die „sender_canonical“ und „recipient_canonical“ sind dann auf die entsprechenden Gegebenheiten anzupassen.
# vi /etc/postfix/sender_canonical nagios nagios@jbackes.de pi pi@jbackes.de root root@jbackes.de # ------ # vi /etc/postfix/recipient_canonical root@raspberrypi.jbackes.de pi@jbackes.de nagios@raspberrypi.jbackes.de pi@jbackes.de pi@raspberrypi.jbackes.de pi@jbackes.de
Anschließend müssen die Dateien mit dem Befehl „postmap“ ins DB-Format übersetzt werden.
postmap /etc/postfix/sender_canonical postmap /etc/postfix/recipient_canonical service postfix restart
Möglicherweise tauchen beim Restart des Postfix Meldungen auf, da der IPv6 Support deaktiviert wurde.
postmulti: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
Dies kann mann mit dem passenden postconf-Befehl beseitigen:
postconf -e 'inet_protocols = ipv4' service postfix restart
Eine gute Dokumentation für die Installation unter Ubuntu ist bei http://nagios.sourceforge.net/docs/nagioscore/4/en/quickstart-ubuntu.html zu finden.
Zusammengefasst sind die folgende Schritte durchzuführen:
sudo apt-get install apache2 apache2-utils libapache2-mod-php5 \ build-essential libgd2-xpm-dev zip unzip
useradd -m -s /bin/bash nagios passwd nagios groupadd nagcmd usermod -a -G nagcmd nagios usermod -a -G nagcmd www-data
./configure --with-command-group=nagcmd make all make install make install-init make install-config # damit das etc-Verzeichnis angelegt wird make install-commandmode make install-webconf # Apache Config htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin service apache2 reload
Folgende Pakete sollten vorab installiert werden, damit auch alle plugins kompiliert werden.
apt-get install dnsutils # DNS apt-get install libssl-dev libgnutls-dev # SSL apt-get install libldap2-dev # LDAP apt-get install libmysqlclient-dev # MySQL apt-get install libpq-dev # PostgresQL apt-get install libradiusclient-ng-dev # Radius
./configure --with-nagios-user=nagios --with-nagios-group=nagios make make install
apt-get install libsnmp-perl libnet-snmp-perl libnmap-parser-perl \
libio-pty-perl libnet-openssh-perl \
libdbi-perl libdatetime-perl libdatetime-format-strptime-perl \
libdbd-mysql-perl libnet-telnet-perl libxml-simple-perl
Möglicherweise meldet ein „check_nrpe“ den Fehler „No such file or directory“, obwohl das Plugin im angegebenen Pfad zu finden ist. Das Problem ist hier, dass das „check_nrpe“ möglicherweise von einem anderen Rechner mit 32Bit-Architektur stammt. Am besten kompiliert man kurz auf dem Nagios neu. Da das configure
aber Probleme hat, das ssl einer 64Bit Installation zu finden, legt man vorher einen Link an.
ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/libssl.so tar xvf nrpe-2.15.tar.gz cd nrpe-2.15 ./configure make # Da wir nur das check_nrpe haben wollen, lassen wir "make install" weg und kopieren von Hand. cp src/check_nrpe /usr/local/nagios/plugins-3rdparty/
Das Plugin check_esxi_hardware.py
benötigt das Paket python-pywbem
in einer älteren Version (0.7.0-4). Anderenfalls kommt es zu einem ssl-Fehler bei der Ausführung. Für die Installation geht man folgendermaßen vor:
apt-get install python-pywbem aptitude install python-pywbem=0.7.0-4 # Auf HOLD setzen (damit es nicht mehr aktualisiert wird) echo "python-pywbem hold"|dpkg --set-selections # Kontrolle dpkg --get-selections |awk '$2 == "hold" { print $1 }'
In der Standard-nagios.cfg werden die Config-Dateien einzeln mit „cfg_file=“ eingebunden. Ein „cfg_dir“ wie unter Ubuntu (z.B. /usr/local/nagios/etc/conf.d) hat sich aber in der Praxis bewährt.
# vi /usr/local/nagios/etc/nagios.cfg ############################################################################## # # NAGIOS.CFG - Sample Main Config File for Nagios 4.0.8 # ############################################################################## log_file=/usr/local/nagios/var/nagios.log # ... cfg_dir=/usr/local/nagios/etc/conf.d # ... use_syslog=0 # ...
Damit man schneller und von überall einen Check der Nagios-Config durchführen kann, empfiehlt sich ein kleines Shell-Skript, dass in einem System-Pfad liegt (z.B. /usr/local/bin).
# vi /usr/local/bin/nagios_check.sh #!/bin/bash /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Kleines Script, dass den Zeitstempel im nagios.log in lesbarere Form bring. Sinnvoller Weise direkt im log-Verzeichnis abgelegt (/usr/local/nagios/var/)
# vi /usr/local/nagios/var/nagioslog_localtime.sh #!/bin/bash if [ $1 ]; then cat $1 | perl -pe 's/(\d+)/localtime($1)/e' RC=0 else echo "Error: Missing parameter" echo "usage: nagioslog_localtime.sh <nagios.log>" RC=3 fi exit $RC
In neueren Distributionen (z.B. Ubuntu 14.04) gibt es das Verzeichnis /etc/apache2/conf.d
nicht mehr. Leider versucht Nagios beim Compilieren hier seine Apache-Config abzulegen.
Man kann die Config aber auch von Hand unter /etc/apache2/conf-available
ablegen.
# SAMPLE CONFIG SNIPPETS FOR APACHE WEB SERVER # # This file contains examples of entries that need # to be incorporated into your Apache web server # configuration file. Customize the paths, etc. as # needed to fit your system. ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" <Directory "/usr/local/nagios/sbin"> # SSLRequireSSL Options ExecCGI AllowOverride None Order allow,deny Allow from all # Order deny,allow # Deny from all # Allow from 127.0.0.1 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"> # SSLRequireSSL Options None AllowOverride None Order allow,deny Allow from all # Order deny,allow # Deny from all # Allow from 127.0.0.1 AuthName "Nagios Access" AuthType Basic AuthUserFile /usr/local/nagios/etc/htpasswd.users Require valid-user </Directory>
Anschließend wird die Conf-Datei ins Verzeichnis /etc/apache2/conf-enabled
verlinkt und die Apache-Module cgi
und rewrite
werden aktiviert. Zum Schluß wird der Apache neu gestartet.
ln -s /etc/apache2/conf-available/nagios.conf /etc/apache2/conf-enabled/nagios.conf a2enmod cgi a2enmod rewrite service apache2 restart
Download von exchange.icinga.org
Die Installation erfolgt problemlos entsprechend der mitgelieferten README Datei. Wichtig ist, dass innerhalb der Dateien die Pfade angepasst werden müssen.
Für diverse optische Anpassungen, ist es ggfls auch nötig, die Pfade zu den Stylesheets anzupassen.
Ein Verzeichnis mit den bereits angepassten Dateien liegt im Installverzeichnis.
Mit den angepassten Dateien sind noch folgende Schritte notwendig:
touch /usr/local/nagios/etc/downtime.cfg chown www-data:www-data /usr/local/nagios/etc/downtime.cfg cp downtime_sched.cgi /usr/local/nagios/sbin/ chown nagios:nagios /usr/local/nagios/sbin/downtime_sched.cgi cp downtime_job.pl /usr/local/nagios/bin/ chown nagios:nagios /usr/local/nagios/bin/downtime_job.pl
ctrontab des Users nagios:
# m h dom mon dow command 01 * * * * /usr/local/nagios/bin/downtime_job.pl >/usr/local/nagios/var/downtime.log 2>&1
Anpassung der side.php
# ... <li><a href="/nagios/cgi-bin/downtime_sched.cgi" target="<?php echo $link_target;?>">Recurring Downtime</a></li> # ...
Zunächst werden die benötigten Pakete installiert.
apt-get install libcgi-pm-perl librrds-perl libgd-gd2-perl libnagios-object-perl
Danach können mit dem mitgelieferten Perl-Skript die Voraussetzungen geprüft und die Installation gestartet werden. Bei den gestellten Fragen kann der jeweilige Default übernommen werden. Ausnahme natürlich, wenn man die Nagios-Config bzw. Apache-Config direkt anpassen lassen will.
./install.pl --check-prereq ./install.pl # ... Modify the Nagios configuration? [n] y Path of Nagios configuration file? [/usr/local/nagios/etc/nagios.cfg] Path of Nagios commands file? [/usr/local/nagios/etc/objects/commands.cfg] Modify the Apache configuration? [n] y Path of Apache configuration directory? /etc/apache/conf-available configuration: ng_prefix /usr/local/nagiosgraph ng_etc_dir /usr/local/nagiosgraph/etc ng_bin_dir /usr/local/nagiosgraph/bin ng_cgi_dir /usr/local/nagiosgraph/cgi ng_doc_dir /usr/local/nagiosgraph/doc ng_examples_dir /usr/local/nagiosgraph/examples ng_www_dir /usr/local/nagiosgraph/share ng_util_dir /usr/local/nagiosgraph/util ng_var_dir /usr/local/nagiosgraph/var ng_rrd_dir /usr/local/nagiosgraph/var/rrd ng_log_dir /usr/local/nagiosgraph/var/log ng_log_file /usr/local/nagiosgraph/var/log/nagiosgraph.log ng_cgilog_file /usr/local/nagiosgraph/var/log/nagiosgraph-cgi.log ng_url /nagiosgraph ng_cgi_url /nagiosgraph/cgi-bin ng_css_url /nagiosgraph/nagiosgraph.css ng_js_url /nagiosgraph/nagiosgraph.js nagios_cgi_url /nagios/cgi-bin nagios_perfdata_file /tmp/perfdata.log nagios_user nagios www_user www-data modify_nagios_config y nagios_config_file /usr/local/nagios/etc/nagios.cfg nagios_commands_file /usr/local/nagios/etc/objects/commands.cfg modify_apache_config y apache_config_dir /etc/apache2/conf-available apache_config_file Continue with this configuration? [y]
Lässt man die Apache-Config automatisch generieren, sollte man kontrollieren, ob die Berechtigungen passend gesetzt sind. Meisst muss für beide Directories
noch ein Require all granted
gesetzt werden. Anderenfalls bekommt man Fehlermeldungen wie:
You dont have permission to access /nagiosgraph/cgi-bin/show.cgi
# oder
JavaScript is disabled.
nagiosgraph.js is not installed or wrong version.
Im Anschluss muss für die Funktion „mouseover“ noch die nagiosgraph.ssi ins Nagios-Verzeichnis kopiert werden.
cp /install/nagiosgraph-1.5.2/share/nagiosgraph.ssi /usr/local/nagios/share/ssi/common-header.ssi
Für das nagiosgraph.log
sollte noch logrotate
konfiguriert werden, da das nagiosgraph.log recht schnell sehr groß werden kann.
# vi /etc/logrotate.d/nagiosgraph /usr/local/nagios/nagiosgraph/var/log/nagiosgraph.log { daily missingok rotate 7 notifempty compress create 644 nagios nagios postrotate touch /usr/local/nagios/nagiosgraph/var/log/nagiosgraph.log chown nagios:nagios /usr/local/nagios/nagiosgraph/var/log/nagiosgraph.log chmod 644 /usr/local/nagios/nagiosgraph/var/log/nagiosgraph.log endscript }
Nagiosgraph ist damit prinzipiell funktionsfähig. Es lässt sich aber über diverse Config-Files noch die Darstellung optimieren. Die entsprechenden Konfiguration sind im Artikel „Nagiosgraph - Konfiguration“ näher beschrieben.
# vi nagios.cfg # ... # nagiosgraph process_performance_data=1 service_perfdata_file=/tmp/perfdata.log service_perfdata_file_template=$LASTSERVICECHECK$||$HOSTNAME$||$SERVICEDESC$||$SERVICEOUTPUT$||$SERVICEPERFDATA$ service_perfdata_file_mode=a service_perfdata_file_processing_interval=30 service_perfdata_file_processing_command=process-service-perfdata-for-nagiosgraph
# vi nagiosgraph-apache.conf # enable nagiosgraph CGI scripts ScriptAlias /nagiosgraph/cgi-bin "/usr/local/nagiosgraph/cgi" <Directory "/usr/local/nagiosgraph/cgi"> Options ExecCGI AllowOverride None Order allow,deny Allow from all Require all granted # AuthName "Nagios Access" # AuthType Basic # AuthUserFile /usr/local/nagios/etc/htpasswd.users # Require valid-user </Directory> # enable nagiosgraph CSS and JavaScript Alias /nagiosgraph "/usr/local/nagiosgraph/share" <Directory "/usr/local/nagiosgraph/share"> Options None AllowOverride None Order allow,deny Allow from all Require all granted # AuthName "Nagios Access" # AuthType Basic # AuthUserFile /usr/local/nagios/etc/htpasswd.users # Require valid-user </Directory>
Natürlich muss die Apache-Config wieder per Command aktiviert werden.
a2enconf nagiosgraph service apache2 reload
./configure --with-nagios4 make make install
Im Anschluß hieran muss noch das ensprechende broker_module in der nagios.cfg eingetragen werden.
# vi /usr/local/nagios/etc/nagios.cfg # ... broker_module=/usr/local/lib/mk-livestatus/livestatus.o /usr/local/nagios/var/rw/live # ...
Benötigt wird das php5-gd Paket.
apt-get install php5-gd graphviz sqlite3 php5-sqlite rsync
Die Installation von NagVis ist über die install.sh Dialog-gesteuert. Oder man nutzt den etwas längeren Aufruf den install.sh mit Parametern.
./install.sh -n /usr/local/nagios -p /usr/local/nagvis \ -l "unix:/usr/local/nagios/var/rw/live" -b mklivestatus \ -u www-data -g www-data -w /etc/apache2/conf.d -a y
Eine weitere Konfiguration (über die nagvis.ini.php) ist prinzipiell nicht notwendig, da NagVis default-mäßig mit logonmodule=„LogonMixed“
arbeitet. Hier wird dann eine eigene Anmeldemaske für NagVis angezeigt. Will man die Nagios-Anmeldung benutzen (was vermutlich in den meissten Fällen so ist), muss man lediglich in der Apache-Config für NagVis die schon vorbereitete Authentifizierung aktivieren und den AuthNamen auf Nagios anpassen.
# vi /etc/apache2/conf.d/nagvis.conf # ... #AuthName "NagVis Access" AuthName "Nagios Access" AuthType Basic AuthUserFile /usr/local/nagios/etc/htpasswd.users Require valid-user # ...
Unter neueren Ubuntu-Systemen wird die Apache-Config unter /etc/apache2/conf-available
abgelegt und muss mit dem Befehl a2enconf
aktiviert werden.
a2enconf nagvis
Will man jetzt noch bestimmte Nagios-User (z.B. nagiosadmin) zum NagVis-Administrator machen, wechselt man in das NagVis-ETC Verzeichnis und führt dort das im Installationsverzeichnis liegene nagvis-make-admin
aus.
cd /usr/local/nagvis/etc/ /install/nagvis-1.8.5/nagvis-make-admin nagiosadmin # Damit dieser Befehl funktioniert, muss 1x die NagVis-Seite aufgerufen worden sein, damit die Datei "auth.db" angelegt wurde.
Der Loghost speichert seine Inforamationen in einer MySQL-DB. Für den Zugriff der Plugins auf die Datenbanken werden diverse Perl-Module benötigt. Außerdem wird das rsyslog-mysql Modul benötigt.
apt-get install mysql-server libdbi-perl libdatetime-perl libdatetime-format-strptime-perl \ libdbd-mysql-perl apt-get install phpmyadmin apt-get install rsyslog-mysql
Bei der Installation des „rsyslog-mysql“ Moduls kann man sich die Datenbank Syslog erstellen lassen. Diese mit entsprechenden SQL-Skripten aus dem Installationsverzeichnis um die Tabellen für die Nagios-Integration erweitert.
Im Folgenden muss der rsyslogd passend konfiguriert werden. Hierzu liegen im Installationsverzeichnis unter etc/rsyslog.d 3 Dateien, die ins /etc/rsyslog.d Verzeichnis kopiert werden. Die dort vorhandene mysql.conf muss gelöscht werden. Im Anschluß wird die /etc/rsyslog.conf für die Annahme von Meldungen konfiguriert und das Meldungsformat passend eingestellt.
# vi /etc/rsyslog.conf # ... # provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 # ... #$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $ActionFileDefaultTemplate RSYSLOG_SyslogProtocol23Format # ...
Abschließend wird die mitgelieferte Apache-Config (etc/apache/loghost.conf) ins /etc/apache2/conf.d kopiert und der Apache durchgestartet.
Nach dem entpacken wird das src-Verzeichnis in ein Webserver-Verzeichnis bzw. beim Loghost unter /usr/local/loganalyzer kopiert und dem Webserver-User Zugriff auf dieses Verzeichnis gewährt.
cp -r /install/loganalyzer-4.1.2/src /usr/local/loganalyzer chown -R www-data:www-data /usr/local/loganalyzer
Jetzt kann man den Loganalyzer schon im Webbrowser aufrufen und wird durch die Konfiguration geführt.
WErden nagtrap oder „Abwandlungen“ hiervon zu Anzeige der Loghost Events genutzt, muss in der php.ini der Wert „short_open_tag=On“ gesetzt werden. Außerdem sollte die Speichergrenze erhöht werden.
# vi /etc/php5/apache2/php.ini
; ...
;JB - short_open_tag = Off
short_open_tag = On
; ...
;JB - memory_limit = 128M
memory_limit = 512M
; ...
Die für Smartphones u.Ä. angepasste mobile Variante der Nagios-Webseite kann nach dem Entpacken einfach über das mitgelieferte Install-Skript INSTALL.PHP installiert werden. Das Script muss noch ein bisschen angepasst werden, damit es auf die jeweiligen Umgebungen bzw. Apache-Installationen passt.
#vi /install/nagiosmobile/INSTALL.php #!/usr/bin/php <?php // Nagios Mobile // Copyright (c) 2010-2011 Nagios Enterprises, LLC. // Install script written by Mike Guthrie <mguthrie@nagios.com> // // ***********MODIFY THE DIRECTORY LOCATIONS BELOW TO MATCH YOUR NAGIOS INSTALL********************* //target directory where nagiosmobile's web files will be stored define('TARGETDIR',"/usr/local/nagiosmobile"); //target directory where your current apache configuration directory is located //define('APACHECONF',"/etc/httpd/conf.d"); //default for ubuntu/debian installs or raspbian installs //define('APACHECONF',"/etc/apache2/conf.d"); //default for newer ubuntu/debian installs define('APACHECONF',"/etc/apache2/conf-available"); //..
Bei neueren Apache-Installation muss der Config noch „enabled“ werden.
e2enmod nagiosmobile service apache2 reload
apt-get install vim lsscsi htop ethtool cifs-utils
#vi /etc/vim/vimrc # ... #" Vim5 and later versions support syntax highlighting. Uncommenting the next #" line enables syntax highlighting by default. syntax on # ...
Einfach für Root die .bashrc vom User pi kopieren.
mv /root/.bashrc /root/.bashrc.org cp /home/pi/.bashrc /root/