🎉
Datadogで監視しているCloudWatchの監視メトリクス遅延問題が解決!!(CloudWatch Metric Streams機能)
概要
- 昨日(2021/03/31)、CloudWatch Metric Streamsなるものが登場しました。
CloudWatch Metric Streams
- CloudWatch Metric Streamsとは、CloudWatch MetricのデータをKinesis Data Firehoseに流し込むことができる機能です。
-
これにより、CloudWatchのメトリクスデータを、DatadogのようなSaaSより参照した場合、CloudWatchと同程度の遅延で参照できます。
-
今までは、定期的にAPIでポーリングするしかなかった為、メトリクスによっては5〜10分程度の遅延が発生していました。
使ってみた
下記の2つのパターンを試してみました。
- S3にストリーミング送信する方法
- Datadogへストリーミング送信する方法
S3にストリーミング送信する方法
- 今回は、CloudWatch Metric Streamsを使用し、CloudWatch MetricのデータをDatadogから参照した際に遅延がどうなるかを見てみたいと思います。
メトリクスストリームの作成
- ストリーミングするメトリクスは、今回はすべてのメトリクスにしました。
- ストリーミングするメトリクスを選択できるということは、これつまり、送信するメトリクスはCloudWatchのネームスペース単位でフィルタがかけられるので、不要なメトリックまで送信しなくていいことになります。
設定
- 今回は、設定をS3のクイックセットアップにしました。
- 出力形式も選択できるようで、OpenTelemetry Metricフォーマット もしくはJSONフォーマットから選択できるようです。
- デフォルトの設定はJSONフォーマットになっているので、これもこのままにしておきます。
- 設定が終わると、Metric Streamsに先ほど作成したメトリクスストリームが出てきました。
Datadogへストリーミング送信する方法
- integrations画面より、AWSを選択すると下記のような選択画面が出てきます。
- Automatically Using CloudFormationで設定していきます。
1: Automatically Using CloudFormationを押すとスタックの作成に移動するので、マニュアルを見ながら設定していきます。
- 必要なパラメータを入れていきます。
- ApiKey: DatadogAPIキーを追加します。
- DdSite: Datadogサイトを選択します。ドキュメントを見るとdatadoghq.comになっているので、こちらはそのままにしておきます。
- リージョン: メトリックストリーミング用に設定するリージョンのコンマ区切りのリストを設定できます。
[オプションのパラメータ]
- FilterMethod: メトリックストリーミングに含める名前空間のリストを含めるか除外できます。
- 1番目/ 2番目/ 3番目の名前空間: 含めるまたは除外する名前空間を指定できます。
その後、「AWSCloudFormationがカスタム名でIAMリソースを作成する可能性があることを認めます」という確認ボックスをオンにし、[スタックの作成]をクリックします。
-
作成が完了されると下記のようにスタックは完了しています。
-
メトリックストリームに1つ作成されました。
-
Datadog側では、接続ができると下記のように表示されます。
検証
- 今回は、DynamoDBにscanで負荷をかけread capacity unitがどうなるかを検証してきます。
結果
- 結果としては、本当に遅延時間がほぼなくなり、CloudWatchで検出したタイミングでDatadog側でも参照することができました。
CloudWatch側の画面
Datadog側の画面
参考記事
Discussion