Nagios
Erscheinungsbild
	
	
Nagios ist eine umfassende und mächtige Open-Source Monitoring-Software zur Überwachung von Rechner- und Netzwerkressourcen. Mit Icinga existiert ein kompatibler Fork von Nagios.
Allgemeine Artikel
- siehe c't 3/06, S.206
 - siehe iX 02/08 S.54, Neues bei Nagios 3
 - siehe LM 03/08 S.29 ff
- Neues bei Nagios 3
 - Einsatz am Beispiel
 - Business-Prozesse (z.B. Redundanzen) abbilden
 - SLA
 - Logfile-Überwachung mit check_logfiles (auch z.B. /proc oder /sys Stati überwachen)
 
 - siehe LM 11/08 S.22 Bericht zur Nagios-Konferenz
 - Workshops bei pro-linux.de: Teil 1, Teil 2, Teil 3
 - Netzwerküberwachung mit Nagios (heise.de)
 - siehe c't 05/12 S.176: Drucker-Plugin, Alarm per SMS (gammu), mobile Clients (aNag, uNagi)
 - Drucker-Monitoring: siehe c't 04/12 S.170
 - Gelegentlich genutzte Geräte überwachen: siehe c't 14/13 S.172 (lynx, etc.)
 - siehe LM 05/14 S.28
 
Konfiguration
- Konfig-GUI Nconf, siehe LM 07/09 S.72
 - Einsatz von Makros in Nagios und Icinga: siehe iX 09/10 S.126 (sehr guter Artikel)
 - nagios.frank4dd.com
 - Templates (nagios-wiki.de)
 
Timeperiod
Wochenende:
define timeperiod {
    timeperiod_name Wochenende
    friday 16:00-24:00
    saturday 00:00-24:00
    sunday 00:00-24:00
    monday 00:00-08:00
}
Alles außer Wochenende:
define timeperiod {
    timeperiod_name Woche
    use 24x7
    exclude Wochenende
}
Event Handler
Siehe Event Handler.
Spezielle Parameter
- enable_environment_macros
- sollte bei check_mk/livestatus und bei großen Installationen auf 0 stehen
 - http://nagios.sourceforge.net/docs/3_0/tuning.html
 - http://www.censhare.com/de/Pimping-NagiosIcinga-email-notifications-II-1042070.html
 
 
Workshops / Medien
Literatur
- Nagios, Open Source Press, ISBN 978-3-941841-25-3
 
Plugins und Erweiterungen
- http://nagios-plugins.org
 - https://www.monitoring-plugins.org - Monitoring Plugins Project
 
- Pluginentwicklung siehe LM 05/06 S.118
 
- Nagiosgraph
 - Netways Grapher (Vortrag neue Version)
 - JasperForge, Reports
 - Twitter Plugin
 - Notifikationen per Jabber
 - NagiosCenter View
 - Monitoring videostreams with Nagios (mplayer)
 - Setting up the NSCA addon for passive checks
 
- SNMP
 
- Graphing:
 
NRPE
- Nagios: How to Enable check_nrpe Command Line Arguments (thegeekstuff.com)
 
Mehrere Checks zusammenfassen
- check_multi
- kann über NRPE oder SSH ausgeführt werden
 - ggf. Nagios/Icinga mit größeren Buffern übersetzen
 - auch per SNMP zusammenfassen ist kein Problem
 - http://www.netways.de/osmc/y2008/programm/v/check_multi/
 - http://klimmbimm.de/icinganagios-plugin-check_multi-verknupft-check-results/
 
 
- check_mk
- siehe c't
 - Automatische Inventorisierung
 - Auf Remote-Seite muss Agent auf Shell-Basis installiert werden und laufen.
 - MRPE (wie NRPE) in Agenten integriert zum Aufrufen "normaler" Checks auf Remote-Seite.
 - Alternativ auch Checks vom Server ausgehend per SNMP (statt per TCP Port 6556 mit Agenten) möglich.
 - Alle Daten werden auf dem Agent auf einmal gesammelt und als Passive Checks lokal an den Nagios-Server übermittelt.
 - Kann check_mk auch per NRPE auf Remote-Seite aufgerufen werden oder muss es auf Nagios-Server laufen (um z.B. das SNMP-Sammeln per check_mk auf Remote-Seite zu machen und nicht auf dem Server)? Ja, per MRPE können lokale check-Scripte aufgerufen werden.
 - http://www.netways.de/osmc/y2009/programm/v/check_mk_eine_bessere_alternative_zu_nrpe_nsclient_und_check_snmp/
 - https://ostlogd.spenneberg.net/wordpress/?tag=check_mk
 
 
Logfiles
Standard-Check:
check_log -F datei.log -O datei.log.nagios -q ALARM
check_logfiles
- Verbesserter Check. Durchsucht auch rotierte Logs, falls diese zwischendurch erzeugt wurden.
 - http://labs.consol.de/lang/de/nagios/check_logfiles/
 - http://exchange.nagios.org/directory/Plugins/Log-Files/check_logfiles/details
 - http://www.nagios-wiki.de/nagios/plugins/check_logfiles
 - https://github.com/lausser/check_logfiles/blob/master/README
 - http://www.linux-magazin.de/Heft-Abo/Ausgaben/2008/03/Alles-im-Blick
 - https://wiki.icinga.org/display/howtos/check_logfiles
 
