我正在使用PID监视java守护进程。以下是代码。
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 :(得分:0)
你的检查语句是monit检查是否存在pid文件(看起来很奇怪,有空格,顺便说一句)。如果没有,则默认发送警报,然后运行start
指令。
我通过这样的check process ... matching
声明来解决这个问题:
check process app-pass matching 'Passenger RubyApp: \/home\/app\/app-name\/public'
基本上,"匹配"相当于ps aux | grep ...
当我不能依赖现有的pid文件时,它可以做得更好,就像子进程一样。