Alternatywa dla Daemontools (djbtools) do nadzorowania procesów unixowych?


26

Użyłem Daemontools, aby zapewnić prosty i niezawodny sposób nadzorowania usług Unix na moich serwerach. Działa dobrze, ale wymaga innego sposobu myślenia ( The DJB Way ), a niektóre typowe skargi to:

  • Znaczniki czasu oparte na TAI64N
  • Nie przechowuje skryptów w /etc/init.d (lub (/usr/local)/etc/rc.d)
  • Nie zawsze działa ze skryptami takimi jak apachectl. Niektóre skrypty wymagają przepisania.

Pamiętam, że niektóre podobne demony „nadzorcy / stróża” pracowały około dwa lata temu, ale niektóre nadal były nieco szorstkie.

Jeśli przeszedłeś z Daemontools na coś innego, co wybrałeś i czy zadziałało to dobrze? Czy RedHat lub Ubuntu są domyślnie dostarczane z narzędziami nadzorującymi procesy?

Odpowiedzi:


16

Hrm, jeśli używasz Ubuntu, ich nowy proces inicjowania, upstart , obejmuje poziom nadzoru procesu. Może być używany do standardowego uruchamiania i zatrzymywania usług, skryptów inicjujących la SysV, a także może monitorować uruchomione aplikacje i odradzać je, jeśli umrą.

Za pomocą inittab możesz także wdrożyć proces ponownego uruchamiania biednego człowieka, w zależności od twoich potrzeb.

Jeśli przede wszystkim szukasz czegoś, co pozwoli ci mieć oko na proces, aby upewnić się, że zawsze działa, a następnie uruchom go ponownie, gdy nie jest, miałem wielkie szczęście z restartem . Niestety, jedynym źródłem, o którym wiem, jest pakiet Debian. Jest to jednak bardzo mała i prosta aplikacja, w zasadzie tylko jeden plik .c i .h z plikiem make. Kompilowanie go ze źródłowego archiwum Debiana na Red Hacie jest trywialne (nawet zrobiłem RPM tego przy poprzedniej pracy).

Ostatnią opcją, o której słyszałem, ale której nie użyłem, jest Inspektor . Wygląda na obiecujące narzędzie, ale restartowane działało w przeszłości dla mnie wystarczająco dobrze, na to, czego potrzebowałem, że jeszcze nie zadałem sobie z tym trudu.


12

+1 za runit. Więcej funkcji i elastyczność niż w daemontools, kompatybilna z istniejącymi argumentami i opcjami daemontools. Całkiem schludnie.

Ale jak wspomniałeś, wiele narzędzi ma własne pliki binarne kontrolne, apache2ctl, ejabberdctl, poundctl, collectd itp. I chociaż istnieją hacki, czasem lepiej po prostu trzymać się dostarczonych narzędzi, głównie wtedy, gdy nie jesteś pewien najczystszego możliwe wdrożenie. Zazwyczaj robię kompromis i większość usług działa pod nadzorem runita. Pozostałe można uruchamiać w trywialny sposób.


1
+1 Warto wspomnieć, że runsvpolecenie od runitobsługuje niestandardowe elementy sterujące, dzięki czemu można zrestartować system w oparciu o natywne pliki binarne sterowania demona.
pilcrow

4

Cóż, jest runit . Nie mogę powiedzieć, jakie są różnice i podobieństwa do demonów, ale sądząc po stronie internetowej Bersteina, powiedziałbym, że istnieje wyraźny wpływ Bernsteina.


2
Głosuję za runitem, biorąc pod uwagę, że możesz upuścić go w układzie SysVInit i poprosić o przejęcie /etc/init.d/ <nazwa skryptu> w dość przejrzysty sposób.
Avery Payne,


4

Jako alternatywa dla już wspomniano daemonizei daemontoolsnie jest demon znajomość pakietu libslack.

