Kann Monit so konfiguriert werden, dass ein Dienst niemals unüberwacht / abgelaufen wird?

7

Monit scheint den Neustart eines Dienstes aufzugeben, wenn er einige Male fehlschlägt, und hebt die Überwachung auf. Ich kann in der Dokumentation nichts darüber finden, wann oder warum.

Meine Monit-Konfiguration würde wie folgt eingerichtet:

set daemon 10
set logfile /var/log/monit.log
set statefile /var/lib/monit/monit.state
set alert [email protected] not { nonexist, action, instance }
include /etc/monit/conf.d/*

Und dies ist ein Beispiel für den Monit-Regelsatz, den ich verwende:

check process myservice
  with pidfile /var/run/myservice/myservice.pid
  start program = "/home/myservice/current/start-myservice.sh"
    as uid myservice and gid myservice
  stop program = "/home/myservice/current/stop-myservice.sh"
    as uid myservice and gid myservice
  mode active

In meiner Umgebung möchte ich, dass die Abfrageintervalle auf unbestimmte Zeit weiter ausprobiert werden. Gibt es eine Möglichkeit, monit so zu konfigurieren, dass die Überwachung eines Dienstes niemals beendet wird , auch wenn er nicht erfolgreich gestartet wird?

Joe Shaw
quelle
Bitte posten Sie ein Beispiel Ihrer Monit-Konfiguration.
ewwhite
gist.github.com/1229828 - Ich habe einige Mailserver- / Warnmeldungen und die HTTP-Serverkonfiguration von monitrc entfernt. Die andere Datei ist ein Beispiel für unsere Servicekonfiguration. Beachten Sie das Fehlen der Klausel "Wenn x neu startet, dann Timeout".
Joe Shaw
Ich habe mich selbst darüber gewundert. Manchmal töte ich einfach etwas, um zu testen, was Monit macht, und Monit überwacht es einfach nicht.
Ramon Tayag

Antworten:

5

Ich würde einfach einen Cron-Job verwenden, der monit start servicenamein den gewünschten Intervallen ausgeführt wird. Natürlich können Sie Gruppen für eine feinere Kontrolle verwenden.

alexandrul
quelle
2
Genau das habe ich getan, aber ich bin nicht sehr glücklich darüber.
Joe Shaw
2

Ich hatte genau das gleiche Problem, bei dem es trotz Neustart der Überwachung nach dem Timeout nicht mehr überwacht werden konnte. Schließlich musste herausgefunden werden, dass die Monit-Statusdatei ( /var/.monit.state) gelöscht und Monit neu gestartet werden musste, damit alle Programme erneut überwacht wurden.

Sam
quelle
2

Nach einigem Graben stellt sich heraus, dass Monit Systemüberwachungsdaten in einer Statusdatei speichert. Und diese "Status" -Datei verfolgt, welche Dienste überwacht / nicht überwacht werden.

Das ist zwar ein bisschen "Brute Force", aber es funktioniert definitiv. Wenn ein Dienst aufgrund einer Zeitüberschreitung nicht mehr überwacht wird, entfernen Sie einfach die Monit-Statusdatei wie folgt aus dem System:

sudo rm /var/lib/monit/state

Und dann starten Sie Monit so neu und alles sollte gut sein:

sudo service monit restart
JakeGould
quelle
1

Basierend auf Ihrem Monit-Code-Snippet müssen Sie anscheinend Zyklusanweisungen ändern oder zu Ihrer Prozess-Zeilengruppe hinzufügen. Siehe die entsprechende Dokumentation hier und hier .

Anscheinend möchten Sie Ihre Servicetests so einstellen, dass sie jeden Zyklus ohne Timeout-Anweisung ausführen. Schauen Sie sich auch Ihre Monit-Homepage unter http: // hostname: 2812. Check the page for the relevant service and look at im Feld "Existenz" an. Ihre Standardeinstellung sollte folgendermaßen aussehen:

If doesn't exist 1 times within 1 cycle(s) then restart else if succeeded 1 times within 1 cycle(s) then alert
ewwhite
quelle
Wenn Sie sich die Überwachungsseite für den Dienst ansehen, wird das Existenzfeld darauf gesetzt. Aber die Regel scheint einfach nicht eingehalten zu werden. Mit einem Dienst, der so konzipiert ist, dass er fehlschlägt (dh nur ein Shell-Skript, das das Datum exit 1wiedergibt und dies tut ), wird die Überwachung immer noch schnell aufgehoben. Wenn ich "Monit Monitor Joe-Test" verwende, wird die Überwachung nach einem Fehler beendet. Mit "Monit Start Joe-Test" gibt es nach 2 Versuchen auf.
Joe Shaw
Nehmen Sie einfach das heraus, wenn 5 Neustarts innerhalb von 5 Zyklen, dann Timeout, dann wird das Monit-System es nicht aufheben.