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 foo@example.com 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?


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.


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.


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

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

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.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.