【CloudFormation】CloudWatchアラートでMetric Mathを利用して、複数メトリクスを合算した閾値を作成する
本記事では、CloudFormationによる、CloudWatchアラートでMetric Mathを利用して、複数メトリクスを合算した閾値を作成する方法について、コード付きで解説します。

前提
Kafkaは事前に作成する。
リソースの名前は下記。
・Kafka:test-kafka
説明
Amazon MSKでは、ブローカーの合計CPU使用率(CPU User + CPU System) を60%未満に維持することを推奨している。
CloudWatch Alramにて、複数メトリクスの合計値を閾値としてアラームを作成する場合、[1] のようなMetric Mathを使用することで実現可能。
Expressionはm1,m2を足し合わせる数式を表し、m1,m2にて具体的なメトリクスについて指定をしている。
実際のコード
AWSTemplateFormatVersion: "2010-09-09"
#####################################################################
#
# Parameters
#
#####################################################################
Parameters:
SNSTopicName:
Type: String
Default: test-sns
KafkaClusterName:
Type: String
Default: test-kafka
KafkaBrokerID:
Type: String
Default: 1
Resources:
#####################################################################
#
# Kafka Broker 1
#
#####################################################################
KafkaCPUUtilizationAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmActions:
- !Ref SNSTopicName
AlarmName: !Sub Kafka CPU_Utilization
EvaluationPeriods: 2
Threshold: 60 #閾値
TreatMissingData: breaching # データ欠損時はアラート状態とする
OKActions:
- !Ref SNSTopicName
ComparisonOperator: GreaterThanThreshold
Metrics: #メトリクスとしてm1とm2を足すことを表現している
- Expression: m1 + m2
Id: result
Label: CPU_Utilization
ReturnData: true
- Id: m1
Label: CpuUser
MetricStat:
Metric:
MetricName: CpuUser
Dimensions:
- Name: Cluster Name
Value: !Ref KafkaClusterName
- Name: Broker ID
Value: !Ref KafkaBrokerID
Namespace: AWS/Kafka
Period: 300
Stat: Average
ReturnData: false
- Id: m2
Label: CpuSystem
MetricStat:
Metric:
MetricName: CpuSystem
Dimensions:
- Name: Cluster Name
Value: !Ref KafkaClusterName
- Name: Broker ID
Value: !Ref KafkaBrokerID
Namespace: AWS/Kafka
Period: 300
Stat: Average
ReturnData: false