🐈

put-metric-alarmでMetricMathを使う

2022/12/02に公開

はじめに

awscli put-metric-alarmで MetricMath を使ったことがないのでやってみます。
MetricMathを使用した、EC2 平均スループットで設定します。

環境

OS: 4.14.294-220.533.amzn2.x86_64
aws-cli: 2.8.12

スクリプト

#!/bin/bash

instance_id=""

aws cloudwatch put-metric-alarm \
--alarm-name "[TEST]EC2 AvarageThroughput" \
--evaluation-periods 1 \
--comparison-operator GreaterThanOrEqualToThreshold \
--threshold 14745600 \
--metrics '[{"Id": "m1","MetricStat": {"Metric": {"Namespace": "AWS/EC2","MetricName": "EBSWriteBytes","Dimensions": [{"Name": "InstanceId","Value": "'${instance_id}'"}]},"Period": 300,"Stat": "Sum","Unit": "Bytes"},"ReturnData": false}, {"Id": "m2","MetricStat": {"Metric": {"Namespace": "AWS/EC2","MetricName": "EBSReadBytes","Dimensions": [{"Name": "InstanceId","Value": "'${instance_id}'"}]},"Period": 300,"Stat": "Sum","Unit": "Bytes"},"Label": "","ReturnData": false}, {"Id": "result","Expression": "(m1+m2)/300","Label": "EC2-AvarageThroughput","ReturnData": true,"Period": 300}]'

--metrics 部分

[
	{
		"Id": "m1",
		"MetricStat": {
			"Metric": {
				"Namespace": "AWS/EC2",
				"MetricName": "EBSWriteBytes",
				"Dimensions": [
					{
						"Name": "InstanceId",
						"Value": "'${instance_id}'"
					}
				]
			},
			"Period": 300,
			"Stat": "Sum",
			"Unit": "Bytes"
		},
		"ReturnData": false
	},
	{
		"Id": "m2",
		"MetricStat": {
			"Metric": {
				"Namespace": "AWS/EC2",
				"MetricName": "EBSReadBytes",
				"Dimensions": [
					{
						"Name": "InstanceId",
						"Value": "'${instance_id}'"
					}
				]
			},
			"Period": 300,
			"Stat": "Sum",
			"Unit": "Bytes"
		},
		"Label": "",
		"ReturnData": false
	},
	{
		"Id": "result",
		"Expression": "(m1+m2)/300",
		"Label": "EC2-AvarageThroughput",
		"ReturnData": true,
		"Period": 300
	}
]

metrics(リスト) にてMetricMathを設定します。
ReturnData は、アラームとして使用する1つの式の結果に対して true で設定する
その他のメトリクス・式については false で設定しておく必要がある。

コンソール確認

参考

Discussion