プロセスをmonitで監視しよう

db-connection-error
Pocket

今まで運用面を整備していなかったのですが、先日、自分のサイトを開くと「データベース接続確立エラー」というエラーが出ました。
db-connection-error

サーバの状態を確認すると、mysqlがクラッシュし、mysqlのサービスが停止してしまったようです。対処としては、mysqlのサービスを開始して対応完了となりました。

しかし、これでは運用としては駄目だと思い、monitを導入しようと決めました。ということで、今回はmonit導入方法です。

スポンサーリンク

monitとは

monitはプロセスを監視・管理するサービスです。プロセスが停止した際、自動で起動することができます。monitのインストールから設定まで一連の流れを見ていきましょう。

monitインストール

まずはyumからmonitをインストールします。

$ yum install monit

monitの主なファイルは以下に保存されています。プロセス監視するには設定ファイルを編集するのではなく、/etc/monit.d配下にプロセス監視ファイルを作成する必要があります。

  • 設定ファイル -> /etc/monit.conf
  • ログファイル -> /var/log/monit
  • プロセス監視 -> /etc/monit.d/[プロセス監視設定ファイル]

プロセス監視設定ファイルを作成

続いてプロセス監視設定ファイルを作成します。例としてmysqlの設定ファイルを作成します。

$ vi /etc/monit.d/mysqld.conf
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
start program = "/etc/rc.d/init.d/mysqld start"
stop program = "/etc/rc.d/init.d/mysqld stop"
if 5 restarts within 5 cycles then timeout

プロセス監視設定ファイルの詳細は、以下の内容です。

check process mysqld with pid file /var/run/mysqld.pid

-> 監視するプロセスのpidファイルを指定します。

start program = "/etc/rc.d/init.d/mysqld start"
stop program = "/etc/rc.d/init.d/mysqld stop"

-> 開始・終了するプロセスのコマンドを指定します。

if 5 restarts within 5 cycles then timeout

-> 5サイクル内に5回再起動に失敗したらタイムアウトとする。

ここまでの作業でmonitのプロセス監視の設定は完了です。monitを自動起動に登録し、起動しましょう。

$ chkconfig monit on
$ service monit start

monit動作確認

正しく設定できたか確認するため、プロセスが停止した時に自動でプロセスを再起動するかを確認します。

$ service mysqld status
mysqld (pid  2851) is running...
$ service mysqld stop
Stopping mysqld:                                           [  OK  ]
$ service mysqld status  
mysqld is stopped
$ service mysqld status  # 60秒後、プロセスが自動起動するか確認
mysqld (pid  7366) is running...

monitが自動でプロセスを起動することが確認できれば作業完了です。sshdやcronなど必要であれば他のプロセスも同様に設定ファイルを作成しましょう。

まとめ

何もしなくてもクラッシュなどでサービスは停止してしまうことがあります。人力でサーバを監視するより、monitの自動監視で楽をしましょう。

スポンサーリンク

feedly、RSSをフォローする