Frage Alternative zu Daemontools (djbtools) zur Überwachung von Unix-Prozessen?


Ich habe gebraucht Daemontole um eine einfache und zuverlässige Möglichkeit zu bieten, Unix-Dienste auf meinen Servern zu überwachen. Es funktioniert gut, aber es erfordert eine andere Art zu denken (Der DJB Weg) und einige häufige Beschwerden sind:

  • TAI64N basierte Zeitstempel
  • Speichert Skripte nicht unter /etc/init.d (oder (/usr/local)/etc/rc.d)
  • Funktioniert nicht immer mit Skripten wie apachectl. Einige Skripte müssen neu geschrieben werden.

Ich erinnere mich, dass einige ähnliche "Supervisor / Watchdog" -Dämonen vor etwa zwei Jahren in den Werken waren, aber einige waren immer noch ein bisschen rau an den Rändern.

Wenn Sie von Daemontools zu etwas anderem gewechselt haben, was haben Sie gewählt und hat es gut für Sie funktioniert? Ist RedHat oder Ubuntu standardmäßig mit einem Prozessüberwachungsprogramm ausgestattet?


26
2017-10-18 23:45


Ursprung




Antworten:


Hrm, wenn Sie Ubuntu verwenden, ihren neuen Init-Prozess, Emporkömmling, beinhaltet eine Ebene der Prozessüberwachung. Es kann für das standardmäßige Starten und Stoppen von Diensten verwendet werden, wie zum Beispiel SysV-Init-Skripte, und es kann laufende Anwendungen überwachen und sie neu starten, wenn sie sterben.

Sie können auch den Prozess-Neustart eines Poor Man über inittab implementieren, je nachdem, was Sie benötigen.

Wenn Sie in erster Linie nach etwas suchen, um einen Prozess im Auge zu behalten, um sicherzustellen, dass er immer ausgeführt wird, und ihn dann neu startet, wenn dies nicht der Fall ist, hatte ich großes Glück mit neu gestartet. Leider ist die einzige mir bekannte Quelle das Debian-Paket. Es ist jedoch eine sehr kleine und einfache Anwendung, im Grunde nur eine .c und .h Datei mit einer make-Datei. Das Kompilieren aus dem Debian-Quell-Tarball auf Red Hat ist trivial (ich habe bei meinem vorherigen Job sogar einen RPM davon gemacht).

Eine letzte Option, von der ich gehört habe, aber nicht verwendet wird, ist Supervisor. Es sieht nach einem vielversprechenden Werkzeug aus, aber der Neustart hat in der Vergangenheit gut genug für mich funktioniert, für das, was ich brauchte, dass ich mich noch nicht darum gekümmert habe, damit zu spielen.


15
2017-10-19 15:30





+1 für Runit. Mehr Funktionen und Flexibilität als Daemontools, kompatibel mit bestehenden Daemontools Argumente und Optionen. Ziemlich ordentlich.

Aber wie Sie erwähnt haben viele Werkzeuge kommen mit ihren eigenen Control-Binärdateien, Apache2ctl, Ejabberdctl, Poundctl, Collectd usw. Und obwohl Hacks existieren, ist es manchmal besser, an die mitgelieferten Tools zu bleiben, vor allem, wenn Sie nicht sicher sind, die sauberste mögliche Umsetzung. Normalerweise mache ich einen Kompromiss und lasse die meisten Services unter der Kontrolle von runit laufen. Und den anderen kann erlaubt werden, auf die triviale Weise zu laufen.


13
2017-10-19 17:10



+1 Es ist erwähnenswert, dass die runsv Befehl von runit unterstützt benutzerdefinierte Steuerelemente, so dass ein Neustart in Bezug auf die nativen Steuerungsbinärdateien eines Dämons implementiert werden kann. - pilcrow


Nun, da ist es starte es. Ich kann Ihnen nicht sagen, welche Unterschiede und Gemeinsamkeiten es mit Daemontools gibt, aber nach der Berstein-artigen Webseite zu urteilen, würde ich sagen, dass es einen bestimmten Bernstein-Einfluss gibt.


4
2017-10-19 00:31



Meine Stimme ist für runit, da man sie in ein SysVInit Arrangement fallen lassen kann und /etc/init.d/ <scriptname> ziemlich transparent übernehmen kann. - Avery Payne


Als Alternative zu den bereits genannten daemonize und daemontools, dort ist der Daemon Befehl des libslack-Pakets.

