🎉

Datadogで監視しているCloudWatchの監視メトリクス遅延問題が解決!!(CloudWatch Metric Streams機能)

2021/04/01に公開

概要

CloudWatch Metric Streams

  • CloudWatch Metric Streamsとは、CloudWatch MetricのデータをKinesis Data Firehoseに流し込むことができる機能です。

スクリーンショット 2021-04-01 12.07.36.png

  • これにより、CloudWatchのメトリクスデータを、DatadogのようなSaaSより参照した場合、CloudWatchと同程度の遅延で参照できます。

  • 今までは、定期的にAPIでポーリングするしかなかった為、メトリクスによっては5〜10分程度の遅延が発生していました。

スクリーンショット 2021-04-01 12.41.52.png

上記の図引用元

使ってみた

下記の2つのパターンを試してみました。

  • S3にストリーミング送信する方法
  • Datadogへストリーミング送信する方法

S3にストリーミング送信する方法

  • 今回は、CloudWatch Metric Streamsを使用し、CloudWatch MetricのデータをDatadogから参照した際に遅延がどうなるかを見てみたいと思います。

メトリクスストリームの作成

  • ストリーミングするメトリクスは、今回はすべてのメトリクスにしました。
  • ストリーミングするメトリクスを選択できるということは、これつまり、送信するメトリクスはCloudWatchのネームスペース単位でフィルタがかけられるので、不要なメトリックまで送信しなくていいことになります。

スクリーンショット 2021-04-01 12.13.35.png

設定

  • 今回は、設定をS3のクイックセットアップにしました。

スクリーンショット 2021-04-01 12.16.19.png

  • 出力形式も選択できるようで、OpenTelemetry Metricフォーマット もしくはJSONフォーマットから選択できるようです。
  • デフォルトの設定はJSONフォーマットになっているので、これもこのままにしておきます。

スクリーンショット 2021-04-01 12.17.29.png

  • 設定が終わると、Metric Streamsに先ほど作成したメトリクスストリームが出てきました。

スクリーンショット 2021-04-01 12.19.48.png

Datadogへストリーミング送信する方法

  • integrations画面より、AWSを選択すると下記のような選択画面が出てきます。
  • Automatically Using CloudFormationで設定していきます。

スクリーンショット 2021-04-01 12.47.15.png

1: Automatically Using CloudFormationを押すとスタックの作成に移動するので、マニュアルを見ながら設定していきます。

スクリーンショット 2021-04-01 12.55.13.png

  • 必要なパラメータを入れていきます。
  • ApiKey: DatadogAPIキーを追加します。
  • DdSite: Datadogサイトを選択します。ドキュメントを見るとdatadoghq.comになっているので、こちらはそのままにしておきます。
  • リージョン: メトリックストリーミング用に設定するリージョンのコンマ区切りのリストを設定できます。

[オプションのパラメータ]

  • FilterMethod: メトリックストリーミングに含める名前空間のリストを含めるか除外できます。
  • 1番目/ 2番目/ 3番目の名前空間: 含めるまたは除外する名前空間を指定できます。

その後、「AWSCloudFormationがカスタム名でIAMリソースを作成する可能性があることを認めます」という確認ボックスをオンにし、[スタックの作成]をクリックします。

スクリーンショット 2021-04-01 13.01.30.png

  • 作成が完了されると下記のようにスタックは完了しています。
    スクリーンショット 2021-04-01 14.00.25.png

  • メトリックストリームに1つ作成されました。
    スクリーンショット 2021-04-01 14.01.02.png

  • Datadog側では、接続ができると下記のように表示されます。

スクリーンショット 2021-04-01 14.26.47.png

検証

  • 今回は、DynamoDBにscanで負荷をかけread capacity unitがどうなるかを検証してきます。

結果

  • 結果としては、本当に遅延時間がほぼなくなり、CloudWatchで検出したタイミングでDatadog側でも参照することができました。

CloudWatch側の画面

スクリーンショット 2021-04-01 14.08.01.png

Datadog側の画面

スクリーンショット 2021-04-01 14.07.35.png

参考記事

https://aws.amazon.com/jp/blogs/aws/cloudwatch-metric-streams-send-aws-metrics-to-partners-and-to-your-apps-in-real-time/

https://dev.classmethod.jp/articles/202104-breaking-cloudwatch-metric-stream/

https://docs.datadoghq.com/ja/integrations/guide/aws-cloudwatch-metric-streams-with-kinesis-data-firehose/?tab=cloudformation

Discussion