daemon jest dość konfigurowalny i dba o wszystkie żmudne rzeczy demona, takie jak automatyczne restartowanie, logowanie lub obsługa plików pidfile.



3

Istnieje również narzędzie demona libslack napisane w C i dostępne na różne platformy (uniksowe).

Jest dość konfigurowalny i dba o wszystkie żmudne rzeczy demona, takie jak automatyczne restartowanie, logowanie lub obsługa plików pidfile.


2

Ubuntu zawiera Upstart - niewiele o nim wiem, ale wiem, że ma możliwości „nadzorcy”. Uruchomiona przez Apple jest kolejną opcją (ten artykuł w Wikipedii ma fajną sekcję „zobacz także”, która zawiera także listę innych, w tym Upstart & RunIt).

Wszystkie mają swoje dobre strony i swoją własną markę übersuck - Ilekroć ktoś pyta mnie o programy „nadzorujące proces” / „watchdog”, zawsze zadaję to samo pytanie: dlaczego potrzebujesz takiego?


-2

Nie ma w tym celu żadnych popularnych / konsensusowych narzędzi, ponieważ każdy, kto pójdzie tą drogą, zdaje sobie sprawę, że to ślepa uliczka. Jeśli długo działające procesy zawodzą zbyt często, aby prosty monitoring był wystarczająco dobry, przestań ich używać i przenieś swój kod do czegoś, co będzie bardziej zależało od zdarzeń.

edycja: jak Chris wskazuje poniżej, czasami jesteś całkowicie opanowany, w takim przypadku zadanie cron * / 1, które szuka procesu / pliku pid, uruchamia start / restart, jeśli go brakuje, i wysyła wyniki do wiadomości e-mail do odpowiedzialnego programista / menedżer produktu to twoja awaryjna pozycja.


3
Łatwiej powiedzieć niż zrobić. ;-) Czasami masz aplikacje, które musisz uruchamiać, bez względu na to, jak niestabilne lub gburowate mogą być, a wszystko, co możesz zrobić, aby je uruchomić, pomoże zmniejszyć liczbę połączeń telefonicznych o 3 nad ranem. W żadnym razie nie jest idealny, ale czasami jest tak dobry, jak to tylko możliwe.
Christopher Cashell

1
Odpowiedzi te pomijają dwie funkcje nadzorców procesorów: zdolność do zarządzania grupami procesów jako jedną jednostkę i zdolność do zarządzania zależnościami. Na przykład witryna może obejmować serwer WWW, serwer bazy danych i kilka aplikacji internetowych działających jako procesy zewnętrzne. Procesy te mogą mieć zależności - np. Baza danych musi być uruchomiona przed aplikacją WWW. Dobry nadzorca procesu pozwoli ci uruchomić i zatrzymać tę grupę procesów za pomocą jednego polecenia i upewni się, że wszystko zacznie się we właściwej kolejności.
larsks

1
W idealnym świecie wszystko działałoby idealnie. Niestety nie jest to idealny świat.
Matt

Problem nie zawodzi zbyt często. Problem nie działa raz w tygodniu i nie można go natychmiast uruchomić ponownie . To nie jest prawdziwa odpowiedź.
dan3

@ChristopherCashell jest na dobrej drodze. Nadzór w aplikacji jest zwykle nadmiar inżynierii (i zdarza się, że nie jest to filozofia UNIX). Oprogramowanie można założyć, że zawsze jest niedoskonałe, bez względu na to, ile wysiłku włożono w proaktywne naprawianie każdej awarii. Nadzór jest wyraźną, zewnętrzną warstwą ... polisą ubezpieczeniową. Lepiej jest utrzymać usługi produkcyjne bez względu na wszystko, nawet jeśli „nie powinny się one zawieszać”, ponieważ tak naprawdę dzieje się tak. Wolę restart usługi, zaloguj wyjątek i napraw go rano. (Innym przypadkiem do rozważenia jest trzepotanie usługi).
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.