Ich versuche, ein Programm (Resque) zu starten, aber es dauert ein bisschen, bis eine PID-Datei geschrieben wird. Daher denke ich, dass Monit denkt, dass das Programm noch nicht gestartet wurde und ein oder zwei weitere Programme startet, bevor das Pidfile des ersten geschrieben wird.
Wie verzögere ich die erneute Überprüfung durch Monit, nur für diesen Vorgang? Oder soll ich das anders lösen?
Antworten:
Wie verzögere ich die erneute Überprüfung durch Monit, nur für diesen Vorgang?
Was Sie erreichen möchten, können Sie mit der Funktion " SERVICE POLL TIME " von monit erledigen
Monit Dokumentation sagt
Eine der Methoden zum Anpassen der Dienstabfrage ist
JEDE [Anzahl] ZYKLEN
Beispiel:
Oder soll ich das anders lösen?
Ich habe auch den ersten Versuch unternommen, Resque-Jobs mit monit zu überwachen, da monit ein sehr leichter Daemon ist, der sich aber schließlich mit GOTT abgefunden hat. Ich weiß, ich weiß, dass GOTT im Vergleich zu Monit ressourcenhungriger ist, aber im Falle von Resque fanden wir, dass es eine gute Übereinstimmung ist.
quelle
Sie können einen bestimmten Dienst in einem anderen Intervall als dem Standardintervall überprüfen.
Siehe SERVICE- ABRUFZEIT in der Monit-Dokumentation.
Ein Beispiel für Ihr Resque-Programm wäre die Überprüfung einer anderen Anzahl von Zyklen:
oder aus dem Beispielteil:
Oder Sie können die Cron-Style-Checks nutzen.
Bei einem langsamen Start können Sie das Zeitlimit im Befehl service start verlängern:
quelle
with timeout 90 seconds
war genau das, was ich wollte. Vielen Dank.Sie können auch überprüfen, ob X-mal hintereinander ein Fehler aufgetreten ist:
Oder für X-mal innerhalb von Y-Umfragen:
Oder beides:
( von hier )
quelle
Ein Mitglied meines Teams hat eine ziemlich clevere Lösung gefunden, mit der die Überwachung häufig (jede Minute) überprüft werden kann. Wenn jedoch versucht wurde, den Dienst neu zu starten (dies dauert ca. 10 Minuten), wartet die Überwachung eine bestimmte Frist, bevor sie gestartet wird nochmal.
Dies verhindert, dass zu lange zwischen den Überprüfungen gewartet wird, was in Verbindung mit einem langsamen Start für die Kunden eine viel größere Auswirkung hat. Es funktioniert mithilfe eines Zwischenskripts, das als Flag fungiert, um anzuzeigen, dass die Überwachung bereits nach dem letzten Fehler aktiv ist.
Wenn bamboo (langsam startende Webanwendung) 3 Minuten hintereinander nicht funktioniert, starten Sie neu, ABER nur, wenn noch kein Neustart-Skript ausgeführt wird.
Das aufgerufene Skript hat einen festgelegten Ruhezustand, der auf LÄNGER wartet, dann auf die langsamste Startzeit für den Dienst (in unserem Fall erwarten wir, in ~ 10 zu enden, sodass wir für 15 schlafen).
quelle
Die aktuelle Version von Monit (5.16) unterstützt ein Timeout für die Startskripte mit der Syntax:
In den Dokumenten heißt es :
Welches ist, was der "Timeout" -Wert tun wird.
quelle
timeout
sollte sowohl für Starts als auch für Neustarts gelten. Soweit ich weiß, verzögert es sich, bis Monit überprüft, ob: a) ausgeführt wird, b) die erwartete PID-Datei erstellt wird und c) derzeit ein Prozess mit der erwarteten PID ausgeführt wird. Ich hatte einige Probleme damit, es zum Laufen zu bringen, wenn die angegebene Anwendung nur ein Skript war, das den eigentlichen Prozess auslöste, und dann zurückkam, ohne zu wissen, was mit dem Prozess geschah. In diesem Fall war es ein Schmerz, es zum Laufen zu bringen.START DELAY
.