AWS CloudWatchはコマンドラインツール(CLI)で操作することが出来る。
WindowsおよびUNIXで使える。
CloudWatchのCLIツールを使うには、事前にいくつか環境変数を設定する必要がある。
export AWS_CLOUDWATCH_HOME="/usr/local/CloudWatch-1.0.13.4" export EC2_CERT="/home/hishidama/.ssh/pem/cert-〜.pem" export EC2_PRIVATE_KEY="/home/hishidama/.ssh/pem/pk-〜.pem" export EC2_REGION=ap-northeast-1
環境変数AWS_CLOUDWATCH_HOMEは必須。アーカイブを解凍した場所を指す。
EC2_CERTとEC2_PRIVATE_KEYは、認証情報ファイルの場所を指す。
これらの設定はEC2のCLIツールと共通で使える。
EC2_REGIONは接続するリージョンを指定する。
メトリクス一覧を表示する例。
$ mon-list-metrics --region ap-northeast-1
接続先リージョンを指定しないと、どことも知れない場所のメトリクスが取れる(爆)
「--region」を毎回指定するのは面倒なので、環境変数EC2_REGIONを指定しておくと良い。
$ export EC2_REGION=ap-northeast-1 $ mon-list-metrics
特定のEC2インスタンスのCPUUtilization(CPU使用率を示すメトリクス)の最大値を取得する例。
$ mon-get-stats CPUUtilization --namespace "AWS/EC2" --statistics "Maximum" --dimensions "InstanceId=i-abcdefzz"
メトリクス(値)は、一定期間内の最大値・最小値・平均値等として取得される。
アラームを表示する例。
$ mon-describe-alarms
アラームのステータスは、ALARM・OK・INSUFFICIENT DATAの3種類。
ALARM | 設定した閾値を超えた。 |
OK | 設定した閾値の範囲内。 |
INSUFFICIENT DATA | 判定対象の値が取れなかった。 |
参考: j3tm0t0さんのAmazon CloudWatchでインスタンス死活監視
アラームを設定(作成)する例。
60秒間隔でCPUUtilizationの最小値が80以上になったらエラーとするアラーム。
$ mon-put-metric-alarm alarm-test1 \ --metric-name "CPUUtilization" --namespace "AWS/EC2" \ --statistic "Minimum" --threshold 80 --comparison-operator GreaterThanOrEqualToThreshold \ --period 60 --evaluation-periods 1 \ --dimensions "InstanceId=i-abcdefzz"
periodはアラームの監視間隔(単位:秒)、evaluation-periodsは回数らしい。
period×evaluation-periodsは86400秒(24時間)以内にしなければならない。86400秒を超えると以下の様なエラーになる。
Exception in thread "main" Status Code: 400, AWS Service:
AmazonCloudWatch, AWS Request ID: 345461df-c909-11e2-a507-a16d3e199845, AWS
Error Code: ValidationError, AWS Error Message: Metrics cannot be checked across
more than a day (EvaluationPeriods * Period must be <= 86400).
periodは監視を行う間隔で、period×evaluation-periodsは監視対象メトリクスの値を取得する期間だと思われる。
(その期間内の最大値とか最小値とかがアラームの判定対象の値となる)
period | evaluation-periods | 監視間隔 | メトリクス取得対象期間 |
---|---|---|---|
60 | 3 | 60秒 | 180(=60×3)秒 |
180 | 1 | 180秒 | 180(=180×1)秒 |