Pattern finden:
- Beim ersten Lauf wird noch kein Pattern gefunden, erst beim zweiten (aber nur für dazugekommene Zeilen im File!)
 - Die Option "--allyoucaneat" (nicht auf CLI) bewirkt, dass schon beim ersten Lauf gefunden wird.
 - Ich kann mit "--reset" jederzeit zurücksetzen, dann wird beim nächsten Lauf komplett durchsucht und gefunden (auch durch alle rotierte Dateien)
 
Dateien (konfigurierbar):
- Seekfile mit Logdatei-Infos in /var/tmp/check_logfiles/.
 - Protokolldatei in Datei wie /tmp/check_logfiles.protocol-2012-09-05-09-42-26
 
Beispiele:
/usr/local/icinga/libexec/check_logfiles --logfile=/var/tmp/test.log --criticalpattern='.*Finde mich.*' --tag=ALARM /usr/local/icinga/libexec/check_logfiles --logfile=/var/tmp/test.log --criticalpattern='Finde mich' --tag=ALARM /usr/local/icinga/libexec/check_logfiles --logfile=/var/tmp/test.log --criticalpattern='!.*Bin noch da.*' --tag=ALIVE
Ausgabe aller gefundenen Zeilen:
/usr/local/icinga/libexec/check_logfiles --logfile=/var/tmp/test.log --criticalpattern='.*Finde mich.*' --tag=ALARM --report=long
Rotierte Dateien im Format ".log-YYYYMMDD.bz2" durchsuchen (nur 1x beim nächsten Aufruf, wenn Seek anders ist bzw. die ursprüngliche Logdatei durch Rotation "anders" ist):
/usr/local/icinga/libexec/check_logfiles --logfile=/var/tmp/test.log --criticalpattern='.*Finde mich.*' --tag=ALARM --report=long --rotation=loglogdate8bz2
In Nagios/Icinga setzen (http://docs.icinga.org/latest/de/volatileservices.html):
max_check_attempts 1 is_volatile 1 flap_detection_enabled 0 notification_options w,u,c
... und im Normalfall nur bei WARNING, UNKNOWN oder CRITICAL notifizieren (nicht bei OK)
Beispiel:
# 'check_logfiles' with rotation parameter
# Seekfiles in /var/tmp/check_logfiles/, protocol files in /tmp
#
define command{
    command_name    check_logfiles
    command_line    $USER1$/check_logfiles --logfile=$ARG1$ --warningpattern='$ARG2$' --criticalpattern='$ARG3$' --tag=$ARG4$ --report=$ARG5$ --rotation=$ARG6$ --timeout=$ARG7$
    }
# check log, seach for "ALARM" and set to warn
define service{
    use                     service-workhours           ; Name of service template to use
    host_name               owl
    contact_groups          admins
    service_description     CONFDB_CONSISTENCY
    check_command           check_logfiles!/var/tmp/confdb.log!ALARM!XXcriticalXXX!ALARM!long!loglogdate8bz2!60
    normal_check_interval   30
    max_check_attempts      1
    is_volatile             1
    flap_detection_enabled  0
    notification_options    w,u,c
    }
check_mk
- http://mathias-kettner.de/check_mk.html
 - Praxis siehe c't 24/12 S.190
 - siehe LM 05/14 S.34
 - http://blog.quux.de/?p=1384
 - https://wiki.icinga.org/display/howtos/check_mk
 
- http://www.mail-archive.com/checkmk-en@lists.mathias-kettner.de/info.html
 - http://www.mail-archive.com/checkmk-de@lists.mathias-kettner.de/info.html
 
Tipps und Tricks:
- Hosts managen
 - ipaddresses splitten
 - notification intervals with host tags
 - http://blog.bastian-kuhn.de/category/check_mk/
 
Plugin getrennt vom Server nutzen
Beispiel HTTP als Cronjob:
# Check if Apache is responsing and restart it if not */5 * * * * (/usr/lib64/nagios/plugins/check_http -H www.example.com -S -t 10 -u /wiki/Main_Page -s "My Wiki" -f follow || (/etc/init.d/apache stop;/etc/init.d/apache start;echo "Restarted Apache on www.example.com at $(date) by cronjob check_http" | mail -s "Restarted Apache on www.example.com" user1@example.com,user2@example.com; logger "Restarted Apache on www.example.com at $(date) by cronjob check_http")) > /dev/null 2>/dev/null
Cache
- NRPE-Ergebnis im Cache halten: siehe c't 14/13 S.172, Soft-Link
 
Hardware
- Ampel für Gesamtzustand des Netzes: siehe LM 06/08 S.74
 
Forks
- Icinga
 - Shinken, siehe LM 04/10 S.92
- Python
 - verteiltes und redundantes Monitoring
 - mehrere Prozesse
 
 - Open Monitoring Distribution (OMD) mit Check_MK GUI Multisite
- siehe LM 02/11 S.58
 
 
Alternative GUIs
- Icinga Web 2
 - Check_MK Multisite
 - Thruk
- Thruk: Eine alternative Weboberfläche für Nagios und Co. (pro-linux.de)
 - nutzt Livestatus, kann sich zu mehreren Cores verbinden (z.B. Nagios und Icinga gleichzeitig)
 
 
Kommerzielle Ableger
Support
Community, Blogs, Wikis, Foren
Android Apps
- NagMonDroid
 - nagroid, tunneln mit ConnectBot
 - siehe c't 23/10 S.150
 - op5 Monitor App, siehe auch linux-magazin.de
 
Browser Erweiterungen
Windows
- Mit Nagios Windows überwachen: siehe c't 12/12 S.184 (NRPE, NSClient++, WMI, PowerShell)