monitを使って勝手に落ちたプログラムを自動で再起動させる方法

※当サイトではアフィリエイト広告を利用しています

Linuxサーバを運用する際に、重要になってくるのがプロセスの監視。
絶対落ちたらダメなプロセスを監視して、何かあった際にスムーズに復旧できるようにしておくことは非常に重要になってきます。

AWSの場合、cloudwatchで監視をすることはできますが、プロセス監視まですることが困難。
ましてや自動復旧ともなると、さらに困難になってきます。

そこで、オープンソースのプロセス監視ツール「monit」を使う方法をメモします。
monitは設定が簡単なので、導入するにあたり敷居が低いです。

monitのインストール方法

インストールも簡単。
yumのコマンドを叩くだけです。

# yum install monit

 

 

monitを使った監視の設定

monitを使った監視の設定をメモします。

 

pidファイルの監視

ネットで検索すると大体ヒットするのが、pidのファイルの死活監視をする方法です。
tomcatを監視する場合は、こんな感じの設定です。

pidファイル監視の設定

check process tomcat with pidfile /var/run/tomcat8.pid
start program = "/etc/init.d/tomcat8 start"
stop program = "/etc/init.d/tomcat8 stop"
if 5 restarts within 5 cycles then unmonitor

基本的にはこの方法で良いと思うのですが、pidファイルが無いソフトや、何らかの事情でpidファイルが残ったままソフトが停止した場合、この監視方法ではプロセスの停止を検知することができません。

 

プロセスの監視

上記とは違う方法として、プロセス自体を監視する方法もあります。

※この方法は、monitのバージョンが「」以上から使うことができるようになっています。

monitのバージョンを確認する方法

# monit -V
This is Monit version 5.2.5
Copyright (C) 2000-2011 Tildeslash Ltd. All Rights Reserved.

プロセス監視の設定

check process matching "tomcat"
start program = "/etc/init.d/tomcat8 start"
stop program = "/etc/init.d/tomcat8 stop"
if 5 restarts within 5 cycles then unmonitor

ちなみに、設定するプロセス名が正しいかどうか、確認するコマンドも用意されています。

# monit procmatch "tomcat"
List of processes matching pattern "tomcat":
------------------------------------------
/usr/lib/jvm/jre/bin/java -Djava.security.egd=file:/dev/./urandom -Djava.security.egd=file:/dev/./urandom -Xms256m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -classpath :/usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar -Dcatalina.base=/usr/share/tomcat8 -Dcatalina.home=/usr/share/tomcat8 -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat8/temp -Djava.util.logging.config.file=/usr/share/tomcat8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start
------------------------------------------
Total matches: 1

 

その他、monitを使ってできること

ちなみに、monitでは他にも以下のようなことができます。
今回はやりませんでしたが、もっと細かい項目の監視や、プロセス再起動と同時にメールを送るようなことも可能です。

  • アラートメール送信
  • CPU、メモリ監視
  • タイムスタンプのチェック
  • ロードアベレージ

 

コメント