[AWS] EC2インスタンスのメモリやディスク使用量をCloudWatchに送信する
目次
EC2インスタンスのメモリやディスク使用量をCloudWatchに送信する
EC2インスタンス(Amazon Linux AMI)のメモリやディスク使用量をCloudWatchに送信するには以下の手順で設定する
必要なPerlモジュールをインストール
提供されるツールはPerlで動作するので以下のコマンドでモジュールを追加する
sudo yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https --nogpgcheck
GPG鍵が取得できないエラーが出たので対処。
もしPerlモジュールがないCan’t locate xxx.pmエラーが出た場合は
もしくはもう一度上のyum installで全モジュールをインストールしてみる
Bitnamiでは以下の通りにモジュールを追加する
sudo apt-get install libwww-perl libdatetime-perl
モニタリングツールをインストールする
AMAZONから提供されているcloudwatch用ツールをダウンロード、解凍
curl http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O unzip CloudWatchMonitoringScripts-1.2.2.zip rm CloudWatchMonitoringScripts-1.2.2.zip cd aws-scripts-mon
アクセスキー・シークレットキー
AWSコンソールのIAMサービスからMonitor用のアカウントを作成し、アクセスキー・シークレットキーを取得
シークレットキーは一度しか表示されないので注意
アクセスキー・シークレットキーを取得したら、先程ダウンロードしたaws-scripts-monフォルダ上にあるawscreds.templateに追記します
vi ./awscreds.template
AWSAccessKeyId=xxxxxxxxxxxxxxxx(アクセスキー) AWSSecretKey=xxxxxxxxxxxxxxxx(シークレットキー)
awscreds.templateでは動作しないのでawscreds.confというファイル名でコピー
cp awscreds.template awscreds.conf
コピーし忘れると
ERROR: No IAM role is associated with this EC2 instance.
とエラーが発生する
起動確認
下記コマンドで動作するか確認する
./mon-put-instance-data.pl --mem-util --mem-used --mem-avail
Successfully reported metrics to CloudWatch. と表示されれば成功
もし「Can’t locate Digest/SHA.pm」エラーが発生した場合は
sudo yum install -y perl-Digest-SHA
Cron設定
あとは定期的にCloudWatchにデータを送るCronを設定すればよい
crontab -eでcronを編集
*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-util --disk-space-util --disk-path=/ --from-cron
*メモリ使用率、ディスク使用率をCloudWatchに送信
Cronで実行されているかを念のため確認
cat /var/log/cron
CloudWatch上に登録
アラームを設定するが、取得した値はLinuxシステムメトリックス欄に追加されている
インスタンス別欄には追加されていないので注意
本家マニュアル
本家マニュアル(参考)
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/mon-scripts.html