Amazon CloudWatch のキーワード その1

AWS

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon CloudWatchのキーワードを理解する その1

CloudWatchへの理解を深めるために良く出てくるキーワードについてご紹介します。

メトリクス(Metrics)

メトリクスは、CloudWatchの基本概念であり、ある時間ごとのデータ集合を表します。 ユーザかAWS製品はCloudWatchへメトリクスのデータを発行すると、CloudWatchとユーザは時系列の統計データを取得します。 例えば、あるAmazon EC2 のCPU使用率はメトリクスの1つで、ELB(Elastic Load Balancer)のレイテンシ(待ち時間)もメトリクスの1つです。

以下は、Amazon EC2 のメトリクス一覧です。

メニュー部分を見て頂きますと、EC2の他にRDS,EBS,ELB,SNS,SQSがありますね。未だ全てのAWSサービスを網羅していませんがこれから増えるのではないでしょうか。

メトリクスは、名前/ネームスペース/ディメンションにおいて一意である必要があります。各データ集合は、タイムスタンプとユニット(測定単位でオプション指定)を持ちます。ユーザが統計へリクエストするとき、返されるデータはネームスペース/メトリクス名/ディメンション/ユニットによって特定されます。これらが不一致だと取得できません。

ユーザはPutMetricDataというAPIを用いて、カスタムメトリクスの作成やデータの発行ができます。Amazon CloudWatchは重複する発行があった場合にはそれらを集約します。

CloudWatchは統計データを2週間まで保管してくれます。

ネームスペース(Namespaces)

ネームスペースは、複数のメトリクスをまとめてコンテナ(箱)で管理する概念です。ネームスペースによって、メトリクスは分離されますので、異なるアプリケーションにおいて同じ統計で間違った集約はされません。ネームスペース名はメトリクスを作成する際に決めます。256文字以内でValidなXMLに付けられる文字である必要があります。デフォルトのネームスペース名はありませんのでユーザは命名する必要があります。

以下は、AWS製品が持っているネームスペース名です。"AWS/"から始まる文字列です。

ディメンション(Dimensions)

ディメンション(次元)は、キーバリューの形でメトリクスを特定するために用います。全てのメトリクスは特性が定義されていて、ディメンションはその特性をカテゴリーとして考えることができます。1つのメトリクスには最大で10のディメンションを定義できます。

Amazon EC2 では、以下のようなディメンションが定義されています。AutoScalingのグループ名などをディメンションに指定できます。

  • AutoScalingGroupName
  • ImageId
  • InstanceId
  • InstanceType

以下はコンソール画面です。アラートが設定されています。ディメンションでインスタンスIDを指定してCPU使用率が閾値を超えたら通知されるように設定しています。この、インスタンスIDを指定している部分がディメンションです。

タイムスタンプ(Time stamps)

CloudWatchは、データを登録する際にタイムスタンプを付加しなければいけません。タイムスタンプの時間範囲は、過去日付で2週間前まで、未来日付で1日後までとなっています。もし、タイムスタンプが付加されなかった場合は、データが登録された日時で登録されます。ちなみに、このタイムスタンプの形式が曲者です。たとえば、2007-01-31T23:59:59Z のようにdateTimeオブジェクト形式(http://www.w3.org/TR/xmlschema-2/#dateTime)にする必要があります。また、UTC時間で登録してください。コマンドラインや自作APIからアクセスする場合は、この日付生成部分をライブラリ化したほうがよいでしょう。

ユニット(Units)

ユニットは、統計する単位を表します。例えば、Amazon EC2 の NetworkIn メトリクスのユニットは Bytes です。カスタムメトリクスを定義する場合には、新たに単位を指定することができます。パーセントや温度など。これらは集約して並べることができるわけです。

以下は、CloudWatchが既に定義しているユニットの一覧です。

  • Seconds
  • Microseconds
  • Milliseconds
  • Bytes
  • Kilobytes
  • Megabytes
  • Gigabytes
  • Terabytes
  • Bits
  • Kilobits
  • Megabits
  • Gigabits
  • Terabits
  • Percent
  • Count
  • Bytes/Second
  • Kilobytes/Second
  • Megabytes/Second
  • Gigabytes/Second
  • Terabytes/Second
  • Bits/Second
  • Kilobits/Second
  • Megabits/Second
  • Gigabits/Second
  • Terabits/Second
  • Count/Second
  • None

CloudWatch自体はユニットに意味を持っていませんが、CloudWatchを利用する他のアプリケーションはユニットに意味を見いだします。もし、ユニットを指定せずにデータを発行した場合、CloudWatchはユニット名としてNoneを指定します。

ユニットを指定せずに統計データを取得するとき、CloudWatchは同じユニットの全てのデータを集めます。もし同じメトリクス名で2つの異なるユニットを指定しているならば、2つの統計データが取得できるはずです。

次回へつづく。。。

参考ドキュメント

Amazon CloudWatch Developer Guide

AWS Cloud Roadshow 2017 福岡