各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の例を書いておきます。こんなことを設定しています。
- アラートの通知先と文面
- cpuロードアベレージ、メモリ使用率、ディスク使用率
- pidの存在でrsyslogdを監視
- ps -efして”eye monitoring”がマッチするかどうかでeyeを監視
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
monitの死活監視はどうしようとなりますね。upstartで制御というのが良いかもしれません。
参考になる記事
Written with StackEdit.
0 件のコメント:
コメントを投稿