🐕

Datadog で AWS サービスのステータスを監視する

2023/06/29に公開

はじめに

クラウドサービスを利用する場合、当該サービスの正常性は常に監視しておく必要があります。手っ取り早く実装したければ、最近ローンチされた AWS User Notifications や EventBridge を使用する選択肢もありますが、今回は Datadog を使用して AWS のサービスステータスを監視する方法を共有したいと思います。

Datadog とは

Datadog は New RelicDynatrace と並んで有名なモニタリング SaaS です。少し前に Datadog としては初めてのアジア圏のデータセンターとなる日本リージョンをローンチしたことでも話題になりました。

https://www.datadoghq.com/ja/

もちろん CloudWatch でもシステム監視を実装することは可能ですが、Datadog を使用することでより俯瞰的にシステムの状態を知ることができます。

AWS Health イベント

AWS Health イベントにはアカウント固有イベントとパブリックイベントの 2 つのタイプが存在します。それぞれのイベントの特徴は以下に記載されています。

https://docs.aws.amazon.com/ja_jp/health/latest/ug/aws-health-concepts-and-terms.html

アカウント固有イベントは、特定の AWS アカウントに対してのみ影響する Health イベントです。それに対してパブリックイベントは特定のアカウントに依存しない、リージョン全体に影響するような Health イベントを指します。
重要なのはそれぞれのイベントが独立しているということです。AWS のサービス障害をしっかり把握するためには両方の Health イベントを監視対象とする必要があります。

アカウント固有イベントのモニター設定

アカウント固有イベントは Amazon Health インテグレーションを設定することで Datadog に連携できます。

あとはこれを監視するためのイベントモニターを設定するだけです。sourceにはamazon_healthを指定します。簡単ですね👍

イベント連携のタイムラグ

注意点として、発生したイベントが Datadog に連携されるまでにはタイムラグが存在します。

https://docs.datadoghq.com/ja/integrations/guide/cloud-metric-delay/

上記の公式ドキュメントではメトリクスのことにしか触れられていませんが、イベントもクローラーを使用してクラウドプロバイダーから取得しているため、同様に遅延が発生します。なお、メトリクスの遅延については CloudWatch メトリクスストリームを使用することで改善できます。

https://www.datadoghq.com/ja/blog/amazon-cloudwatch-metric-streams-datadog/

Datadog のデフォルトの評価ウィンドウは「過去 5 分」です。イベントが連携されたタイミングによっては評価ウィンドウから外れてしまい、うまく監視できないケースがあります。

例えば以下のように AWS 上で発生したイベントが 7 分遅延して Datadog に連携された場合、デフォルト設定のまま「過去 5 分」を評価ウィンドウに設定していると検知対象外となってしまいます。

このような場合は、モニターの評価ウィンドウ、もしくは評価遅延を調整しましょう。
上記例のケースだと、評価ウィンドウを 10 分とするか、

評価遅延を 5 分に設定することで検知可能です。

パブリックイベントのモニター設定

パブリックイベントは Amazon Health インテグレーションを設定しても Datadog に連携されません。パブリックイベントを Datadog で監視するにはインテグレーションモニターを使用します。

以下の例では対応している全てのリージョン / サービスを対象としていますが、結構な頻度でアラートが通知されます。実際に設定する場合は使用しているリージョン / サービスに監視対象を限定した方がいいでしょう。

また、リージョン / サービス毎にモニターを作成するのは非常に手間なので、Multi Alert の使用を推奨します。Multi Alert は 1 つのモニターで複数のソースを独立して監視するための設定です。

https://docs.datadoghq.com/ja/monitors/configuration/?tab=しきい値アラート#アラートのグループ化

未対応の AWS サービス

こちらの注意点は、一部の AWS サービスがサポートされていないという点です。対応している AWS サービスはこちら から確認することができます(Datadog へのログインが必要)。

対応していない AWS サービスは別の方式を採用するしかありません。いくつかアイデアはあるのですが、どれも実績がなく…。折を見て検証してみようと思います😓

RSS インテグレーションを使用する

AWS サービスのステータスは AWS Health で確認することができます。AWS Health では アカウント固有イベントの RSS フィードが配信されているため、Datadog の RSS インテグレーションを使用することで監視できるはずです。

https://docs.datadoghq.com/ja/integrations/rss/

Amazon EventBridge インテグレーションを使用する

これまでパブリックイベントは EventBridge には配信されませんでしたが、先月のアップデート で配信されるようになりました(アカウント固有イベントは以前から EventBridge に配信される仕様です)。
EventBridge に配信されたイベントは Amazon EventBridge インテグレーションを設定することで Datadog に連携できます。こちらを利用して、パブリックイベントと同じようにイベントモニターで実装することもできそうですね。

おわりに

AWS サービスの正常性を監視する方法はいろいろありますが、システム監視のツールを 1 つに集約することで、ログやメトリクスの相関を確認しやすかったり、(使い方を覚えるツールが少なく済むので)運用負荷を低減できるといったメリットがあります。
Datadog で AWS サービスの監視を行う場合は本記事で紹介した方法を参考にしてみてください🙌

Discussion