今まで運用面を整備していなかったのですが、先日、自分のサイトを開くと「データベース接続確立エラー」というエラーが出ました。
サーバの状態を確認すると、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
プロセス監視設定ファイルの詳細は、以下の内容です。
-> 監視するプロセスのpidファイルを指定します。
stop program = "/etc/rc.d/init.d/mysqld stop"
-> 開始・終了するプロセスのコマンドを指定します。
-> 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の自動監視で楽をしましょう。