
Ich muss ein Shell-Skript ausführen, wenn ein Dienst mit Monit einverstanden ist, um eine Verbindung zu meinem anderen Überwachungssystem (Nagios) herzustellen.
Im Grunde genommen muss ich erreichen, dass Monit eine Warnung sendet, wenn ein Dienst neu gestartet wurde, und eine weitere Warnung, wenn der Dienst in Ordnung ist.
Ich habe Folgendes ohne Erfolg versucht:
if 1 restarts within 1 cycles then exec "<send WARNING alert here>"
if 0 restarts within 5 cycles then exec "<send OK alert here>"
Oben wird über „Fehler: Null- oder negative Werte sind in einer Aktionsratenanweisung ''OK'' nicht zulässig“ geklagt.
if 1 restarts within 1 cycles then exec "<send WARNING alert here>"
else if succeeded for 5 cycles then exec "<send OK alert here>"
Oben wird über das "else" gemeckert... Ich glaube, "If X Restarts" unterstützt kein "else"
Irgendwelche Vorschläge, um dies zu erreichen?
Antwort1
Da Sie sagen, dass Monit in NAGIOS einspeist, warum lässt man NAGIOS dann nicht die schwere Arbeit erledigen (also Entscheidungen treffen und Benachrichtigungen senden)? Wenn Monit die Neustarts überwacht, kann es send_nsca
NAGIOS benachrichtigen, dass ein Neustart stattgefunden hat.
NAGIOS wiederum kann dies in einem passiven Dienst empfangen, der dafür ausgelegt ist, bei einem einzelnen Alarm eine Benachrichtigung auszulösen, der aber auch mit einem Aktualitätstest definiert ist, sodass es, wenn es für einen bestimmten Zeitraum (hier 60 Min.) nichts hört, ein Skript aufruft, das „0 OK“ zurückgibt, und so für die Dauer dieser Zeitspanne nach einer Neustartbenachrichtigung „OK“ meldet.
define service{
use <standard template>
host_name foo
service_description bar
active_checks_enabled 0
passive_checks_enabled 1
check_command no-restarts-ok
check_freshness 1
max_check_attempts 1
normal_check_interval 60
}
Und
define command{
command_name no-restarts-ok
command_line $USER1$/check_dummy 0 OK
}