せっかく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すごい。

おわり。