Während ich eine Antwort auf diese Frage entwickelte, stieß ich beim Testen dieses MySQL Monit-Regelsatzes auf einem Ubuntu 12.04.5-Setup auf einen Haken:
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
group mysql
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host 127.0.0.1 port 3306
with timeout 15 seconds
then restart
if 5 restarts within 5 cycles
then timeout
alert email_address@example.com only on { timeout, nonexist }
Das Problem ist, dass ich versucht habe, Start / Stopp-Elemente über /etc/init.d/
- was eher ein CentOS / RedHat-Systemkonstrukt ist - aufzurufen, anstatt zu verwenden, /usr/sbin/service
was für ein Ubuntu / Debian-System besser geeignet wäre.
Okay, mein schlechtes ... Aber das Problem ist, dass Sie diesen if 5 restarts within 5 cycles then timeout
Teil sehen? Das scheint mich hart gebissen zu haben. Da der /etc/init.d/mysql start
Befehl nicht funktionieren konnte, versuchte das System 5 Neustarts, schlug 5 Mal fehl und lief daraufhin ab. Und die Timeout-Bedingung scheint dazu zu führen, dass der MySQL-Dienst-Regelsatz in meinem Monit ignoriert wird.
Ich habe den Monit-Dienst einige Male neu gestartet und sogar den Regelsatz neu ausgelöst, um festzustellen, ob er hilft, aber nichts davon scheint irgendetwas zu beeinflussen.
Was kann ich tun, um Monit dazu zu bringen, auf Regelsätze zu achten, die aufgrund der Einhaltung der Timeout-Bedingungen nicht überwacht wurden?
/root/.monit.state