
サービスが monit で正常である場合は、他の監視システム (nagios) にリンクするためにシェル スクリプトを実行する必要があります。
基本的に私が達成する必要があるのは、サービスが再起動されたときに monit がアラートを送信し、サービスが正常なときに別のアラートを送信するようにすることです。
私は次のことを試しましたが、うまくいきませんでした:
if 1 restarts within 1 cycles then exec "<send WARNING alert here>"
if 0 restarts within 5 cycles then exec "<send OK alert here>"
上記は、「エラー: アクション レート ステートメント ''OK'' ではゼロまたは負の値は許可されません」というエラーを報告しています。
if 1 restarts within 1 cycles then exec "<send WARNING alert here>"
else if succeeded for 5 cycles then exec "<send OK alert here>"
上記は「else」について不満を述べています...「Xが再起動した場合」は「else」をサポートしていないと思います
これを実現するための提案はありますか?
答え1
monit が NAGIOS にフィードしているとおっしゃっているので、NAGIOS を使用して面倒な作業 (通知の決定や送信など) を行わないのはなぜでしょうか。monit が再起動を監視する場合は、send_nsca
再起動が発生したことを NAGIOS に通知するために使用できます。
NAGIOS は、これをパッシブ サービスで受信できます。パッシブ サービスでは、単一のアラートを通知するように設計されていますが、一定期間 (ここでは 60 分) 何も受信しない場合は、「0 OK」を返すスクリプトを呼び出し、再起動通知の後にその時間だけ「OK」を通知するように、フレッシュネス テストも定義されています。
define service{
use <standard template>
host_name foo
service_description bar
active_checks_enabled 0
passive_checks_enabled 1
check_command no-restarts-ok
check_freshness 1
max_check_attempts 1
normal_check_interval 60
}
そして
define command{
command_name no-restarts-ok
command_line $USER1$/check_dummy 0 OK
}