====== 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/