Nagios überprüfen die Servicefrequenz basierend auf dem Servicestatus

9

Ich versuche, Festplatten-Thrashing durch Überwachen von si zu erkennen, also über den Befehl vmstat. Ich überwache andere Dienste mit Nagios und die Überprüfung des Dienstes erfolgt alle 5 Minuten. Für diesen Thrashing-Service möchte ich, dass Nagios ihn alle 20 Minuten überprüft. Wenn der zurückgegebene Status nicht in Ordnung ist (dh Warnung oder kritisch), sollte der Thrashing-Service alle 3 Minuten überprüft werden, bis der vom Service zurückgegebene Status OK wird. Die Serviceprüfzeit für alle anderen Services bleibt unverändert.

Ich bin neu in Nagios und jede Hilfe in diesem Bereich wäre sehr dankbar.

APZ
quelle

Antworten:

14

Angenommen, die interval_lengthDirektive ist standardmäßig auf 60 festgelegt:

$ grep interval_length /usr/local/nagios/etc/nagios.cfg 
# This value works of the interval_length you specify later.  If you leave
# actual seconds rather than a multiple of the interval_length variable.
interval_length=60

Für die speziellen Dienste müssen Sie eine andere Vorlage dafür definieren in /usr/local/nagios/etc/objects/templates.cfg:

define service{
        name                            special-service    
        ...
        max_check_attempts              3           
        normal_check_interval           20         
        retry_check_interval            3           
        notification_interval           60   
        ...   
        }

Achten Sie auf die:

  • normal_check_interval: Dieser Service wird unter normalen Bedingungen alle 20 Minuten überprüft
  • retry_check_interval: Die Anzahl der Minuten, die gewartet werden muss, bevor eine erneute Überprüfung geplant wird, wenn der Dienst in den Status "Nicht OK" geändert wurde. Beachten Sie, dass der Dienst, wenn er wiederholt max_attemptswurde, ohne seinen Status zu ändern, wieder mit der check_intervalRate geplant wird.

und verwenden Sie diese Vorlage für Ihren Service:

define service{
    use                     special-service
    host_name               xx
    service_description     yy
    check_command           zz
    contact_groups          admins
    }

Möglicherweise müssen Sie auch eine Service-Eskalation definieren , um die notification_intervalbasierend auf dem Service-Status zu ändern.

define serviceescalation{
    host_name               xx
    service_description     yy
    last_notification       0
    notification_interval   10
    escalation_options      [w,u,c]
    contact_groups          admins
    }

Dies bedeutet, dass diese Diensteskalation verwendet wird, wenn sich der Dienst im Status WARNUNG, UNBEKANNT oder KRITISCH befindet. Und Sie haben jetzt ein neues Benachrichtigungsintervall: 10 Minuten.

Quanten
quelle