Alternatif untuk Daemontools (djbtools) untuk mengawasi proses unix?


26

Saya telah menggunakan Daemontools untuk menyediakan cara yang sederhana dan dapat diandalkan untuk mengawasi layanan Unix di server saya. Ini bekerja dengan baik, tetapi membutuhkan cara berpikir yang berbeda ( The DJB Way ) dan beberapa keluhan umum adalah:

  • Stempel waktu TAI64N
  • Tidak menyimpan skrip di bawah /etc/init.d (atau (/usr/local)/etc/rc.d)
  • Tidak selalu bekerja dengan skrip seperti apachectl. Beberapa skrip perlu ditulis ulang.

Saya ingat bahwa beberapa "dasmon" pengawas / pengawas "serupa sedang bekerja sekitar dua tahun yang lalu, tetapi beberapa masih sedikit kasar di tepinya.

Jika Anda telah beralih dari Daemontools ke sesuatu yang lain, apa yang Anda pilih dan apakah itu bekerja dengan baik untuk Anda? Apakah RedHat atau Ubuntu datang dengan utilitas pengawas proses apa pun secara default?

Jawaban:


16

Hrm, jika Anda menggunakan Ubuntu, proses init baru mereka, pemula , termasuk tingkat pengawasan proses. Ini dapat digunakan untuk memulai dan menghentikan layanan standar Anda, skrip init ala SysV, dan juga dapat memantau aplikasi yang berjalan dan respawn jika mereka mati.

Anda juga dapat menerapkan proses restarter orang miskin melalui inittab, tergantung pada apa kebutuhan Anda.

Jika Anda terutama mencari sesuatu untuk mengawasi proses, untuk memastikan itu selalu berjalan, dan kemudian restart ketika tidak, saya sudah beruntung dengan restartd . Sayangnya, satu-satunya sumber untuk itu yang saya tahu adalah paket Debian. Namun, ini adalah aplikasi yang sangat kecil dan sederhana, pada dasarnya hanya satu file .c dan .h, dengan file make. Mengompilasinya dari tarball sumber Debian di Red Hat itu sepele (saya bahkan membuat RPM di pekerjaan saya sebelumnya).

Opsi terakhir yang pernah saya dengar, tetapi tidak digunakan, adalah Supervisor . Sepertinya alat yang menjanjikan, tetapi restartd telah bekerja cukup baik untuk saya di masa lalu, untuk apa yang saya butuhkan, bahwa saya belum repot-repot bermain dengannya.


12

+1 untuk runit. Lebih banyak fitur dan fleksibel daripada daemontools, kompatibel dengan argumen dan opsi daemontools yang ada. Cukup rapi.

Tetapi seperti yang Anda sebutkan banyak alat datang dengan binari kontrol mereka sendiri, apache2ctl, ejabberdctl, poundctl, collectd, dll. Dan meskipun ada hack, kadang-kadang lebih baik tetap menggunakan alat yang disediakan, terutama ketika Anda tidak yakin dengan yang terbersih. kemungkinan implementasi. Saya biasanya melakukan kompromi, dan sebagian besar layanan dijalankan di bawah pengawasan runit. Dan yang lainnya bisa diizinkan berjalan menggunakan cara sepele.


1
+1 Perlu disebutkan bahwa runsvperintah dari runitmendukung kontrol khusus, sehingga restart dapat diimplementasikan dalam hal binari kontrol asli daemon.
pilcrow

4

Nah, ada runit . Saya tidak bisa memberi tahu Anda apa perbedaan dan persamaannya dengan daemontools, tetapi jika dilihat dari situs web Berstein-esque, saya akan mengatakan ada pengaruh Bernstein yang pasti.


2
Pilihan saya adalah untuk runit, mengingat Anda dapat menjatuhkannya ke pengaturan SysVInit dan membuatnya mengambil alih /etc/init.d/ <scriptname> dengan cukup transparan.
Avery Payne


4

Sebagai alternatif dari yang telah disebutkan daemonizedan daemontools, ada perintah daemon dari paket libslack.

