Saya mencoba untuk memulai program (Resque) tetapi perlu sedikit waktu sebelum pidfile ditulis. Jadi, saya pikir Monit berpikir program belum dimulai dan memulai satu atau dua program sebelum sebelum pidfile yang pertama ditulis.
Bagaimana saya menunda waktu pemeriksaan Monit lagi, hanya untuk proses ini? Atau haruskah saya menyelesaikan ini dengan cara lain?
Jawaban:
Bagaimana saya menunda waktu pemeriksaan Monit lagi, hanya untuk proses ini?
Apa yang ingin Anda capai dapat dilakukan melalui fitur " SERVICE POLL TIME " dari monit
Dokumentasi monit mengatakan
Salah satu metode untuk menyesuaikan polling layanan adalah
SETIAP [angka] SIKLUS
Contoh:
Atau haruskah saya menyelesaikan ini dengan cara lain?
Saya juga melakukan upaya awal untuk memantau pekerjaan resque dengan monit karena monit adalah daemon yang sangat ringan tetapi akhirnya diselesaikan dengan ALLAH. Saya tahu, saya tahu ALLAH lebih haus sumber daya dibandingkan dengan monit tetapi dalam kasus resque kami menemukan itu cocok.
sumber
Anda dapat memeriksa layanan tertentu pada interval yang berbeda dari standar ...
Lihat LAYANAN POLL SAAT dalam dokumentasi Monit.
Contoh untuk program Resque Anda adalah memeriksa jumlah siklus yang berbeda:
atau dari bagian contoh:
atau Anda dapat memanfaatkan cek gaya cron.
atau jika Anda mengalami startup lambat, Anda dapat memperpanjang batas waktu dalam perintah mulai layanan:
sumber
with timeout 90 seconds
persis apa yang saya inginkan. Terima kasih.Anda juga dapat memeriksa apakah ada yang gagal selama X kali berturut-turut:
Atau untuk X kali dalam polling Y:
Atau keduanya:
( dari sini )
sumber
Seorang anggota tim saya datang dengan solusi yang agak cerdik yang memungkinkan monit untuk sering memeriksa (setiap menit) , tetapi begitu telah mencoba untuk me-restart layanan (yang memakan waktu ~ 10 menit) itu akan menunggu masa tenggang yang ditentukan sebelum mencoba untuk memulai lagi.
Ini mencegah menunggu terlalu lama di antara pemeriksaan, yang dikombinasikan dengan awal yang lambat adalah dampak yang jauh lebih besar bagi pelanggan. Ini bekerja dengan menggunakan skrip perantara yang bertindak sebagai flag untuk menunjukkan monit sudah mengambil tindakan dari kegagalan terakhir.
Jika bambu (aplikasi web mulai lambat) turun selama 3 menit berturut-turut, mulai ulang, TETAPI hanya jika skrip mulai ulang belum berjalan.
Script yang dipanggil memiliki sleep yang ditentukan yang menunggu LEBIH LAMA kemudian waktu mulai paling lambat untuk layanan (dalam kasus kami, kami berharap untuk menyelesaikan dalam ~ 10, jadi kami tidur selama 15)
sumber
Versi Monit (5.16) saat ini mendukung batas waktu untuk skrip mulai dengan sintaks:
The docs menyatakan:
Apa yang akan dilakukan nilai "batas waktu".
sumber
timeout
harus berlaku untuk dimulai dan restart. Sejauh yang saya mengerti, ia menunda sebelum Monit memeriksa bahwa: a) sedang berjalan, b) file PID yang diharapkan dibuat dan c) proses dengan PID yang diharapkan sedang berjalan. Saya punya beberapa masalah untuk membuatnya bekerja di mana aplikasi yang ditentukan hanyalah sebuah skrip yang memotong proses nyata kemudian kembali tanpa mengetahui apa yang terjadi dengan proses tersebut. Mendapatkannya untuk bekerja dalam kasus ini sangat menyebalkan.START DELAY
.