使用Monit来监视和自动恢复Ubuntu 20.0.4上的nginx
首先
目标读者
-
- Ubuntu で nginx サーバを運用している人
-
- 気づいたら nginx がお亡くなりになっていて対応しないとならない、という事態に陥ったことのある人
- あるいは上記のような事態に陥りたくない人
行动环境
- Ubuntu 20.0.4
安装
请监控
-
- Monit
- 以下の通りインストール
apt install monit
设置
/etc/monit/monitrc 只需要一个选择,请以中文本地方式进行改述。
- 初期値は 120 秒ごとにチェックするようになっている。運用に応じて変更するべし
set daemon 120 # check services at 2-minute intervals
- ログは以下のところに出力されるようになっている。ここも含め、他の設定も特に変更する必要はないと思われる
set log /var/log/monit.log
/nginx在/etc/monit/conf-available/中
-
- 今回は nginx を監視するので監視対象用のコンフィグファイルは /etc/monit/conf-available/nginx
最近の monit はインストールした時点でコンフィグファイルが用意されている
中身は以下のようになっているので、自身の環境で要変更箇所があれば変更すべし
check process nginx with pidfile /var/run/nginx.pid
group www
group nginx
start program = "/etc/init.d/nginx start"
stop program = "/etc/init.d/nginx stop"
# if failed port 80 protocol http request "/" then restart
if 5 restarts with 5 cycles then timeout
depend nginx_bin
depend nginx_rc
check file nginx_bin with path /usr/sbin/nginx
group nginx
include /etc/monit/templates/rootbin
check file nginx_rc with path /etc/init.d/nginx
group nginx
include /etc/monit/templates/rootbin
- 上記コンフィグを適用したいので、シンボリックリンクを作成
ln -s /etc/monit/conf-available/nginx /etc/monit/conf-enabled/
- 設定を再読込
systemctl reload monit
确认动作
-
- 試しに nginx -s stop を実行して nginx プロセスを止めてみると、自動復旧してくれるようになる
- ログは以下のように出力される
[JST Jul 5 18:35:19] error : 'nginx' process is not running
[JST Jul 5 18:35:19] info : 'nginx' trying to restart
[JST Jul 5 18:35:19] info : 'nginx' start: '/etc/init.d/nginx start'
总结
印象
-
- 日本語で、最近の Ubuntu 環境での monit + nginx 記事が見当たらなかったので、まとめました
- これで知らない間に nginx が沈黙していた……という状況のときに自動復活してくれるので精神衛生面で助かる
文献提及
-
- Qiita – プロセス監視のためのmonitを設定してみる
- Tutorials24x7 – Configure Monit For MySQL, Apache, NGINX On Ubuntu 20.04 LTS