Nagios

aus www.kruedewagen.de, Homepage von Ralf und Judith Krüdewagen (Kruedewagen)
Zur Navigation springen Zur Suche springen
Die druckbare Version wird nicht mehr unterstützt und kann Darstellungsfehler aufweisen. Bitte aktualisiere deine Browser-Lesezeichen und verwende stattdessen die Standard-Druckfunktion des Browsers.

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

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