お手軽、高性能なフリー監視ツール「monit」をLinuxに設定してみたら、予想以上に便利だった件




投稿日:

監視ツールというとNagiosやZabbixなどがメジャーですが、構築や設定は手間のかかる作業です。そんな時に、そんなに手間もかけずに、しかも比較的簡単に導入できる監視ツール「monit」を設定してみたのでその時の手順をまとめておきたいと思います。サーバ毎に設定をするため、スモールスタートやスタートアップにももってこいだと思います。

monitで出来ることは、主に以下です。

・サーバリソース監視
・ファイルシステムの監視
・URL監視
・ログ監視
・プロセス監視

ちなみに、多数のサーバの総合監視をする場合には、M/Monit(http://mmonit.com/) を利用すると良いそうです。これも今度試してみます。

では、サーバにmonitを設定してみましょう。

【インストール準備】

DAGレポジトリを利用します。

# wget http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
# rpm --import RPM-GPG-KEY.dag.txt

今回は、centOS6のサーバとなるので、Redhat用のレポジトリにします。
# vi /etc/yum.repos.d/dag.repo

 [dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag/
gpgcheck=1
enabled=0


# yum --enablerepo=dag install monit

インストール完了です。

【基本設定】

基本的な設定は monit.conf で実施します。

# vi /etc/monit.conf

set daemon 60 # デーモンの監視間隔
set logfile /var/log/monit.log #ログファイルの指定

# アラートメールの送信元
set mailserver mail.xxxx.com port 465
   username "AAAAAAAA" password "BBBBBBBB"
   using SSLAUTO

# イベントキューの保持数
set eventqueue
basedir /var/monit
slots 100


# アラートメールの内容
set mail-format {
From: aaa@example.com
Subject:$HOST -- $EVENT $SERVICE $DATE
message:$EVENT Service $SERVICE
Date:        $DATE
Action:      $ACTION
Host:        $HOST
Description: $DESCRIPTION

please check message or log.
}

# アラートメールの送信先
# not on {INSTANCE, xxxx} というように、指定の動作を設定するとそれに関する通知をしなくなります。 
set alert bbb@example.com not on {INSTANCE}

set httpd port 2812 and
    use address localhost 
    allow localhost  
    allow admin:monit  
    allow @monit 
    allow @users readonly

# 設定ファイルのインクルード
include /etc/monit.d/*

■ 個別サービスの設定

Apacheの場合

# vi /etc/monit.d/httpd.conf

check process httpd with pidfile /var/run/httpd/httpd.pid
  start program = "/etc/init.d/httpd start" with timeout 60 seconds
  stop program  = "/etc/init.d/httpd stop"
  if failed port 80 protocol http
    then restart


SSHの場合

# vi /etc/monit.d/httpd.conf

check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/sshd start" with timeout 60 seconds
stop program "/etc/init.d/sshd stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout

最後に、monitを再起動して設定反映です。

ここで上げたのはほんの一例です。

URL監視も可能です。
monitを利用して色々なパターンの外部URLの監視、http監視を設定してみる | 田舎に住みたいエンジニアの日記

ドキュメントを見るととても詳しく設定の方法が書かれているので、是非見てください。
http://mmonit.com/monit/documentation/monit.html#configuration_examples