Frage

Wie soll ich ein Skript für den Daemontools-Supervisor erstellen?

Ich habe angefangen, D zu verwenden.J.Die Daemontools von Bernstein halten einige Prozesse am Laufen und funktionieren einwandfrei.Aber jetzt muss ich ein paar zusätzliche Bedingungen für diese Prozesse überwachen und habe keine guten Informationen dazu gefunden.

Mein Szenario sieht so aus, dass einige Prozesse für eine Web-App (virtuelle Pharo-Smalltalk-Maschinen) ausgeführt werden und diese über http antworten, jeder einzelne in seinem Port (das ist für den Lastausgleich).Ich würde diese gerne irgendwie anpingen, um zu überprüfen, ob sie nicht nur ausgeführt werden, sondern auch auf http-Anfragen reagieren.Wenn sie länger als 30 Sekunden nicht in einer bestimmten Weise auf eine Anfrage reagieren, sollten sie als abgestürzt behandelt und einfach neu gestartet werden.

Ist das mit daemontools überhaupt möglich?Wenn ja, wie soll ich dieses Skript schreiben und wo soll ich es platzieren?oder wo ist die Dokumentation dazu?

War es hilfreich?

Lösung

Die einfachste Lösung besteht darin, eine weitere Daemontool-Aufgabe mit einem Skript zu erstellen, das 30 Sekunden lang schläft und dann prüft, ob der Dienst vorhanden ist (z. B. mit wget oder curl).Wenn der Dienst nicht rechtzeitig reagiert, können Sie den Dienst neu starten (svc -t yourapp) und/oder eine Benachrichtigung senden.Das Run-Skript des neuen Dienstes könnte so einfach aussehen:

#!/bin/sh
sleep 30
if ! wget --quiet --timeout=5 --delete-after "http://yourapp.com/" ; then
  svc -t /etc/service/yourapp
fi

Ich habe auch gute Erfahrungen mit Tools wie gemacht Munin.Auch hier müssen Sie ein Skript bereitstellen, das Informationen über den Status Ihres Bildes bereitstellt.Wenn Sie Ihre Bilder mit einem REST-Dienst einrichten, können Sie sogar wirklich interessante Metriken wie aktive Sitzungen, inaktive Sitzungen, GC-Parameter, Speicherverbrauch, Datenbankstatistiken usw. bereitstellen.Das Tool zeichnet dann im Laufe der Zeit schöne Diagramme und ermöglicht es Ihnen, Grenzen festzulegen, um benachrichtigt zu werden, wenn sich etwas schlecht verhält.

Andere Tipps

Um festzustellen, ob der Dienst reagiert, können Sie Curl verwenden (eine perfekte Lösung für HTTP und Befehlszeilen-/Shell-Skripte).

curl --connect-timeout 10 http://8.8.8.8 
curl: (28) connect() timed out!

und Sie können anspruchsvollere Dinge schreiben, z. B. überprüfen, ob die Antwort 200 (OK) ist usw.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top