Saya perlu memiliki pesan jaringan yang dikirim ketika layanan systemd saya crash atau digantung (yaitu, memasuki kondisi gagal; Saya memantau hang dengan menggunakan WatchdogSec =). Saya perhatikan bahwa systemd yang lebih baru memiliki FailureAction =, tetapi kemudian melihat bahwa ini tidak memungkinkan perintah sewenang-wenang, tetapi hanya me-reboot / mematikan.
Secara khusus, saya perlu cara untuk mengirim satu pesan jaringan ketika systemd mendeteksi program macet, dan lainnya ketika mendeteksi pesan telah digantung.
Saya berharap jawaban yang lebih baik daripada "parsing log", dan saya butuh sesuatu yang memiliki waktu respon hampir instan, jadi saya tidak berpikir pendekatan polling itu baik; itu harus menjadi sesuatu yang dipicu oleh peristiwa yang terjadi.
Jawaban:
unit systemd mendukung OnFailure yang akan mengaktifkan unit (atau lebih) ketika unit gagal. Anda dapat meletakkan sesuatu seperti
Dan kemudian buat
[email protected]
layanan di mana Anda dapat menggunakan specifier yang diperlukan (Anda mungkin ingin setidaknya% i) untuk meluncurkan skrip atau perintah yang akan mengirim pemberitahuan.Anda dapat melihat contoh praktis di http://northernlightlabs.se/systemd.status.mail.on.unit.failure
sumber
notify%n.service
berlebihan, dan akan menghasilkan[email protected]
. Kedua,%i
harus digunakan sebagai ganti%I
, atau semua tanda hubung dalam nama akan dikonversi menjadi garis miring.Hanya cara saya untuk memberi tahu:
/etc/systemd/system/[email protected]
tambahkan ke systemd:
Di layanan lain tambahkan:
Muat ulang konfigurasi:
sumber
Saya menemukan utilitas ini yang tampaknya menyediakan ini: https://github.com/joonty/systemd_mon
sumber