CentOS7の環境にmonitをインストールして使用しています。
今回サーバーのお引越しに伴ってメンテページを表示させたことで、monitがテストでアクセスしていたページにアクセスできず、restartを繰り返していました。
そこまでは特に問題ないのですが、if 5 restarts within 5 cycles then unmonitorの設定を入れているにも関わらずunmonitorされずrestartし続けるという状況が発生していました。
monitは下記のような設定です。
set daemon 30 set logfile /var/log/monit.log set httpd port 2812 and use address localhost # only accept connection from localhost allow localhost # allow localhost to connect to the server and allow admin:monit # require user 'admin' with password 'monit' check process httpd with pidfile /var/run/httpd/httpd.pid start program = "/bin/systemctl start httpd" with timeout 30 seconds stop program = "/bin/systemctl stop httpd" if failed host localhost port 80 protocol http and request /monit.html then restart if 5 restarts within 5 cycles then unmonitor
monitのログを確認すると、set daemon 30と指定しているにも関わらず60秒ごとにrestartが走っているようでした。
色々テストを行いながら試してみたところ、start programの記述を下記のように変更することでunmonitorされるようになりました。
start program = "/bin/systemctl start httpd" with timeout 0 seconds
systemctl start httpdが叩かれたときにtimeoutの秒数待っていたことで、5cycle中に5回のrestartにはならなかったようです。
この動作はmonitの動作上正常なのでしょうか。
また、今回のようにテストページへのアクセスに連続して失敗したときにunmonitorとさせたい場合はどのようにすればよいのでしょうか。
…「if 5 restarts within 10 cycles」とするしかない…?
あなたの回答
tips
プレビュー