Monitoring

當服務正常時執行 monit

  • April 16, 2013

如果服務可以通過 monit 執行,我需要執行 shell 腳本,以連結到我的其他監控系統 (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”……我相信“If X Restarts”不支持“else”

有什麼建議可以實現這一目標嗎?

既然您說 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
}

引用自:https://serverfault.com/questions/499802