サーバの死活監視を手軽に設定したかったので、monitを使ってみることにしました。
参考にさせていただいたサイト
株式会社シャノン技術ブログ: 15分で始めるmonitによるサーバ監視
Monit でお手軽に外部のサーバを監視する - akishin999の日記
環境
- OS : CentOS release 5.9 (Final)
- monit : 5.5
インストール
DAGリポジトリ(rpmforge)を設定済みだったので、yumでインストール可能でした。
yum install -y monit
設定
設定ファイルは共通となるものが「/etc/monit.conf」、さらに「/etc/monit.d」の中に監視対象を細かく分けて書いていきます。
/etc/monit.conf
自分の場合は変更したのは初期設定から二点だけでした。
メールサーバの設定
set mailserver mail.example.com
httpdの設定
monitは状態を確認できるhttpデーモンを起動しています。
初期設定だとローカルからしかアクセスできないようになっているので、
これを外部からも見られるようにします。
set httpd port 2812 and
allow 192.168.0.0/24 # アクセスできる範囲を指定
allow admin:monit # ベーシック認証のIDとPASSWORD
allow @monit # allow users of group 'monit' to connect (rw)
allow @users readonly # allow users of group 'users' to connect
これで
http://monithost:2812
にアクセスすると、ステータスを監視できます。
(monithostの部分はmonitを動かしているホストかIPに変えてください)
/etc/monit.d/ping.conf
個別の設定は/etc/monit.dの中に書いていきます。
ファイル名はなんでもいいので、ここでは「ping.conf」とします。
set alert mail01@example.com
set alert mail02@example.com not on {INSTANCE}
check host myhost01 with address myhost01
if failed icmp type echo with timeout 4 seconds
then alert
check host myhost02 with address 192.168.0.10
if failed icmp type echo with timeout 4 seconds
then alert
これで全てです。
set alertの後に、異常発生時に送信したいメールアドレスを指定します。
ただ、それだけだとmonit自体の停止・起動時などもいちいちメールがくるので、
それが嫌な場合は「not on {INSTANCE}」をつけておきます。
check host〜の後に、監視したいサーバの状態を書いていきます。
with addressの後が実際に監視するサーバの情報で、ホスト名かIPアドレスを指定します。
テスト実行
以下のコマンドで試しに実行可能です。
monit -vI
終了はCtrl+Cです。
設定反映
service monit restart
最後に
monitは初めて使ってみましたが、とてもお手軽に設定できて便利です。
今回はpingの監視だけでしたが、他にもmysqlのチェックなど様々な事が可能です。
一度使ってみてはいかがでしょうか。