Альтернатива Daemontools (djbtools) для нагляду за Unix процесами?


26

Я використовував Daemontools, щоб забезпечити простий і надійний спосіб контролювати послуги Unix на своїх серверах. Це добре працює, але для нього потрібен інший спосіб мислення ( The DJB Way ), і деякі поширені скарги:

  • Часові позначки на основі TAI64N
  • Не зберігає сценарії під /etc/init.d (або (/usr/local)/etc/rc.d)
  • Не завжди працює з сценаріями, такими як apachectl. Деякі сценарії потрібно переписати.

Я пам’ятаю, що деякі подібні демони «наглядача / сторожового» були в роботах близько двох років тому, але деякі були ще трохи грубі по краях.

Якщо ви перейшли з Daemontools на щось інше, що ви обрали і чи добре це працювало для вас? Чи RedHat або Ubuntu за замовчуванням постачаються з будь-якими утилітами для нагляду за процесом?

Відповіді:


16

Hrm, якщо ви використовуєте Ubuntu, їх новий процес init, запущений , включає рівень нагляду за процесом. Він може використовуватися для ваших стандартних запуску та зупинки послуг, сценаріїв a la SysV init, а також може контролювати запущені програми та відновлювати їх, якщо вони загинуть.

Ви також можете здійснити перезапуск процесу бідної людини через inittab, залежно від ваших потреб.

Якщо ви в першу чергу шукаєте що - то , щоб стежити за процесом, щоб переконатися , що він завжди працює, а потім перезапустити його , коли це не так , у мене була велика удача з restartd . На жаль, єдиним джерелом для мене, про який я знаю, є пакет Debian. Однак це дуже маленьке і просте додаток, в основному це лише один .c і .h файл з файлом make. Скомпілювати його з вихідного тарболу Debian на Red Hat є тривіальним (я навіть зробив оберт із нього на своїй попередній роботі).

Остаточний варіант, про який я чув, але не використовував, - це Supervisor . Це виглядає як багатообіцяючий інструмент, але restartd досить добре працював для мене в минулому, для того, що мені було потрібно, що я ще не намагався з ним грати.


12

+1 для пробігу. Більш функціональні та гнучкіші ніж daemontools, сумісні з існуючими аргументами та параметрами daemontools. Досить акуратно.

Але, як ви згадали, багато інструментів оснащені власними бінарними файлами, apache2ctl, ejabberdctl, poundctl, colled тощо. І хоча хаки існують, іноді просто краще дотримуватися інструментів, що постачаються, в основному, коли ви не впевнені в найчистіших умовах можлива реалізація. Зазвичай я йду на компроміс, і більшість послуг працюють під наглядом runit. А іншим можна дозволити бігати за допомогою тривіального способу.


1
+1 Варто згадати, що runsvкоманда runitпідтримує користувальницькі елементи керування, щоб перезапуск міг бути реалізований з точки зору нативної бінарної системи управління демона.
pilcrow

4

Ну, там є біг . Я не можу вам сказати, у чому його відмінності та схожість з демонтолами, але, судячи з веб-сайту Berstein-esque, я б сказав, що існує певний вплив Бернштейна.


2
Я голосую за пробіг, враховуючи, що ви можете залишити його в домовленості SysVInit і змусити його /etc/init.d/ <scriptname> досить прозоро.
Avery Payne


4

В якості альтернативи вже згадуваному daemonizeі daemontools, існує команда демона пакету Libslack.

daemon є цілком настроюваним та дбає про всі стомлюючі демон-речі, такі як автоматичний перезапуск, ведення журналів або обробка файлами pidfile.



3

Також є інструмент демонів Libslack, написаний на C та доступний для різних (Unix) платформ.

Це цілком настроюється та дбає про всі нудні речі демона, такі як автоматичний перезапуск, ведення журналів або обробка файлами pidfile.


2

Ubuntu поставляється з Upstart - я не знаю багато про це, але я знаю, що він має "супервізорні" можливості. Запуск Apple - це ще один варіант (що у статті Вікіпедії є хороший розділ "див. Також", який також містить список інших, включаючи Upstart & RunIt).

Усі вони мають свої хороші моменти та свій власний бренд übersuck - Щоразу, коли хтось запитує мене про програми "керівник процесів" / "сторожовий", я завжди задаю одне і те ж питання: навіщо вам це потрібно?


-2

Для цього не існує популярних інструментів / консенсусу громадськості, тому що кожен, хто йде цією дорогою, усвідомлює тупик. Якщо ваші довгі запущені процеси надто часто виходять з ладу, щоб простий моніторинг був достатньо хорошим, тоді перестаньте використовувати їх і перемістіть свій код всередину чогось, що спричинить більше подій.

редагувати: як Кріс вказує нижче, іноді ви повністю загнані в кут; у цьому випадку робота * / 1 cron, яка шукає процес / pidfile, запускає пуск / перезапуск, якщо його немає, і передає результати в електронному листі відповідальному розробник / менеджер продуктів - це ваша резервна позиція.


3
Простіше сказати, ніж зробити. ;-) Іноді у вас є програми, які ви змушені запускати, незалежно від того, наскільки вони можуть бути нестабільними чи хитрими, і все, що ви можете зробити, щоб тримати їх роботу, допоможе зменшити дзвінки в 3 години ночі. Не ідеально, ні в якому разі, але іноді це так добре, як виходить.
Крістофер Кашелл

1
Ця відповідь не вистачає на дві функції контролерів процесорів: можливість керувати групами процесів як єдиного підрозділу та здатність управляти залежностями. Наприклад, ваш веб-сайт може включати веб-сервер, сервер баз даних та кілька веб-додатків, що працюють як зовнішні процеси. Ці процеси можуть мати залежність - наприклад, перед веб-додатком потрібно створити базу даних. Хороший керівник процесів дозволить вам запустити та зупинити цю групу процесів однією командою, і переконається, що все починається у правильному порядку.
larsks

1
В ідеальному світі все просто спрацювало б ідеально. На жаль, це просто не ідеальний світ.
Мет

Проблема не вдається занадто часто. Проблема виходить з ладу один раз на тиждень і не перезапускається негайно . Це не справжня відповідь.
dan3

@ChristopherCashell на вірному шляху. Контроль всередині додатки, як правило , більш-інжиніринг (і це також відбувається не бути UNIX філос.) Програмне забезпечення може припустити , щоб завжди бути недосконалою, незалежно від того , скільки зусиль проактивного вливається зафіксувати кожну аварію. Нагляд - це чіткий зовнішній рівень ... страховий поліс. Краще продовжувати виробничі послуги незважаючи ні на що, навіть якщо вони "не повинні вийти з ладу", тому що реальність sh% t відбувається. Я вважаю за краще перезапустити сервіс, записати виняток і виправити його вранці. (
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.