ちょっと話題の記事

[アップデート] Amazon CloudWatch でアラームに関する推奨事項が提供されるようになりました

2023.10.17

いわさです。

Amazon CloudWatch の今朝のアップデートで、アラームの対象メトリクスとしきい値の推奨事項が提供されるようになりました。

CloudWatch Alarm を使った監視を始める時に、「どのメトリクスをどういう条件くらいでやるのが良さそうか、どの程度が一般的なのか」など、指針が欲しくなるシーンがあります。

「ワークロードごとに適切な値を設計することが必要」と言いつつも、まずは手軽に推奨事項から始めたいというケースも多いです。
今後は CloudWatch コンソールが推奨事項を提供してくれます。

「アラームに関する推奨事項」トグルボタンが追加されている

CloudWatch メトリクス画面には現在稼働しているワークロードが出力したメトリクスが表示されています。
このメトリクス画面のいくつかの箇所で次のような「アラームに関する推奨事項」というトグルボタンが追加されています。

こちらを ON にすると、推奨されるメトリクスでフィルタリングされます。

一点注意したいところが、CloudWatch メトリクスはメトリクス値が出力された項目がリストされているので、そもそもまだ使っていないサービスやメトリクスが出力されていない項目については推奨事項を得られないという点です。

私が検証で使用しているアカウントだと、東京リージョンで上記の 10 サービスの名前空間が列挙されました。また、バージニア北部リージョンでは Route 53 も表示されました。

私のアカウントでは 11 サービス確認出来ましたが、アップデートアナウンスによると本日時点で 19 の AWS サービスがサポートされており、今後サポートされるサービスは増えていくそうです。

アラームに関する推奨事項を表示

推奨メトリクスが存在する名前空間で「アラームに関する推奨事項」を ON にすると、次のように「アラームに関する推奨事項」列が追加されます。

ここで「詳細を表示」ラベルを選択すると、対象メトリクスのアラームに関する推奨事項を表示することが出来ます。

後述しますが、このダイアログからアラームの作成やアラーム作成のためのソースコードのダウンロードを行うことが出来ます。
詳しくアラームで監視出来る内容などが確認出来るので眺めてるだけでも参考になりますね。アラームを設定する際の推奨される統計方法も表示されています。

推奨事項のメトリクスのみでフィルタリングされている

また、名前空間表示時と同様にメトリクス一覧も推奨事項でフィルタリングされています。
次は推奨事項表示を OFF にした場合の NAT ゲートウェイメトリクスです。
様々なメトリクスが表示されていますね。

ここでアラームに関する推奨事項を ON にすると、ひとつのリソースあたり 2 つのメトリクスにフィルタリングされました。

実際に出力されているメトリクスに対してフィルタリングされているので推奨事項の数としてもしかするともう少し多い可能性もありますが、私の環境ではPacketsDropCountErrorPortAllocationについては監視アラームを作成することが推奨されていそうです。なるほどね。

サービスで推奨メトリクスが出力されていない名前空間はメトリクス項目のみ確認出来る

サービスごとに監視項目として推奨される項目が静的に定義されているようで、私の環境の Route 53 メトリクスで推奨事項を表示させようとしたところ次のように表示されました。

Route 53 の場合だとHealthCheckStatusの監視が推奨されているが、私のアカウントだとメトリクスがまだ公開されていないということですね。

アラーム作成すると推奨値が設定された状態でアラームが簡単に作成出来る

メトリクス画面の推奨事項ダイアログから「アラームの作成」を押すと、その項目の推奨事項に基づくアラームを作成することが出来ます。

ここでは推奨される統計方法やしきい値も設定されます。

しきい値の推奨値がまた悩むところなので、推奨値を一旦出してくれるのはこれは結構嬉しいですね。
なお、ここで推奨されるしきい値は実際のワークロードの稼働実績に基づいて算出されたものではなくて予めテンプレートとして定義されている静的なものです。
例えば API Gateway のレイテンシメトリクスであれば、2,500 ms が推奨されるしきい値としてどの API でも固定で設定されました。

IaC 用にアラームのソースコードをダウンロード出来る

