低コストなサーバー監視「monit」を導入

NO IMAGE

WEBサーバーの死活監視とHDDの残量を監視するのに一番簡単そうなのはなにかな〜と調べた結果
monitにたどり着きました

なんといってもyumで簡単に入って、設定ファイルを書くだけで
監視をしてくれるというのはお手軽でいいんじゃないでしょうか

インストール

sudo yum install monit

インストールにはepelが必要
さくらVPSは標準で入っているため、外部リポジトリを追加する必要がありませんがそれ以外の環境ではepelを先に入れて下さい

コンフィグの設定

/etc/monit.conf を編集します

デフォルトはこうなっていました

# set daemon mode timeout to 1 minute
set daemon 60
# Include all files from /etc/monit.d/
include /etc/monit.d/*

このように追記します

# set daemon mode timeout to 1 minute
set daemon 60

# monit のログファイル
set logfile /var/log/monit.log
# アラートメールの送信元
set mailserver localhost
# アラートメールの内容
set mail-format {
    from: [email protected]
    subject: $SERVICE $EVENT at $DATE
    message: Monit $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
            Yours sincerely,
            monit
}
# アラート送信先
set alert [email protected]

# Include all files from /etc/monit.d/
include /etc/monit.d/*

公式のドキュメントからreply-toを除いただけです(起動できなかったので)
Monit – utility for monitoring services on a Unix system

起動・停止・再起動

起動

sudo service monit start

上記までの設定が合っていればMonit started.という内容のメールが飛んできます
飛んで来なかった場合はなにか間違っている可能性が高いので修正しましょう

停止

sudo service monit stop

再読み込み

sudo service monit restart

監視方法

/etc/monit.d/以下に.confファイルを書いて監視対象を指定します

プロセス監視

例えばsshdが落ちていたらリスタートさせる設定

/etc/monit.d/sshd.conf を新規に作成します

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

1行目 sshd.pidをチェック(httpdなんかはhttpd/httpd.pidになっているので注意)
2行目3行目でstartとstopを指定
4行目 port 22が落ちていたら再起動をかける
5行目 リスタートに5回失敗したらタイムアウトさせる

ディスク容量

ディスク使用率が40%を超えたらアラートメールを送信

check device datafs with path /dev/vda3
    if inode usage > 40% then alert

その他サンプルはここに大量にあります
Monit – utility for monitoring services on a Unix system