Nagios

aus www.kruedewagen.de, Homepage von Ralf und Judith Krüdewagen (Kruedewagen)
Zur Navigation springen Zur Suche springen

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

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

Workshops / Medien

Literatur

  • Nagios, Open Source Press, ISBN 978-3-941841-25-3

Plugins und Erweiterungen

  • Pluginentwicklung siehe LM 05/06 S.118


NRPE

Mehrere Checks zusammenfassen

Logfiles

Standard-Check:

check_log -F datei.log -O datei.log.nagios -q ALARM

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

Tipps und Tricks:

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

Kommerzielle Ableger

Support

Community, Blogs, Wikis, Foren

Android Apps

Browser Erweiterungen

Windows

  • Mit Nagios Windows überwachen: siehe c't 12/12 S.184 (NRPE, NSClient++, WMI, PowerShell)

Siehe auch