背景
CloudFormationでCloudWatchAlarmを作成するために公式ドキュメント見ていて、一瞬よくわからなかったパラメータや、地味に使いそうなパラメータがあったので備忘録的にまとめます。
パラメータ
###1. EvaluationPeriods と DatapointsToAlarm
・EvaluationPeriods
:閾値を超えたかどうかを評価する直近の評価期間
・DatapointsToAlarm
:アラームを発生させるデータポイント数
評価期間中、(EvaluationPeriods
- DatapointsToAlarm
)回は閾値を超えてもアラームは発生しない。
例えば…
EvaluationPeriods: 5
DatapointsToAlarm: 3
このようにCFnで設定した場合、直近の評価するデータポイント5個中、3回以上閾値超えるとアラーム発生することになります。
データポイント(右から直近) : 結果
○○x○x → OK
○x○xx → Alarm
ちなみに、DatapointsToAlarm
を書かなかった場合は自動的に、
DatapointsToAlarm = {EvaluationPeriodsで設定した値}
となるみたいです。(つまり、一回でも閾値超えるとAlarm発生)
###2. TreatMissingData
CloudWatch Alarmで評価したいデータが取得できず欠落データになる場合があります。(アラームで監視する対象のサーバがダウンしたり、通信障害が発生した時など)
欠落データでは閾値を超えたかどうか判定できません。
そんな時アラームを出すかどうかを判断するパラメータです。
設定可能な値
・notBreaching
:欠落データは「良好」と判断される
・breaching
:欠落データは「不良」とされる
・ignore
:現在のアラーム状態が維持される
・missing
:評価期間内にデータポイントが一つもない場合、アラームはINSUFFICIENT_DATA(データ数不足)
に移行する
INSUFFICIENT_DATA
はアラーム状態ではないので、この状態に移行しても通知を飛ばしてくれません。
TreatMissingData
はCFnで必須のパラメータではありませんが、書かないと自動的に'missing'
設定となりデータ欠落時にすぐSNS等に通知してくれないので、できるだけ以下のように書いた方が良いと個人的には思います。
TreatMissingData: breaching
###3. OKActions
CloudWatch Alarm設定するということは、アラーム発生時にSNS等に通知したいことが多いはずなのでAlarmActions
は記述することは多いと思います。
一方、見落としがちなのがOKActions
です。
これはAlarm状態からOK状態に遷移した時に通知する通知先を設定するパラメータです。
CFnでは必須のパラメータではありませんが、運用的にこっちも書いておいた方が何かと便利そうです。
例↓
AlarmActions:
- <SNSトピックのARN>
OKActions
- <SNSトピックのARN>
最後に
何か間違っていること等あればコメントいただけると幸いです…!
参考1:CloudWatchアラームのCloudFormation
参考2:CloudWatchアラーム欠落データの取扱い