====== Installation Nagios4, Nagiosgraph, NagVis, Loghost ======
===== Betriebssystem =====
Auf dem Nagios-Server sollten bestimmte Basisdienste installiert und konfiguriert sein.
==== SNMP / SNMPD ====
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 localhost
rocommunity
sysLocation Arbeitszimmer
sysContact JB
dontLogTCPWrappersConnects true
==== Postfix ====
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
===== Nagios 4 =====
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:
\\
\\
===Installation der benötigten Pakete===
sudo apt-get install apache2 apache2-utils libapache2-mod-php5 \
build-essential libgd2-xpm-dev zip unzip
===Anlegen von Benutzer und Gruppe===
useradd -m -s /bin/bash nagios
passwd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd www-data
=== Kompilieren und Installieren ===
./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
===== Plugins =====
==== Kompilieren und Installieren der Standard-Plugins ====
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
=== Perl-Module für diverse Plugins ===
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
=== check_nrpe (64Bit) ===
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/
===check_esxi_hardware.py===
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 }'
===== Nagios-Konfiguration =====
==== nagios.cfg ====
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
# ...
==== nagios_check.sh ====
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
==== nagioslog_localtime.sh ====
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 "
RC=3
fi
exit $RC
====apache====
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"
# 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
Alias /nagios "/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
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
===== Recurring Downtime =====
[[https://exchange.icinga.org/exchange/downtime_sched%3A+recurring+downtime+scheduler#Latest-Release! | 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
# ...
Recurring Downtime
# ...
===== Nagiosgraph =====
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.
==== Nagios-Config ====
# 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
==== Apache-Config ====
# vi nagiosgraph-apache.conf
# enable nagiosgraph CGI scripts
ScriptAlias /nagiosgraph/cgi-bin "/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
# enable nagiosgraph CSS and JavaScript
Alias /nagiosgraph "/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
Natürlich muss die Apache-Config wieder per Command aktiviert werden.
a2enconf nagiosgraph
service apache2 reload
===== mk-livestatus =====
./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
# ...
===== NagVis =====
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.
===== Loghost =====
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.
=== Loganalyzer ===
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.
=== Anzeige-DBs / nagtrap ===
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
; ...
===== Nagios Mobile =====
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
//
// ***********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
===== Nützliches =====
==== Tools ====
apt-get install vim lsscsi htop ethtool cifs-utils
==== Config ====
=== Syntaxhighlighting im Vi ===
#vi /etc/vim/vimrc
# ...
#" Vim5 and later versions support syntax highlighting. Uncommenting the next
#" line enables syntax highlighting by default.
syntax on
# ...
=== Farbe in der Bash-Shell für Root ===
Einfach für Root die .bashrc vom User pi kopieren.
mv /root/.bashrc /root/.bashrc.org
cp /home/pi/.bashrc /root/