share facebook facebook twitter menu hatena pocket slack

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

川原 洋平

WRITTEN BY 川原 洋平

これは

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

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

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

作ったもの

inokappa/cw
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 のメトリクスを取得するコマンドを作った

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。