はじめに
Cloudwatchで複数のメトリクス・複数の条件でアラーム設定したい場合、のお話です。例えば、LoadBalancerにおける「HTTP400カウントのHTTP200カウントに対する比がXX以上」かつ「HTTP400カウントの実数がYY回以上」などとしたい場合です。
複合アラームの場合
下記アラームをそれぞれ作成します。
- 「HTTP400カウントのHTTP200カウントに対する比がXX以上」
- 「HTTP400カウントの実数がYY回以上」
条件にしたいアラームを全て選択して、「複合アラームの作成」を実施します。各アラームのAND/OR条件を選択すれば、あとは通常のアラーム作成と同じです。
数式 ( Metric Math ) のみで解決する
上記のように、複数条件がある場合は複合アラームで対応していたのですが、アラームを最低3つ作成する必要があります。作成の手間と、管理コストが増えます。対して、演算で表現するとアラーム1つで済む可能性があります。
例えば、下記のように表します。2.「HTTP400カウントの実数がYY回以上」の条件で乗算しているので、条件を満たさなければ偽(ゼロ)になります。後は、アラームで1. 条件の閾値を設定するだけです。
(m1*100)/(m1+m2)*(m1>YY)
または、IF式を使って下記のようにも表せます。
IF(m1>YY,(m1*100)/(m1+m2),0)
参考:
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/using-metric-math.html
まとめ
Cloudwatchで、数式や関数はたまに使っていたのですが、条件式(比較演算、IF式)は有効活用できていませんでした。思考停止で複合アラームを使っていた私には、この解決策はあまりにも単純で目から鱗だったのでまとめました。
複数メトリクス・複数条件のCloudwatchアラームは、「複合アラーム」の前に「数式」で解決できないか検討してみると吉