あーかいぶすハイディフィニション

ここはもう更新しとらんのじゃ

Monit の導入

死活監視ツールとして Monit を導入しました。そして半日ほど悩んだので、後続の為に何か道しるべになれば幸い。

monit のインストール

$ wget http://mmonit.com/monit/dist/monit-5.0.3.tar.gz
$ tar -zxvf monit-5.0.3.tar.gz
$ cd monit-5.0.3
$ ./configure --prefix=/usr/local
-> なんかデフォルトで /usr/local にインストールされるっぽい事が書いてあったけど念のため
$ make
# make install

monit の設定

自分でコンパイルした時と、yumrpm といったバイナリパッケージを展開した時だと、ファイルの配置が異なります。ファイルの読み込み順番や細かい配置先なんかは、他の先達に任せて、今回は自分で行った設定を。ちなみにファイル配置はデフォルトのソースに含まれている起動スクリプトを利用するので、そちらに準拠します。

起動ファイルの配置
# cp monit-5.0.3/contrib/rc.monit /etc/init.d/monit
# chmod a+x /etc/init.d/monit
# /sbin/chkconfig monit on

これで自動起動できるようになりました、じゃあ実際に設定ファイルを書きましょう。

monit の動作を規定する

上記コピーした起動スクリプトは、設定ファイルの位置を /etc/monitrc に定めているので、こちらもそれに習い、同じパスに配置しましょう。

# vi /etc/monitrc

それじゃ monitrc 書くよ!以下 # の行はコメントです、気をつけてね!

# WRITER : 設置した人のなまえ
# DATE   : 設置日
# init.d : /etc/init.d/monit {start|stop|restart}
# USER   : root(sudo) or only use monit user

# monit の監視周期
# -> 60 秒
set daemon 60

# monit のログファイル
# -> /var/log/ 以下に出力
set logfile /var/log/monit.log

# イベントキューの保持数
# -> /var/monit 以下にイベントキューを 100 件まで保持
set eventqueue
    basedir /var/monit
    slots 100

# アラートメールの送信元
# -> とりあえず localhost
set mailserver localhost

# アラートメールの内容
# -> 以下の内容を元に送信される
set mail-format {
 From: monit-MESSANGER@$HOST
 Subject: $HOST monit alert -- $EVENT $SERVICE
 message:$EVENT Service $SERVICE
      Date:        $DATE
      Action:      $ACTION
      Host:        $HOST
      Description: $DESCRIPTION

 monit detected alert.
 please check message or log.
}

# アラートメールの送信先
# -> 必須、ちなみに not on {INSTANCE} を付けると、Monit instance changed 等の monit 自身の通知がこなくなる、すっくり。
set alert E-MAIL@EXAMPLE.JP not on {INSTANCE}

# ウェブステータスチェック
# -> おまけ
set httpd port 2812 and
    use address 0.0.0.0 # only accept connection from localhost
    allow localhost             # allow localhost to connect to the server and
    allow 0.0.0.0        # allow 0.0.0.0 Gateway to connect to the server and
    allow admin:monit           # require user 'admin' with password 'monit'

# 設定ファイルのインクルード
# -> /etc/monit.d/ 以下に SERVICE_NAME 形式で配置してください
include /etc/monit.d/*

monitrc 解説

最初の 4 行

コメントです、解説の通り入れておくと、担当者が誰か判って幸せかもしれませんね。

# monit の監視周期

秒換算で指定します、今回は 60 秒ですが、rpm 等でバイナリから入れると、120 秒と書かれていたりします。15 だか 10 以下だと、監視プロセスを再起動させる時にうまく再起動できな時があるらしいので、30 〜 120 の間がいいんじゃないでしょうか。

# monit のログファイル

何もいじらないと、 /var/log/messages に出力されるようになっているので、あえて俺はこのログファイルを指定するぜ!により、可読性も上がります。ファイルは作成しなくても、 monit が自動で管理してくれますが、ローテーションは追加されないので、自分で書いてください。

# イベントキューの保持数

最大 100 件まで、monit が検知したイベントを保持しておきます。メール送信が失敗している時に、保持しておく数だと思われ。まあ 100 件もあればそうそうあふれないでしょう。base dir は作成しておく必要があります、root 権限で大丈夫でしたよ。

# アラートメールの送信元

基本は localhost でいいと思うのですが、ちょっと詰まったので、最後に別建てで説明します。

# アラートメールの内容

よくわからなければこのままでいいですが、monit が検知した情報は色々保持されるので、どうせならマニュアル読んで色々付け足してみてください。僕が入れた時は、とりあえずこの程度ですませました。何かあったらログ見る派なので。

# アラートメールの送信先

説明文のままです、メールアドレスだけ変更してね。

# ウェブステータスチェック

Apache のポート 2812 で、ウェブ上で確認できるステータス画面を提供してくれます。
use address 0.0.0.0 が実際にアクセスするアドレスになりますので、この場合は「http://0.0.0.0:2812/」で、アクセスできます。ここは IP アドレスだけしか使えないのかな?
allow に続くのは、許可する IP もしくは host です。IP 制限ですな、簡単に言うと。最終行は、上記 URL にアクセスした時の Basic 認証の ID / PASS になります。

# 設定ファイルのインクルード

ここが一番重要かと、指定したディレクトリ以下のファイル全てが、monitの監視定義の対象になります。

メール設定に関して

実は作業したサーバでは、mta に sendmail の代わりに qmail が入っていて、localhost からの送信がすべからく reject される始末。原因はググりまくっても判らなかったんですが、monit のドキュメントを頭から読んだら、外部の smtp サーバ経由する方法が書いてあった罠。

#
# アラートメール送信時に利用するメールサーバ設定
# 動作) monit からアラートが通知された場合、
#    最初に smtp.example.jp へ
#    ユーザ「monit」のパスワード「monit」で接続要請を出す。
#    受理(ログイン)された場合は smtp.example.jp を利用しメールを送信する。
#    受理(ログイン)されなかった場合は、localhost 実装の mta を経由して
メール送信を試みる。
#
set mailserver
    mail.example.jp port 25 username "user" password "pass",
    localhost

シンプルな smtp 認証サーバならこれでおk、中継禁止されてない限りいけます。ちなみに、SSL 2/SSL 3と TLSV 通信にも対応してるらしい、試してないけど、多分下のような書き方で行ける筈。

set mailserver smtp_ssl.example.com port 25 username "USERNAME"
password "PASSWORD" using [ SSLV2 | SSLV3 | TLSV1 ]

これで stmp.gmail 使える!と思ったけど、よく考えたら中継とか転送を外部から許可している筈が無いね!

しめ

これで起動します

# /etc/init.d/monit start
設定ファイル

いい加減長いので、こっちは別のエントリに。とりあえず設定ファイル更新する毎に、monit の restart しないと適用されないくさい。