On Thu, Jun 26, 2008 at 4:27 PM, Martin Pala <address@hidden> wrote:
Art Age Software wrote:
I would like to be able to execute an arbitrary action after a
specified number of restart attempts have failed. It appears that the
only thing allowed in the "if x restarts within y cycles" clause is
the timeout command. Is that true?
Yes, that's true. We plan to add this feature, there is also patch from Alec
which implements it. I'll look on it and will try to integrate with upcoming
monit 5.0.
Thanks. Is there any work-around in the meantime? I was thinking of
creating a second "ghost" service that attempts to connect to mysql
each cycle and forces a failover if it cannot connect (but before the
other service times out). Something like:
---------------------
check process mysql1 with pidfile /var/run/mysqld/mysqld.pid
mode manual
every 2 cycles
if failed unix "/var/lib/mysql/mysql.sock" then restart
if failed host localhost port 3306 protocol mysql then restart
if 5 restarts within 10 cycles then timeout
check host mysql2 with address localhost
mode manual
if failed port 3306 protocol mysql for 6 cycles then exec
"/usr/lib/heartbeat/hb_standby"
---------------------
What do you think? Or is there a better approach?