2015-08-19 88 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文件中的相应现有的,像是有一个孩子的过程。