2015-08-19 93 views
0

我正在用PID監視Java守護進程。以下是代碼。Monit虛假警報

check process SemanticReplication with pidfile "/ngs/app/edwt/opsmonit /monit/scripts/process.pid" 
    start = "/ngs/app/edwt/scripts/javadaemon/start_daemon.ksh" 
    stop = "/ngs/app/edwt/scripts/javadaemon/stop_daemon.ksh" 

很多時候,即使java守護進程已啓動並運行,但當進程沒有運行時,我得到錯誤警報。 在下一個監控週期中(一分鐘後),當進程啓動並運行時,另一個監控警報觸發。

有人可以幫助我們如何避免這種虛假警報?

+0

pidfile路徑是否正確?這些空白空間很奇怪。這是你用來監控該服務的所有代碼嗎? –

回答

0

你的檢查語句是監視pid文件的存在(它看起來很奇怪,用空格,順便說一句)。如果沒有,則會默認發送警報,然後運行start指令。

我解決此獲得由具有check process ... matching聲明,如下所示:

check process app-pass matching 'Passenger RubyApp: \/home\/app\/app-name\/public'

從本質上講,「匹配」做的ps aux | grep ...其中沒有一個更好的工作,當我不能依靠一個pid文件中的相應現有的,像是有一個孩子的過程。