MonitでSSH,Nginx,MySQLのサービス死活監視を行うChef Cookbook

sshd, mysqld, nginx などのプロセス(サービス)は、常に起動させておきたいわけで、落ちたままになるのは困ります。ということで、サービスの死活監視を行うために Monit を利用することにしました。死活監視は、以前はただのシェルスクリプトで代用していたのだけど、Monit は設定も簡単ですし良さそうでしたので。

サービス監視スクリプトを作成して cron に登録 〜 CentOS6 | EasyRamble

スポンサーリンク

このエントリーは、CentOS サーバー設定用 Chef Cookbook/Recipe の目次 の一部です。

ということで、Chef で Monit のサーバー構成を書きました。まずは、Monit 用の Cookbook を作成。

Monit の設定については、以下のページを参考にさせて頂きました。ありがとうございます。

ServersMan@VPS (CentOS 5) に Monit を入れてサービスの監視+自動起動

Monit のインストール + 設定 Recipe

site-cookbooks/app_monit_cookbook/recipes/default.rb

コメントを読めば、だいたいやってること分かると思います。

set daemon 180 → 3分毎に監視
set logfile syslog facility log_daemon → ログの記録
# disable web interface からの処理 → とりあえずウェブフロントを無効化
/etc/monit.conf のパーミッションを700に
chkconfig on とサービス起動
# add monitored services からの処理 → サービスごとに設定ファイルを作成

と、以上のような一連の処理を行っています。# add monitored services 以降、cookbook_file リソースでサービスごとの設定ファイルをアップロードするので、files ディレクトリに1個ずつ作成します。今回は、ssh, nginx, mysql の3つのサービスを監視することにしました。

【追記 2014/08/14】
このエントリーでは sed で設定ファイルを編集していますけど、template/cookbook_file リソースで /etc/monit.conf を作成したほうが分かりやすいかもです。最近は、私は template/cookbook_file リソースを使うことが多いです。
【追記ここまで】

SSH, Nginx, MySQL監視用の設定ファイルを作成

もっとも死んでもらっては困るプロセスが sshd。落ちたままだと ssh 接続ができなくなります。

/etc/monit.d/ssh.conf 用。

site-cookbooks/app_monit_cookbook/files/default/ssh.conf

最後の行は、5回監視して5回再起動を試みた場合に、監視を停止させる命令。

/etc/monit.d/nginx.conf 用。

site-cookbooks/app_monit_cookbook/files/default/nginx.conf

/etc/monit.d/mysql.conf 用。

site-cookbooks/app_monit_cookbook/files/default/mysql.conf

/etc/monit.d/ 以下のファイルは、/etc/monit.conf から include されます。以上のように、サービスごとの設定ファイルも簡潔に書けて良い感じです。

nginx を停止させて自動起動するかを検証

以降、Monit で監視対象のサービス(今回はnginx)を対象に、サービスが落ちたあと自動起動するか検証します。

まずは、nginx を手作業で stop させる。

nginx のプロセスが走ってないことを確認。1個出てきてるのは grep 自体のプロセス。

ログを監視します。

しばらく待ってたら、nginx のプロセスが走っていないので、tyring to restart して nginx が起動されたログが出力されました。

もう一度 nginx のプロセス確認。

nginx の master と worker のプロセスが、ちゃんと自動で立ち上がってますね。

Chef を使い始めて10日くらいになりますが、ようやく、コンソールからコマンドと vi で1つずつ進めるより、Chef で書いたほうが速い!という感覚を持つことができました。結構自分の中ではブレークスルー。

コンソールでコマンド打って作業進めるのも好きではあるのですが、何しろ2回目以降の同じ作業でも再び手作業でやんないといけない。この面倒を考えると、Chef に慣れてくるにつれて、段々とコンソールでちまちまコマンド打つのがだるくなってきます。そして Chef で書いたほうが速いし、また同じ構成やる時楽やん!となってきました。

スポンサーリンク
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!