AWSでプロセス監視とCPU使用率・ディスク使用量の監視を行い、
閾値などを超えた場合にメール通知、電話通知してみます。
監視は以下の方式で行ってみます。これらのパターンを押さえておけば
大体のパターンは対応できるかと思います。
CPU使用率:基本モニタリング
ディスク使用量:CloudWatchエージェント
プロセス監視:procstatプラグイン
CPU使用率の監視/メール通知
まずはメール通知用にAmazonSNSのトピックを作成しサブスクリプション登録を
行います。エンドポイントには通知したいメールアドレスを指定します。
詳細は以下を参照ください。
Amazon SNS 通知の設定
■メールが届かない場合
サブスクリプション登録時に指定したメールアドレスの検証が必要になりますが
それだけではメールが届かないこともあります。
サブスクリプションでの検証以外にAmazonSNSのメールアドレスの検証もあるので
メールが届かない場合は以下を行ってください。
Eメールアドレスの検証
メールが受け取れる事を確認すればあとはアラームの作成です。
CPU使用率はCloudWatchの基本モニタリング項目にあるので簡単です。
CloudWatchサービスから「アラームの作成」を行い
メトリクスで「CPUUtilization」を選択し、CPU使用率のアラーム閾値を指定し
通知先に作成したトピックを設定すれば完了です。
基本モニタリングは5分間隔のモニタリングで無料で利用出来ます。
詳細モニタリングを利用するとモニタリング間隔を短く出来ますが有料となります。
CPU使用率アラームのテスト
CLIv2で以下のコマンドを入力し,アラームを発生させてみます。
(アラーム名は作成したものに変更してください)
メールが届けば成功です!
aws cloudwatch set-alarm-state --alarm-name your_alarmname --state-reason "initializing" --state-value ALARM
ディスク使用量の監視
スクリプトによる監視は非推奨なのでCloudWatchエージェントを利用して監視します。
CloudWatchエージェントを利用すると以下のようなメトリクスが監視できます。
CloudWatch エージェントにより収集されるメトリクス
CloudWatchエージェントをインストールします。
sudo yum install amazon-cloudwatch-agent
collectdをインストールします。
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install -y collectd
・EC2に「CloudWatchAgentServerPolicy」をアタッチします
・CloudWatchエージェントの設定ファイルを作成します。
作成にはウィザードを実行し、監視対象のメトリクスにディスク使用率のメトリクス
(disk_used_percent)を追加します。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
CloudWatchエージェントを起動します。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
おまけ:CloudWatchエージェントのステータス確認と停止
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop
これで追加したメトリクスがCloudWatchサービスから確認が出来るようになっているはずです。アラームの設定方法はCPU使用率と同じです。
Linuxのプロセス監視
プロセス監視には CloudWatchのprocstatプラグインを使用してみます。
監視対象の指定方法はいくつかありますが、今回はプロセス名を正規表現で指定し、
対象のプロセス数を収集します。
procstat用にCloudWatchの定義を追加します。
今回は既存のCloudWatchエージェント設定ファイルとは別に
新規で以下の設定ファイルを作成し、追加で適応してみます。
公式ドキュメントでは分かりにくいですが、exeとpatternの指定の違いは
以下でマッチするかどうかです。
pgrep <exe>
pgrep -f <pattern>
{
"metrics": {
"metrics_collected": {
"procstat": [
{
"exe": "agent",
"measurement": [
"pid_count"
]
}
]
}
}
}
append-config オプションを使い、作成したファイルを追加適応します。
udo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a append-config -m ec2 -s -c file:./proc_monitor.json
以上