サーバをお手軽に監視をするなら、Monitがお勧めです! 😉
Monit
CentOSで、Monitを使用して監視を行う方法です。
今回は、以下の2つの監視方法を記載します。
- httpの死活監視
- Disk容量の監視
前提
前提として、Postfixがインストールされていること。
インストールされていない場合は、以下でインストールします。
# yum install postfix -y
各種設定については、今回は割愛します。。
Monitインストール、各種設定
以下のコマンドで、Monitインストールします。
# yum install monit -y
以下の設定ファイルが作成されます。
/etc/monit.conf
ファイルの中身を見てみます。
コメントが多いので以下のコマンドでコメントを省いて表示してみます。
# grep -v "^#" /etc/monit.conf | grep -v "^$" set daemon 30 # check services at 30 seconds intervals set logfile syslog set httpd port 2812 and use address localhost # only accept connection from localhost allow localhost # allow localhost to connect to the server and allow admin:monit # require user 'admin' with password 'monit' set daemon 60 include /etc/monit.d/*
ごっそり内容を変更するので、オリジナルファイルとしてとりあえず残しておきます。
# cp -p /etc/monit.conf /etc/monit.conf_org
内容を全て削除し、以下のように書き換えます。
# vim /etc/monit.conf
# 60秒間隔で監視し、monit起動時は、30秒後に監視を開始するという設定。 set daemon 60 with start delay 30 # ログファイル set logfile /var/log/monit.log # idファイル set idfile /var/monit/id # stateファイル set statefile /var/monit/state # メールサーバ set mailserver localhost # イベントキューの保持数 (/var/monit 配下にmonitが検知したイベントキューを 100 件まで保持します。) set eventqueue basedir /var/monit slots 100 # メール受信時のフォーマット set mail-format { from: monit@sample-web-pencil.com subject: monit alert -- $EVENT $SERVICE message: $EVENT Service $SERVICE Date: $DATE Action: $ACTION Host: $HOST Description: $DESCRIPTION Check the server!!! From Monit } # アラートを受信したいメールアドレスを設定する set alert kanri@sample-web-pencil.com NOT ON { action, instance } set alert kanri2@sample-web-pencil.com NOT ON { action, instance } # 各種監視項目を別ファイルで書き出すため、インクルードさせる include /etc/monit.d/*
各種監視の設定
各種監視設定ファイルを作成します。
httpの死活監視
サーバへの負荷を減らすため、以下の単純なファイルをDocumentRootに置き、
そちらをMonitで監視対象とします。
# echo healthcheck > healthcheck.html
設定ファイル作成
vim /etc/monit.d/web-check
ファイルの内容
check host sample-web-pencil with address sample-web-pencil.com if failed port 80 protocol http and request "/healthcheck.html" then alert
timeoutは15秒に設定、3回連続失敗した場合は、アラートを発動させる設定は、以下のように「timeout 15 seconds for 3 cycles」と追記します。
check host sample-web-pencil with address sample-web-pencil.com if failed port 80 protocol http and request "/healthcheck.html" timeout 15 seconds for 3 cycles then alert
Disk容量の監視
vim /etc/monit.d/disk-check
Disk容量が90%以上になったら、アラートを発動させます。
ファイルの内容
check device datafs with path /dev/xvda1 if space usage > 90% then alert
起動設定および、Monit起動
# chkconfig monit on # chkconfig --list monit monit 0:off 1:off 2:on 3:on 4:on 5:on 6:off # /etc/init.d/monit start
受信メールのサンプル例:
アラート発生時
from:monit@sample-web-pencil.com
subject:monit alert — Connection failed sample-web-pencil
body:
Connection failed Service sample-web-pencil
Date: Fri, 16 Feb 2016 16:15:21
Action: alert
Host: sample-web-pencil.com
Description: failed, cannot open a connection to INET[sample-web-pencil.com:80/healthcheck.html] via TCP
Check the server!!!
From Monit
サービス復旧時
from:monit@sample-web-pencil.com
subject:monit alert — Connection succeeded sample-web-pencil
body:
monit alert — Connection succeeded sample-web-pencil
Connection succeeded Service sample-web-pencil
Date: Fri, 16 Feb 2016 16:17:21
Action: alert
Host: sample-web-pencil.com
Description: connection succeeded to INET[sample-web-pencil.com:80/healthcheck.html] via TCP
Check the server!!!
From Monit