CloudWatch の異常検出機能を利用してアラームを作成する

2020.11.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、八木です。

CloudWatchアラームで、SNS トピックからアラートをメール配信できるサービスを使って異常検出を行う場合に、 予め決められた固定値に基づいて異常検出を行うだけではなく、より柔軟な値を設定できるサービスがあります。

本日は、CloudWatch の異常検出に基づいて、より柔軟なアラーム設定ができる機能について、ご紹介したいと思います。

CloudWatch の異常検出とは

CloudWatch の異常検出についての公式ドキュメントは以下となります。

CloudWatch の異常検出の使用

メトリクスの異常検出を有効にすると、CloudWatch は統計アルゴリズムと機械学習アルゴリズムを適用します。これらのアルゴリズムは、システムやアプリケーションのメトリクスを継続的に分析し、正常なベースラインを決定して、ユーザーの最小限の介入で異常を検出します。 これらのアルゴリズムは、異常検出モデルを生成します。モデルは、メトリクスの正常な動作を表す想定値の範囲を生成します。

CloudWatch の異常検出を利用することで、ユーザーは最小限の介入で異常検出ができる機能となっています。

想定値のモデルは、次の 2 つの方法で使用できます。 ・メトリクスの想定値に基づいて異常検出アラームを作成します。このタイプのアラームには、アラーム状態を決定するための静的なしきい値はありません。代わりに、異常検出モデルに基づいて、メトリクスの値と想定値を比較します。メトリクス値が想定値の範囲を上回った場合、下回った場合、または両方の場合にアラームをトリガーすることを選択できます。 ・メトリクスデータのグラフを表示するときに、想定値をバンドとしてグラフ上に重ねます。これにより、グラフで正常な範囲から外れている値を目で確認できます。 異常検出アルゴリズムは、メトリクスの季節的な変化と傾向の変化を考慮します。季節的な変化は、次の例に示すように、時間単位、日単位、週単位のいずれかになります。

機械学習アルゴリズムで季節性と傾向が考慮され、時間単位、日単位、週単位で季節的な変化の周期を選択でき、以下のグラフようにバンドを作成します。

設定してみました

CloudWatch アラームでアラームを作成。

異常検出の対象にしたいメトリクスを選択します。メトリクスの選択ボタンを押下すると、次画面に遷移します。 今回はEC2インスタンスのCPUUtilization を選択しています。

メトリクスと条件の指定ページに、選択したメトリクスと統計のグラフや他の情報が表示されます。 今回は統計は平均値を、期間は5分を指定しています。

次に、条件でしきい値の種類を異常検出を選択します。 今回はアラーム条件をバンドより大きいを選択、異常検出のしきい値を設定します。

もう一度メトリクスに戻ると、グラフの表示が予測バンドのプレビューになっていることが確認できます。

次にアクションの設定で通知を設定します。既存のトピックを選択するか、新しいトピックの設定もここでできます。

名前と説明を追加します。

プレビューで内容を確認して作成を押下すると、設定できます。 設定後のアラームを表示すると、以下のようになります。

バンド幅を上回ると異常検出されます。検出された箇所はグラフ上でも確認しやすい表示となっています。

現在のCPUUtilization とバンド (幅: 4)から自動的に設定した値が上記のようになっていますが、バンドの幅は要件に応じて調整することができます。 急に現状の利用状況からCPUUtilization が上がった場合などを検知する場合、リソース状況が逼迫していないかを通常値の状況に応じてより柔軟に検知したい場合など、 それぞれのユースケースに合わせてバンドの幅を調整して便利に利用できるかと思います。

バンドの幅を (幅: 3000)に調整してみました。 アクションの編集から簡単に変更できました。

結論

CloudWatch アラームで、SNSトピックからアラートをメール配信できるサービスを使って異常検出を行う場合に、予め決められた固定値に基づいて異常検出を行うだけではなく、より柔軟な値を設定できるサービスである、CloudWatch の異常検出機能をご紹介しました。

なお、上記以外に、CloudWatch のMetric Math 機能を使用して、ANOMALY_DETECTION_BAND メトリクスを使って、異常検知を設定することもできます。 Metric Math 機能自体もとても便利な機能で、数式で算術演算した結果を表示することができます。 詳しくは以下の公式ドキュメント、弊社ブログをご参照ください。

Metric Math を使用する

[新機能]より詳細なモニタリングが可能に!CloudWatch Metric Math でメトリクスの計算ができるようになりました