Monitで監視設定する方法

サーバをお手軽に監視をするなら、Monitがお勧めです! 😉
Monit

Monitイメージ画像
https://mmonit.com/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