CloudWatchアラームに「慣らし運転」ができた — デプロイ直後の誤報を止めるウォームアップ期間の設計判断
Amazon CloudWatchアラームに、作成・更新直後の評価を遅らせる「ウォームアップ期間」が追加されました。IaCでサービスとアラームを同時にプロビジョニングする運用が起こしやすい誤報を、2つのパラメータでどう設計的に消すかを整理します。
- #Amazon CloudWatch
- #AWS CloudFormation
- #SRE
- #監視設計
- #IaC
2026年9月1日、AWSはAmazon CloudWatchアラームに「ウォームアップ期間」機能を追加したと発表しました。アラームの作成・更新直後は評価開始を意図的に遅らせ、新しいリソースやサービスがまだメトリクスを送り始めていない時間帯での誤った通知を防ぐ機能です。サービスとアラームをIaCで同時にプロビジョニングする運用ほど恩恵が大きい変更で、WarmUpConfiguration という2つのパラメータだけで挙動を決められます。この記事では、何を解決する機能なのか、2つのパラメータをどう選ぶべきかを整理します。
何が起きていたか — 起動直後のアラームはなぜ暴れるか
CloudWatchアラームは作成された瞬間、状態が INSUFFICIENT_DATA(データ不足)になります。そこから評価が始まり、条件に応じて状態が変わっていきます。ここで問題になるのが、新しいリソースやサービスはメトリクスの送信を即座には始めない、という現実です。EC2インスタンスの起動、ECSタスクの立ち上がり、Lambda関数のコールドスタートなど、どれもメトリクスが安定して流れ出すまでに数分のラグがあります。
CI/CDパイプラインでアラームをサービスと同時にプロビジョニングする構成では、この「データが来ない数分間」をそのままアラームが評価してしまいます。データ欠損時の挙動を決める TreatMissingData の設定によっては、データが無いこと自体を「しきい値を超えている」とみなして通知を飛ばしてしまう構成もあり、デプロイのたびにオンコールが誤って鳴る、という運用上のノイズにつながっていました。これまでこの誤報を避けるには、アラームの作成をサービスの起動後まで遅らせる、あるいはデプロイ直後だけ通知アクションを無効化するといった、パイプライン側での回避策が必要でした。
評価ウィンドウとINSUFFICIENT_DATAの関係
対処法を理解する前提として、アラームがいつ「評価できる」とみなすかを押さえておきます。アラームの評価対象になる時間の範囲(評価ウィンドウ)は、Period(1データポイントの集計間隔・秒)と EvaluationPeriods(何個ぶんのデータポイントを見るか)の掛け算で決まります。たとえば5分間隔で3期間分を見るアラームなら、評価ウィンドウは15分です。
このウィンドウを埋めるだけのデータが無い間、アラームは INSUFFICIENT_DATA のままです。TreatMissingData を breaching(データ欠損をしきい値超過とみなす)や notBreaching(正常とみなす)に設定していると、ウィンドウが埋まっていない状態でも状態遷移が起きます。デフォルトの missing でも、部分的にデータが来ている境界のタイミングで意図しない評価が走ることがあります。ウォームアップ期間は、この「ウィンドウが埋まりきっていない不安定な評価」自体を、作成・更新直後の一定時間はスキップする仕組みです。
何が変わったか — WarmUpConfigurationの2パラメータ
新しく追加された WarmUpConfiguration は、次の2つのプロパティで構成されます。
| プロパティ | 必須 | 内容 |
|---|---|---|
WarmUpPeriodDurationInMinutes | 必須 | ウォームアップ期間の長さ(分)。1〜2,880分(2日間)の範囲で指定 |
OnlyStartEvaluatingAfterWarmUpPeriodEnds | 任意(既定 false) | 評価をいつ始めるかの制御 |
OnlyStartEvaluatingAfterWarmUpPeriodEnds が既定の false の場合、アラームは評価ウィンドウを埋めるのに十分なデータが揃った時点で、指定したウォームアップ期間の途中でもウォームアップを早期終了し、評価を始めます。true にすると、データが早く揃ってもウォームアップ期間が満了するまで待ってから評価を始めます。
公式ドキュメントが挙げる例はこうです。5分間隔・3評価期間(評価ウィンドウ15分)のアラームを10:00に作成し、対象リソースが10:04からデータを送り始めたとします。false(既定)であれば、15分ぶんのデータが揃う約10:19の時点でウォームアップが早期終了し、そこから評価が始まります。trueであれば、指定したウォームアップ期間が満了するまでは、たとえ15分ぶんのデータが揃っていても評価は始まりません。
設計判断 — falseとtrueをどちらにするか
既定の false は、できるだけ早くアラームによる保護を効かせたい一般的なサービスに向きます。データさえ揃えば、指定した期間の途中でも評価が始まるため、ウォームアップによる保護の空白時間を最小限にできます。
true を選ぶべきは、起動直後に一過性の変動がしきい値を誤って超えてしまうケースです。たとえば、起動時にキャッシュのウォームアップやバッチの初期投入でCPU使用率が一時的にスパイクするワークロードでは、データが早く揃った分だけ早期評価してしまうと、その瞬間的なスパイクを拾って誤報になりかねません。true にして起動時特有の変動が収まるまで評価そのものを待たせることで、この種の誤報を防げます。
ただし true にすると、ウォームアップ期間中はアラームによる保護が完全に効かない時間になる点はトレードオフです。この間に本物の障害が起きても、このアラームは通知しません。WarmUpPeriodDurationInMinutes は「念のため長めに」ではなく、対象ワークロードの実際の起動特性(キャッシュが温まるまで、バッチ投入が終わるまで等)に合わせて、必要な最小限の時間を指定するのが設計として妥当です。
実務ポイント
- 適用されるのはアラームの作成時のみで、一度きりです。 稼働中のアラームを更新しても新しいウォームアップ期間は始まりません。ウォームアップの最中であれば設定を変更でき、更新によって早期に終了させることもできます。
- 評価状態は
IN_WARM_UPとして確認できます。 ウォームアップ中、アラームの状態自体はINSUFFICIENT_DATAのままですが、DescribeAlarmsAPIで評価状態がIN_WARM_UPかどうかを見分けられます。 - メトリクスアラームとログアラームの両方に対応します。 CloudWatchが提供されている全リージョンで利用でき、追加料金はなく、既存のCloudWatchアラーム料金の範囲内です。
- アラームアクションは実行されません。 ウォームアップ中は状態が
INSUFFICIENT_DATAのままのため、通知・オートスケーリング等のアラームアクションは発火しません。
まとめ
- CloudWatchアラームに、作成・更新直後の評価を遅らせる「ウォームアップ期間」(
WarmUpConfiguration)が追加されました。 WarmUpPeriodDurationInMinutes(必須・1〜2,880分)とOnlyStartEvaluatingAfterWarmUpPeriodEnds(任意・既定false)の2パラメータで、評価開始を早期終了させるか満了まで待たせるかを選べます。- 適用は作成時の一度きりで、追加料金はありません。IaCでサービスとアラームを同時にデプロイする構成では、デフォルトの誤報を設計で消せる選択肢になります。
出典
- Amazon CloudWatch alarms support warm-up periods(What’s New。ページ内の表記は「Posted on: Sep 1, 2026」=2026年9月1日)
- AWS::CloudWatch::Alarm - AWS CloudFormation Template Reference
- Alarm warm-up periods - Amazon CloudWatch User Guide