これは

集え、初老丸達よ。初老丸達による世界に向けた技術的(又はそれに関連する)な物語を綴るカレンダーです。我こそ初老丸という方、初老丸予備軍の方も奮ってご参加下さい。ジーク・初老丸!

qiita.com

初老丸 Advent Calendar 2017 5 日目の記事になる予定です。

tl;dr

AWS CLI の get-metric-statistics を利用して CloudWatch のメトリクスを取得する際、以下のように長ったらしいオプションを付けるのがダルかったので cw というコマンドを作った。

aws cloudwatch get-metric-statistics \
  --metric-name CPUUtilization \
  --start-time 2014-04-08T23:18:00 --end-time 2014-04-09T23:18:00 \
  --period 3600 \
  --namespace AWS/EC2 \
  --statistics Maximum \
  --dimensions Name=InstanceId,Value=i-abcdef

とにかくオプションが覚えられないのが辛い。

作ったもの

cw - YAML で定義したパラメータの CloudWatch メトリクスを取得するだけのツールです

github.com

使い方

YAML を書く

sample.yml というファイル名で以下のような定義を書く。

dev:                          # --target オプションで指定するキー
  start_time: -3600           # 取得開始時間を秒で指定(3600 秒前)
  metric_name: CPUUtilization # メトリクス名を指定
  namespace: AWS/EC2          # Namespace 名を指定
  period: 300                 # Period を指定
  statistics: Maximum         # 統計を指定(Minimum, Maximum, Sum, Average, SampleCount)
  dimensions:                 # ディメンション を指定
    - name: InstanceId
      value: i-xxxxxxxx
  unit: Percent               # 単位を指定(Seconds, Bytes, Percent, Count... etc)

statisticsunit の種類が直ぐに出てこなかったり、AWS CLI だとコマンドを再利用し辛かったりするので YAML に残しておくのは有りなんぢゃないかなと思う。

cw 実行

$ ./cw -profile=you_profile -config=path/to/sample.yml -target=dev

以下のように出力される。

[{
  Maximum: 0.491803278687332,
  Timestamp: 2017-11-26 13:37:00 +0000 UTC,
  Unit: "Percent"
} {
  Maximum: 0.500000000000303,
  Timestamp: 2017-11-26 13:42:00 +0000 UTC,
  Unit: "Percent"
} {
  Maximum: 0.500000000000303,
  Timestamp: 2017-11-26 13:47:00 +0000 UTC,
  Unit: "Percent"
}]

特に何も弄っていない。

以上

メモでした。年齢が上がってくるにつれ、コマンドラインオプションとか覚えられなくなるし、出来るだけコードとかに落としておくような癖をつけたいなと考えている。

元記事はこちら

YAML で定義したパラメータの CloudWatch のメトリクスを取得するコマンドを作った