Wie wähle ich zwischen Upstart, Runit, Supervisor, Daemontools usw., um einen Prozess neu zu starten, wenn er beendet ist? (Prozessüberwachung/-monitoring)

Wie wähle ich zwischen Upstart, Runit, Supervisor, Daemontools usw., um einen Prozess neu zu starten, wenn er beendet ist? (Prozessüberwachung/-monitoring)

Ich habe einen Nginx-Webproxy, einen Gunicorn-Webserver und eine Python/Flask-Webanwendung. Der Gunicorn-Prozess ist anscheinend abgestürzt, und ich möchte das in Zukunft verbessern, indem ich nach einem Dienstprogramm suche, das den Gunicorn-Prozess überwachen und neu starten kann, falls er erneut abstürzt.

Ich habe mehrere Dienstprogramme zur Prozessüberwachung gefunden, die diese Aufgabe erfüllen können:

  • daemontools
  • gestartet
  • starte es
  • s6
  • Aufsicht
  • SystemD
  • Emporkömmling
  • ...

Gibt es einen umfassenden Artikel, der die verschiedenen Dienstprogramme zum Überwachen und Neustarten eines Prozesses vergleicht und gegenüberstellt?

https://en.wikipedia.org/wiki/Prozessüberwachung

Antwort1

  • runitist ein Nachfolger von daemontools(beide sind in geschrieben c)

  • supervisordVerwendet python.

Ich habe runitmit socklogvom gleichen Autor im Inneren verwendetAlpine Linux lxcContainer für etwa 10 Monate zur Verwaltung web/ database& verschiedene andere Dienste. Es ist leicht, einfach zu verwalten und ich hatte keine Dienstausfälle. Der Protokollierungs-Daemon läuft auch als eigener Benutzer und nicht als eigener, rootwas schön ist.

Abonnierenverwendet runitals initSystem und auch fürDienstaufsicht(Durchsuchen Sie den Paketbaum nach runDateien mit Beispielskripten runit).

Antwort2

Wenn Ihre Distribution Upstart verwendet, sollten Sie es verwenden. Es bietet eine sehr grundlegende Unterstützung für den Neustart von Jobs, enthält jedoch Einschränkungen, die Neustartschleifen verhindern können, wie von @EEAA erwähnt.

Wenn Ihr Betriebssystem ein anderes Init-Programm verwendet, ändern Sie es nicht. Ich kann Ihnen bei den anderen Tools, die Sie erwähnt haben, nicht wirklich helfen, da ich im Allgemeinen Ubuntu verwende, wo Upstart noch vorhanden ist (ab der neuesten LTS), sodass ich wenig damit zu tun habe. Aber es ist keine schwierige Aufgabe, ein einfaches Skript zu erstellen, das voncroneinmal pro Minute (oder öfter, z. B. in einer Schleife), wodurch überprüft werden kann, ob ein PID vorhanden ist, und bei einem Fehler ein Neustart durchgeführt wird.

verwandte Informationen