daemon cukup dapat dikonfigurasi dan tidak peduli tentang semua hal daemon yang membosankan seperti restart otomatis, logging atau penanganan pidfile.



3

Ada juga alat daemon libslack yang ditulis dalam C dan tersedia untuk berbagai platform (Unix).

Ini sangat dapat dikonfigurasi dan peduli tentang semua hal daemon yang membosankan seperti restart otomatis, logging atau penanganan pidfile.


2

Ubuntu hadir dengan Upstart - Saya tidak tahu banyak tentang itu tetapi saya tahu itu memang memiliki kemampuan "penyelia". Launchd Apple adalah pilihan lain (artikel Wikipedia memiliki bagian "lihat juga" yang bagus yang mencantumkan juga banyak yang lain, termasuk Upstart & RunIt).

Semuanya memiliki poin bagus dan merek khusus übersuck - Setiap kali seseorang bertanya kepada saya tentang program "pengawas proses" / "anjing penjaga", saya selalu menanyakan pertanyaan yang sama: Mengapa Anda memerlukannya?


-2

Tidak ada alat populer / konsensus komunitas untuk ini karena setiap orang yang melewati jalan ini menyadari jalan buntu. Jika proses lama Anda gagal terlalu sering untuk pemantauan sederhana menjadi cukup baik, maka berhentilah menggunakannya dan pindahkan kode Anda ke dalam sesuatu yang akan lebih didorong oleh peristiwa.

sunting: seperti yang ditunjukkan Chris di bawah, kadang-kadang Anda benar-benar terpojok, dalam hal ini tugas cron * / 1 yang mencari proses / pidfile, menjalankan start / restart jika tidak ada, dan menampilkan hasilnya dalam email ke penanggung jawab pengembang / manajer produk adalah posisi mundur Anda.


3
Lebih mudah dikatakan, daripada dilakukan. ;-) Terkadang Anda memiliki aplikasi yang terpaksa Anda jalankan, terlepas dari seberapa tidak stabil atau jeleknya itu, dan apa pun yang dapat Anda lakukan untuk membuatnya tetap berjalan akan membantu mengurangi panggilan telepon jam 3 pagi. Tidak ideal, dengan cara apa pun, tetapi kadang-kadang itu sama baiknya dengan yang didapat.
Christopher Cashell

1
Jawaban ini melewatkan dua fitur pengawas prosesor: kemampuan untuk mengelola kelompok proses sebagai satu unit dan kemampuan untuk mengelola dependensi. Misalnya, situs web Anda mungkin melibatkan server web, server basis data, dan beberapa aplikasi web yang berjalan sebagai proses eksternal. Proses-proses ini mungkin memiliki dependensi - mis., Database harus di-up sebelum aplikasi web. Pengawas proses yang baik akan membiarkan Anda memulai dan menghentikan kelompok proses ini dengan satu perintah, dan akan memastikan bahwa segala sesuatunya dimulai dalam urutan yang benar.
larsks

1
Di dunia yang ideal, semuanya akan bekerja dengan sempurna. Sayangnya ini bukan dunia yang ideal.
Matt

Masalahnya tidak terlalu sering gagal. Masalahnya gagal seminggu sekali dan tidak segera dimulai kembali . Ini bukan jawaban yang nyata.
dan3

@ChristopherCashell ada di jalur yang benar. Pengawasan di dalam aplikasi biasanya rekayasa berlebihan (dan kebetulan juga bukan UNIX Philosophy.) Perangkat lunak dapat diasumsikan selalu tidak sempurna, tidak peduli berapa banyak upaya proaktif yang dituangkan untuk memperbaiki setiap kerusakan. Pengawasan adalah lapisan eksternal yang berbeda ... suatu polis asuransi. Lebih baik menjaga agar layanan produksi tetap berjalan, apa pun yang terjadi, meskipun mereka "tidak seharusnya mogok," karena kenyataannya adalah sh% t terjadi. Saya lebih suka restart layanan, mencatat pengecualian dan memperbaikinya di pagi hari. (
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.