Nagios
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.)
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
- 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)