Monitでインスタンス内のシステムモニタ、プロセス死活監視する
各EC2インスタンスにMonitを導入して、CPU使用率、メモリ空き容量、Disk容量といった数値の監視とプロセスの死活監視を行います。例えば、Disk容量が90%超えを検知したら指定のメールアドレスに送信することもできます。 モニタをグラフで見る機能はないので、それについてはあとで記事にする予定のMuninを導入します。
インストール
$sudo yum install monit
で入ります。
設定は/etc/monit.d/
以下に.confを配置します。サーバの役割毎に監視したいプロセスなども変わってくるので、役割毎にファイルを分けて用意します。
base.confは全サーバ共通の監視項目、web.confはWEBサーバとしての監視項目、app.confはAPPサーバとしての監視項目・・・と言った具合です。
インスタンスがAPPサーバとして立ち上がった時は、base.confとapp.confを/etc/monit.d/下に配置されるようにします。
設定内容
confの例を書いておきます。こんなことを設定しています。
set alert systemalert@watch.example.com but not on { INSTANCE pid } with mail-format { from: monit@$HOST subject: $SERVICE $EVENT $HOST message: Monit $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION. } set mailserver localhost port 25 # System check system system group system if loadavg (1min) > 12 then alert if loadavg (5min) > 8 then alert if memory usage > 90% then alert if swap usage > 25% then alert if cpu usage (user) > 95% then alert if cpu usage (system) > 75% then alert if cpu usage (wait) > 50% then alert check filesystem rootfs with path / if space usage > 80% then alert # syslogd check process syslogd with pidfile /var/run/syslogd.pid start program = "/etc/init.d/rsyslog start" stop program = "/etc/init.d/rsyslog stop" if 5 restarts within 5 cycles then timeout check file syslogd_file with path /var/log/messages #eye check process eye matching "eye monitoring" start program = "/etc/init.d/eye start" stop program = "/etc/init.d/eye stop" if 5 restarts within 5 cycles then timeout