LoginSignup
7
7

More than 5 years have passed since last update.

CloudWatchで1つのMetricsに複数の系列を入れちゃおう

Posted at

はじめに

みんな大好きCloudWatchのCustom Metrics。値の入れ方は2通り。

  • Valueを1つ指定
  • Statistics Valueを指定

前者は複数のデータソースから1データサンプルずつを入れるイメージです。
もし複数のデータがある場合には、それらのMin/Avg/Max/SumをCloudWatchが計算してくれます。

後者の場合にはPutする時点で集計を終わらせて、

  • Minimum
  • Maximum
  • Sum
  • SampleCount

を全て指定する必要があります(Average は自動的に Sum / SampleCount になります)。
これらの数字は1回のGetMetricStatisticsで取り出す事が出来ます。

記録したい系列が2つ以上ある場合、それぞれに脈絡のない別の数字を入れてPutMetricDataすると、取り出す時に一気に取り出せて、若干のお得感があります。

どうやるの

$ aws cloudwatch put-metric-data --namespace "multivalue" --metric-name "foo" --statistic-values Minimum=1,Maximum=3,SampleCount=2,Sum=4

$ aws cloudwatch get-metric-statistics --namespace "multivalue" --metric-name "foo" --start-time $(date -v 1H -u +%Y-%m-%dT%H:%M:%S) --end-time $(date -u +%Y-%m-%dT%H:%M:%S) --period 60 --statistics Minimum Average Maximum Sum SampleCount
{
    "Datapoints": [
        {
            "SampleCount": 2.0,
            "Timestamp": "2014-08-08T15:41:00Z",
            "Average": 2.0,
            "Maximum": 3.0,
            "Minimum": 1.0,
            "Sum": 4.0,
            "Unit": "None"
        }
    ],
    "Label": "foo"
}

ちゃんとそれぞれに入れた値と、自動的に計算された Average が得られました。

制限事項

いくつか気をつけないといけない事があります。

Min > Max はダメです

$ aws cloudwatch put-metric-data --namespace "multivalue" --metric-name "foo" --statistic-values Minimum=3,Maximum=1,SampleCount=2,Sum=4

A client error (InvalidParameterValue) occurred when calling the PutMetricData operation: The parameter MetricData.member.1.StatisticValues.Maximum must be greater than MetricData.member.1.StatisticValues.Minimum.

当たり前と言えば、当たり前。

SampleCount = 0 もダメです

$ aws cloudwatch put-metric-data --namespace "multivalue" --metric-name "foo" --statistic-values Minimum=1,Maximum=3,SampleCount=0,Sum=4

A client error (InvalidParameterValue) occurred when calling the PutMetricData operation: The parameter MetricData.member.1.StatisticValues.SampleCount must not equal 0.

0で割れませんから、当然ですね。

そのくせ、

$ aws cloudwatch put-metric-data --namespace "multivalue" --metric-name "foo" --statistic-values Minimum=1,Maximum=3,SampleCount=1,Sum=0

みたいな矛盾しているパターンでも入れてしまえます。

以上、小ネタでした。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7