🐈
put-metric-alarmでMetricMathを使う
はじめに
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