せっかくAWSを使っているのでCloudWatchを設定してみた
無料なんだから使わないともったいないよね。
カスタムメトリックスは無料じゃないかも!
ここで確認を。
# ec2インスタンスにログイン後
[bash]
$ wget http://ec2-downloads.s3.amazonaws.com/CloudWatch-2010-08-01.zip
$ unzip CloudWatch-2010-08-01.zip
$ cd CloudWatch-1.0.13.4
$ cp credential-file-path.template credentials
$ vi credentials
[/bash]
# IAMでCloudWatch専用ユーザーを作成する。
ユーザー名:cloudwatchuser
AWSAccessKeyId=*****
AWSSecretKey=*****
credentials に書き込む
パーミッションはGUIからGenerateした結果が以下でした。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1386225799000",
"Effect": "Allow",
"Action": [
"cloudwatch:PutMetricData"
],
"Resource": [
"*"
]
}
]
}
# データを送るシェルスクリプトを作成する
[bash]
$ vim ./custom_metrics_report.sh
#!/bin/bash
export AWS_CLOUDWATCH_HOME=/home/ec2-user/cloudwatch/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
# get ec2 instance id
instanceid=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`
# get loadavelage
loadave1=`uptime | tr -s ' ' | cut -d ' ' -f 11 | cut -d ',' -f 1`
mon-put-data --metric-name "LoadAverage" --namespace "System/Linux" --dimensions "InstanceId=$instanceid" --value "$loadave1" --unit "Count" --region ap-northeast-1
[/bash]
# crontab に登録する
chmod 755 custom_metrics_report.sh
crontab -e
*/5 * * * * /home/ec2-user/cloudwatch/custom_metrics_report.sh
crontab -l
参考
http://dev.classmethod.jp/cloud/cloudwatch-custom-metrics-vmstat-free-uptime/
僕の場合こんなディレクトリ構成でした。AWS_CLOUDWATCH_HOMEの変数が mon-put-data で使われてるようなので、そのへんだけ注意すればよさそうです。
/home/ec2-user/cloudwatch/custom_metrics_report.sh
/home/ec2-user/cloudwatch/CloudWatch-1.0.13.4/bin
/home/ec2-user/cloudwatch/CloudWatch-1.0.13.4/credentials
CloudWatch と IAM ってはじめて使った
#CloudWatchに登録する
僕の場合は Metrix をクリックして Linux System Metrics: 1 のができていて、そこにLoadAverageの取得ができるようになってました
ClowdWatchのアラートから AutoScalLing Action とかできるようなので色々できて楽しげですね。AWSすごい。
おわり。