AWSにサーバ監視ツールのCloudWatchが追加されて随分経ちますが、
DiskReadやDiskWriteの監視はあっても、
DiskUsageや、FreeSpaceがありません。
EBSに付随するのか、EC2に付随するのかも良く分からない為、
とりあえず英語で検索して出てきた結果を使ってCloudWatchによる監視を追加しました。
CloudWatchコマンドラインツールのDL
まずはCloudWatchコマンドラインツールをダウンロードし、展開します。最新版はhttp://aws.amazon.com/developertools/2534にあります。
cd /usr/local/src/ wget http://ec2-downloads.s3.amazonaws.com/CloudWatch-2010-08-01.zip unzip CloudWatch-2010-08-01.zip
アクセスキーの設定
EC2からCloudWatchにアクセスする為にアクセスキーを設定します。cd /usr/local/src/CloudWatch-1.0.13.4/ cp credential-file-path.template credentials vi credentials # 中身はこんな感じで設定 AWSAccessKeyId=<Write your AWS access ID> AWSSecretKey=<Write your AWS secret key>AWS access IDと、AWS secret keyは、AWS管理画面のセキュリティ証明書のメニューから取得して下さい。
Shell Scriptの作成
下のスクリプトをコピーして使って下さい。#!/bin/bash export AWS_CLOUDWATCH_HOME=/usr/local/src/CloudWatch-1.0.13.4 export AWS_CREDENTIAL_FILE=/$AWS_CLOUDWATCH_HOME/credentials export AWS_CLOUDWATCH_URL=https://monitoring.amazonaws.com export PATH=$AWS_CLOUDWATCH_HOME/bin:$PATH export JAVA_HOME=/usr/lib/jvm/jre path='/' region='ap-northeast-1' if [ -n "$1" ]; then path=$1 fi # get EC2 instance ID instanceid=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id` freespace=`df --local --block-size=1M $path | grep $path | tr -s ' ' | cut -d ' ' -f 4` usedpercent=`df --local $path | grep $path | tr -s ' ' | cut -d ' ' -f 5 | grep -o "[0-9]*"` mon-put-data --metric-name "FreeSpaceMBytes" --namespace "System/Linux" --dimensions "InstanceId=$instanceid,Path=$path" --value "$freespace" --unit "Megabytes" --region "$region" mon-put-data --metric-name "UsedSpacePercent" --namespace "System/Linux" --dimensions "InstanceId=$instanceid,Path=$path" --value "$usedpercent" --unit "Percent" --region "$region"
cronに登録する
5分おきにスクリプトが実行されるようにcronに登録しておきましょう。# Monitoring Disk Space */5 * * * * path to mon-disk-space.sh
CloudWatchでの確認
CloudWatchの管理画面で確認後はこのようにリストに出てきます。
0 件のコメント:
コメントを投稿