2008年8月17日日曜日

Monitでサービス・プロセス監視、止まったら勝手にリスタート(2)

Monitオフィシャルサイト
 

インストールと基本設定、起動


前回の記事からの続き
 
Monitのインストールします、お手軽さ演出のためRPMから。
RPMパッケージはDAGで配布されているので必要なパッケージをダウンロードして使います。
yumでやりたい場合は「DAG yum」でGoogle検索したらすぐできます、yumが検索するリポジトリとして一時的に追加しましょう。
 


 

あとはrpmコマンド、yum install でインストールできます。
 

以下、monitのバージョンは 4.9-2 を使用しています。原稿書いてる時点では5がベータリリース中で、4系の最も後の版。
 
 

インストールした後は下記をチェックしておくと良。
 



























表:設定など、主だったファイルとディレクトリ
ファイルまたはディレクトリ説明備考
/etc/monit.conf設定ファイルデフォルトではInclude文のみ有効
/etc/monit.d/コンフィグのインクルード先最初は空っぽ
/etc/rc.d/init.d/monit起動スクリプト普通にデーモンとして動かす場合に
/usr/bin/monit本体バイナリinit起動のときにパスが必要

 
 
 

さて、まずはmonit.confファイルに基本設定をしたいところだが、rpmについてくるmonit.confファイルは ほとんどがコメントアウトされたサンプルで、有効なのは下記1行のみとなっている。
include /etc/monit.d/*
 
こういうときは折角なのでディレクトリ別にで役割を決めてコンフィグの収納をしておきたところ。
私は下記のような感じで区切ります。この例ではデフォルトのmonit.confは一切いじらない。
 





















表:コンフィグファイルの目的別収納とインクルード例
ファイルまたはディレクトリ説明
/etc/monit.conf設定ファイル:基本設定ファイルのインクルード文のみ
include /etc/monit.d/*
(新設)/etc/monit.d/base.conf設定ファイル:基本設定の記述とサービス別コンフィグのインクルードを記述
基本設定を記述して、最後にinclude文
include /etc/monit.d/conf.d/*.conf
(新設)/etc/monit.d/conf.d/*.confサービス別のコンフィグ。ファイルマスクを*.confとして、リネームで簡単に無効化できるようにする
ディレクトリは作る
場所は一応どこでもよい
(新設)/etc/monit.d/pem/管理WEBをHTTPSで立てる際の秘密鍵セット、これも場所は別にどこでもよいし既存のセットを流用してもよい

 
 

で、base.conf はどのように書くか。
サンプルのコンフィグファイルをコメント付きで、詳しいオプションなどは公式ドキュメントを見ましょう

[sourcecode language='bash']# 秒単位で監視間隔を指定 これは60秒ごと
set daemon 60


# memo:init起動の時はset init を有効にする
# set init


# ログの設定、syslogを使う場合
set logfile syslog facility log_daemon


# 送信用メールサーバの設定、認証は公式ドキュメント参照
set mailserver [送信用メールサーバ]
set alert [アラート通知先メールアドレス] not on {INSTANCE}
# set alert [メールアドレス複数記述可] not on {INSTANCE}
# memo:not on {INSTANCE}はmonit自身の動作を除外


# アラートメールの内容調整
set mail-format {
subject: monit alert-- $EVENT $SERVICE @$HOST
}

# 内部WEBサーバ設定
set httpd port 2812
# 管理UIをHTTPSで立てる
SSL ENABLE
PEMFILE /etc/monit/pem/monit.pem
use address 0.0.0.0
allow localhost
allow [操作を許可するIPアドレス]
# HTTPの認証を使う ユーザ名とパスワード
allow admin:monit


# ローカルのhda1容量監視
check device rootfs with path /dev/hda1
if space usage > 60% 5 times within 15 cycles
then alert
else if passed for 10 cycles then alert
if space usage > 80% for 5 cycles then alert
else if passed for 10 cycles then alert


# conf.d のインクルード
include /etc/monit.d/conf.d/*.conf

[/sourcecode]

コンフィグ中で指定するpemファイルは 過去記事:「OpenSSLでお手軽に自己証明書(1)」 でつくるとよいです。
 
 
まずMonitを動かすだけならこれでOK、サンプル内の [カッコ部分] は置き換えの必要があります。
このコンフィグでは内部WEBサーバをSSLを使用するように指定、ローカルの hda1 のリソースを監視して、メールサーバからアラートメールを送る設定になっています。

 
起動スクリプトからmonitを起動すれば、WEB管理画面につながるはず。
https://[サーバのIPアドレス]:2812/
をWEBブラウザで開く。
認証が入るので 「ユーザ名:admin / パスワード:monit 」でWEB管理が使えます。
 
 
次は適当なサービス監視と、init起動について。
Monitでサービス・プロセス監視、止まったら勝手にリスタート(3)
 
 



Monitでサービス・プロセス監視、止まったら勝手にリスタート(1)
Monitでサービス・プロセス監視、止まったら勝手にリスタート(2)
Monitでサービス・プロセス監視、止まったら勝手にリスタート(3)
Monitでサービス・プロセス監視、止まったら勝手にリスタート(4)