monit-general
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Multiple conditions on the RC of "check program" doesn't work (for me)


From: Tomas Nunez
Subject: Multiple conditions on the RC of "check program" doesn't work (for me)
Date: Fri, 20 Apr 2012 14:53:19 +0200

Hi

I'm trying to check the RC of a program. If the RC is 2, I want it to exec a script that would allegedly fix the problem. But if after 3 attempts, the RC is still 2, then I want monit to stop trying.

So I put a check program like this:

check program check_program with path "check_program" every 6 cycles
   if status == 2 for 6 cycles then unmonitor
   if status == 2 for 2 cycles then exec "fix_script.sh"

Now I've found that I can have one or the other, not both. When I put both lines, just the latter applies:

#monit -v
Program Name          = check_program
 Path                 = /path/to/check_program
 Monitoring mode      = active
 Existence            = if does not exist 1 times within 1 cycle(s) then restart else if succeeded 1 times within 1 cycle(s) then alert
 Status               = if 'check_program' exit value = 2 within 600 seconds then exec 'fix_script.sh' timeout 0 cycle(s) else if succeeded 1 times within 1 cycle(s) then alert
 Every                = Check service every 6 cycles

And the other way around:

check program check_program with path "check_program" every 6 cycles
   if status == 2 for 2 cycles then exec "fix_script.sh"
   if status == 2 for 6 cycles then unmonitor

# monit -v
Program Name          = check_program
 Path                 = /path/to/check_program
 Monitoring mode      = active
 Existence            = if does not exist 1 times within 1 cycle(s) then restart else if succeeded 1 times within 1 cycle(s) then alert
 Status               = if 'check_program' exit value = 2 within 600 seconds then unmonitor else if succeeded 1 times within 1 cycle(s) then alert
 Every                = Check service every 6 cycles

It's strange because I have put conditions on the same value in other checks, and it works alright:

 check process apache with pidfile /var/run/httpd.pid
   start program = "/etc/init.d/httpd start" with timeout 60 seconds
   stop program  = "/etc/init.d/httpd stop"
   if cpu > 60% for 2 cycles then alert
   if cpu > 80% for 5 cycles then restart

# monit -v 
(...)
 CPU usage limit      = if greater than 80.0% 5 times within 5 cycle(s) then restart else if succeeded 1 times within 1 cycle(s) then alert
 CPU usage limit      = if greater than 60.0% 2 times within 2 cycle(s) then alert else if succeeded 1 times within 1 cycle(s) then alert

What am I missing? 

Thanks in advance,

Tomàs


reply via email to

[Prev in Thread] Current Thread [Next in Thread]