Benutzer-Werkzeuge

Webseiten-Werkzeuge


installation_nagios_4_nagiosgraph_nagvis_loghost

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 <community>  localhost
rocommunity <community>
sysLocation    Arbeitszimmer
sysContact     JB <raspberrypi2@jbackes.de>
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 <nagios.log>"
	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.

nagios.conf
# 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

Recurring Downtime

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>
# ... 

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"
<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

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
<?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

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/
installation_nagios_4_nagiosgraph_nagvis_loghost.txt · Zuletzt geändert: 2016/10/04 09:09 von admin