こんにちは!
最近WebアプリケーションをAWSのECS on Fargateで動かせるように、AWSリソースの設計だったり構築を行っています。
上記取り組みの中でCloudWatchアラームをCDKで作成する機会があったので、アラームの基本を自分の理解でまとめてみました
具体的にはAmazonCloudWatchの公式ドキュメントのアラームの評価という項目の説明がサクッと理解できるようになることが目標です。
以下今回理解する目標のドキュメントの引用です(読んですぐ理解できる方には、必要ない記事かもです)
アラームを作成するときに、CloudWatch がアラームの状態を変更するタイミングを評価できるように 3 つの設定を指定します。
[期間] は、アラームの各データポイントを作成することを目的として、メトリクスや式を評価するために使用する期間です。これは秒単位で表されます。
[Evaluation Periods (評価期間)] は、アラームの状態を決定するまでに要する最新の期間またはデータポイントの数です。
[Datapoints to Alarm (アラームを実行するデータポイント)] は、アラームが ALARM 状態に移るためにしきい値を超過する必要がある評価期間内のデータポイントの数です。しきい値を超過したデータポイントは連続している必要はありません。しかしすべてが [Evaluation Period] (評価期間) に相当する直近のデータポイント数に含まれている必要があります。
期間が 1 分以上の場合、アラームは 1 分ごとに評価され、評価は [期間] と [評価期間] で定義されている時間枠に基づいて行われます。例えば、[期間] が 5 分 (300 秒) で、[評価期間] が 1 の場合、5 分終了時に、アラームは 1 分~5 分のデータに基づいて評価されます。続いて、6 分終了時に、2 分~6 分のデータに基づいてアラームが評価されます。
アラームの挙動を理解するために、抑えておくとよさそうなことは、アラーム作成するときは、CloudWatchの中でメトリクス/メトリクスのグラフ化/アラームがAlarm状態になる条件という3つの基本概念に対して明確な認識を持つことです。また注意事項としてアラームの作成には、メトリクスの選択とその選択したメトリクスのグラフ化を必ず実施します(詳しくはAWSマネジメントコンソールから、CloudWatchアラームを作成しようとすればわかります)以下に太字にした3つの基本概念の説明とそれを具体例に落とし込み、結論としてその具体例だとどのようなアラームの挙動になるのか説明します。
3つの基本概念の説明
・メトリクス: 特定の時間のAWSリソースの状態の値
・メトリクスのグラフ化: グラフにしたいメトリクスに対して統計と期間を設定し、その設定に基づく値を時系列に沿ってプロットしていく
・Alarm状態になる条件: グラフ化されたメトリクスに対してAlarm状態になる条件の評価をするために、評価期間/Alarm状態になるデータポイント数(Datapoints to Alarm)/しきい値/しきい値に対するデータポイントの比較を設定し、その評価がアラーム対象基準になったらアラームをAlarm状態にする
実際にありそうな具体例
・やりたいこと
ECSで起動しているタスクが1より下になったらSlackに通知したい。
CloudWatchアラームからSNS→Chatbotの流れを考えて、アラームの作成に入る。
アラーム作成に当たって下記の条件のアラームを作成する
・使用するメトリクス
メトリクス名:RunningTaskCount
メトリクスの説明:指定したクラスターとサービスで起動しているタスクの数をカウントしてくれる
・上記メトリクスをグラフ化する
統計:平均
期間:5分
ここわかりにくいので説明します。
この設定のグラフのY軸にくる値は、メトリクスが5分間で取得したデータに紐づくタスクの数の平均です。つまりグラフに点がプロットされるまでに5分間が必要です。そのあとは毎秒ごとに、点がプロットされます
・Alarm状態になる条件
評価期間:2(評価期間は評価するデータポイント数)
Alarm状態になるデータポイント数:1
しきい値:1
しきい値に対するデータポイントの比較:閾値より小さい
上記太字設定を踏まえたアラームの挙動
アラームはメトリクスのグラフ化で設定した期間が1分以上の時、1分ごとに値を評価します。今回メトリクスのグラフ化で設定した期間が5分なのでアラーム作成から、5分経ってグラフに1つデータポイントがプロットされ、その点をまず評価します。今回は評価期間が2なので、1分後のデータポイントの評価を待ちます。1分後(アラーム作成から6分後の)データポイントを評価します。これで2つのデータポイントを評価しました。その2つのデータポイントのうち1つでも、アラーム対象基準の値(例:2つ目のデータポイントのタスクカウント数が0)になったら、アラームがAlarm状態になります。(評価期間:2 アラームを実行するデータポイント:1の場合)
まとめ
もう一度公式ドキュメントの引用を読んでみましょう
アラームを作成するときに、CloudWatch がアラームの状態を変更するタイミングを評価できるように 3 つの設定を指定します。
[期間] は、アラームの各データポイントを作成することを目的として、メトリクスや式を評価するために使用する期間です。これは秒単位で表されます。
[Evaluation Periods (評価期間)] は、アラームの状態を決定するまでに要する最新の期間またはデータポイントの数です。
[Datapoints to Alarm (アラームを実行するデータポイント)] は、アラームが ALARM 状態に移るためにしきい値を超過する必要がある評価期間内のデータポイントの数です。しきい値を超過したデータポイントは連続している必要はありません。しかしすべてが [Evaluation Period] (評価期間) に相当する直近のデータポイント数に含まれている必要があります。
期間が 1 分以上の場合、アラームは 1 分ごとに評価され、評価は [期間] と [評価期間] で定義されている時間枠に基づいて行われます。例えば、[期間] が 5 分 (300 秒) で、[評価期間] が 1 の場合、5 分終了時に、アラームは 1 分~5 分のデータに基づいて評価されます。続いて、6 分終了時に、2 分~6 分のデータに基づいてアラームが評価されます。
公式ドキュメントの内容が読みやすくなったら幸いです。
以上です。