アラームに関する推奨事項ダイアログで「アラームソースを表示」というボタンを押すと、アラームを作成するための IaC テンプレートコードをダウンロードすることが出来ます。

リンクを押すと次のようなコードのプレビュー画面が表示され、希望するフォーマットを選択してダウンロードすることが出来ます。
なお、この画面でコードの編集も可能です。

本日時点でダウンロード可能なソースコードフォーマットは、CloudFormation JSON、CloudFormation YAML、AWS CLI、Terraform の 4 つです。

ここでは私がよく使う CloudFormation YAML を選択してダウンロードしてみました。
ダウンロードされたソースコードは次のようにそのまま CloudFormation に差し込めるリソースの部分コードです。

CloudWatchAlarms-CloudFormation.yaml

Type: AWS::CloudWatch::Alarm
Metadata:
    MissingProperties: Threshold
    Intent: このアラームは、REST API ステージのトラフィック量が予想外に少ないことを検出できます。API
        が通常の条件下で予測可能で一定数のリクエストを受信する場合は、このアラームを作成することをお勧めします。詳細な CloudWatch
        メトリクスを有効にしていて、メソッドやリソースごとの通常のトラフィック量を予測できる場合は、代替アラームを作成して、各リソースとメソッドのトラフィック量の減少をよりきめ細かく監視することをお勧めします。このアラームは、一定で一貫したトラフィックを想定していない
        API にはお勧めできません。
    ThresholdJustification: 履歴データ分析に基づいてしきい値を設定し、API
        の予想ベースラインリクエスト数を決定します。しきい値を非常に高い値に設定すると、通常時およびトラフィックが少ないことが予想される時間帯に、アラームの感度が高くなりすぎる可能性があります。逆に、非常に低い値に設定すると、トラフィック量の異常な小さな減少をアラームが見逃してしまう可能性があります。
Properties:
    AlarmName: AWS/ApiGateway Count ApiName=hoge0417api2 Stage=hoge
    AlarmDescription: このアラームは、REST API ステージのトラフィック量が少ないことを検出するのに役立ちます。これは、API
        を呼び出すアプリケーションに問題があることを示している可能性があります。例えば、不正なエンドポイントを使用している場合などです。また、API
        の設定や権限に問題があり、クライアントがアクセスできないことを示している可能性もあります。
    MetricName: Count
    Namespace: AWS/ApiGateway
    Statistic: SampleCount
    Dimensions:
        - Name: ApiName
          Value: hoge0417api2
        - Name: Stage
          Value: hoge
    Period: 60
    EvaluationPeriods: 10
    DatapointsToAlarm: 10
    Threshold: REPLACE_ME
    ComparisonOperator: LessThanThreshold
    TreatMissingData: breaching
    ActionsEnabled: false
    OKActions: []
    AlarmActions: []
    InsufficientDataActions: []

これで作成あるいはここからカスタマイズしてアクションなどを追加することが出来そうですね。

メトリクス情報がインラインで表示されるようになっていた

おそらく、今回の推奨事項提供と併せて CloudWatch メトリクスのメトリクス情報がインラインで表示されるようになっていました。

次のようにメトリクス名列に表示されているインフォメーションアイコンを選択すると、対象メトリクスに関する詳細情報を確認することが出来ます。

これはかなり良いですね。いつもよくわからなくて公式ドキュメントを行ったり来たりしていた。
ちなみに、このメトリクス情報は推奨されるメトリクス以外でも表示されていました。

さいごに

本日は Amazon CloudWatch でアラームに関する推奨事項が提供されるようになったので実際にコンソールから設定して使い勝手などを調べてみました。

なお、本機能を使うにあたっての追加の料金は発生しません。

まず、サービスごとにこれは監視しておくべきという推奨事項が得られるのはとても良いですね。
また、実際にアラームを設定するとしてしきい値は運用しながら調整する部分も出てくると思いますが、まずはどこから始めようという点もいつも悩むところです。この点も推奨事項として提供してくれるのは非常に有り難いです。
とはいえ、推奨値のまま使い続けて、設定経緯がよくわからない状態にならないようには注意したいですね。