daemon ist ziemlich konfigurierbar und kümmert sich um alle lästigen Daemon-Sachen wie automatischen Neustart, Protokollierung oder Pidfile-Behandlung.


4
2018-06-09 14:42





Fedora scheint bereit zu sein, zu systemd zu wechseln: http://pointer.de/blog/projects/systemd.html


3
2017-10-19 17:24





Es gibt auch libslacks Daemon Werkzeug, das in C geschrieben ist und für verschiedene (Unix) Plattformen verfügbar ist.

Es ist ziemlich konfigurierbar und kümmert sich um all die langweiligen Daemon-Sachen wie automatischen Neustart, Logging oder Pidfile-Handling.


3
2018-06-09 12:45





Da ist Supervisor


2
2017-10-19 16:54





Ubuntu kommt mit Emporkömmling - Ich weiß nicht viel darüber, aber ich weiß, dass es "Supervisor" Fähigkeiten hat. Äpfel gestartet ist eine weitere Option (dieser Wikipedia-Artikel hat einen schönen "siehe auch" Abschnitt, der auch eine Reihe anderer auflistet, einschließlich Upstart & RunIt).

Alle haben ihre guten Seiten und ihre eigene spezielle Marke von übersuck - Wann immer mich jemand nach "Prozess-Supervisor" / "Watchdog" -Programmen fragt, stelle ich immer die gleiche Frage: Warum brauchst du eine?


1
2017-10-19 15:33





Es gibt keine populären / Community-Konsens-Tools dafür, denn jeder, der diesen Weg geht, realisiert seine Sackgasse. Wenn Ihre lang laufenden Prozesse zu oft fehlschlagen, damit das einfache Monitoring gut genug ist, dann verwenden Sie sie nicht mehr und verschieben Sie Ihren Code in etwas, das eher ereignisgesteuert ist.

edit: wie Chris unten zeigt, sind Sie manchmal völlig in die Enge getrieben, in welchem ​​Fall ein * / 1 cron-Job, der nach dem Prozess / pidfile sucht, einen Start / Neustart durchführt, falls er fehlt, und die Ergebnisse in einer E-Mail an die Verantwortlichen ausgibt Entwickler / Produkt-Manager ist Ihre Fallback-Position.


-3
2017-10-19 16:17



Leichter gesagt als getan. ;-) Manchmal haben Sie Anwendungen, die Sie ausführen müssen, unabhängig davon, wie instabil oder beschissen sie sind, und alles, was Sie tun können, um sie am Laufen zu halten, wird dazu beitragen, die Telefonanrufe um 3 Uhr zu reduzieren. Nicht ideal, aber manchmal ist es so gut wie es geht. - Christopher Cashell
Diese Antworten gehen auf zwei Eigenschaften von Prozessor-Supervisors nicht hinaus: die Fähigkeit, Gruppen von Prozessen als eine Einheit zu verwalten und die Fähigkeit, Abhängigkeiten zu verwalten. Ihre Website kann beispielsweise einen Webserver, einen Datenbankserver und mehrere Webanwendungen umfassen, die als externe Prozesse ausgeführt werden. Diese Prozesse können Abhängigkeiten aufweisen - z. B. muss die Datenbank vor der Webanwendung geöffnet sein. Ein guter Prozess-Supervisor lässt Sie diese Gruppe von Prozessen mit einem einzigen Befehl starten und stoppen und stellt sicher, dass die Dinge in der richtigen Reihenfolge starten. - larsks
In einer idealen Welt würde alles perfekt funktionieren. Leider ist das keine ideale Welt. - Matt
Das Problem ist nicht zu oft scheitern. Das Problem tritt einmal wöchentlich auf und wird nicht neu gestartet sofort. Dies ist keine echte Antwort. - dan3
@ ChristopherCashell ist auf dem richtigen Weg. Aufsicht Innerhalb Eine App ist in der Regel über-engineering (und es ist auch nicht UNIX-Philosophie.) Software kann immer unvollkommen sein, egal wie viel proaktive Anstrengungen unternommen werden, um jeden Absturz zu beheben. Supervision ist eine eigenständige, externe Schicht ... eine Versicherungspolice. Es ist besser, die Produktionsdienste in Gang zu halten, egal was passiert, selbst wenn sie "nicht abstürzen sollten", weil die Realität so ist. Ich würde lieber einen Neustart des Dienstes machen, die Ausnahme protokollieren und sie am Morgen reparieren. (Service-Flattern ist ein weiterer zu betrachtender Fall.) - Barry