概要
マルチリージョン構成におけるCloudWatch Metric Streamsの設定について。
CloudWatch Metric Streamsについて
CloudWatch Metric Streamsは、CloudWatchメトリクスの情報を外からポーリングして取得するのではなく、AWS側からプッシュするような形でストリームさせる機能。
AWS Blog : https://aws.amazon.com/jp/blogs/aws/cloudwatch-metric-streams-send-aws-metrics-to-partners-and-to-your-apps-in-real-time/
New Relicも対応しており、通常のポーリング形式よりも早くメトリクス情報が反映されるため、Violationも素早く検知される。
New Relic Blog : https://blog.newrelic.com/product-news/aws-cloudwatch-metric-streams/
構成
構成としては、
AWS [ Metric → Metric Stream → Kinesis Data Firehose ] → New Relic
という流れであるが、AWS側の各リソースはリージョンリソースである。
ポーリング形式の場合、IAMロール/ユーザーを通して取得されるため、グローバル単位でのメトリクス収集が可能であったが、CloudWatch Metric Streamsの場合は、リージョン単位でのメトリクス収集となる。
そのため、マルチリージョン構成のシステムのメトリクスを連携するにはそれぞれのリージョンにMetric Streamの設定をする必要がある。
New Relicのドキュメントにもその旨は記載されている。
If you manage multiple regions within those accounts, then each region needs to be configured with a different Kinesis Data Firehose pointing to New Relic
マルチリージョンへの設定
New Relic側
AWS Integrationの設定は、アカウントごとに1つで問題ない。リージョンごとにインテグレーションを設定する必要はない。
AWS側
リージョンごとにCloudWatch Metric StreamsおよびKinesis Data Firehoseの設定が必要。
New Relic側の手順にもあるCloudFormationを使ったセットアップを利用する場合は、リージョンそれぞれにスタック作成を行う。
https://docs.newrelic.com/docs/integrations/amazon-integrations/aws-integrations-list/aws-metric-stream/#setup-cloudformation
※ Kinesis Data Firehoseのエラーイベント保存のためのS3バケットはリージョンごとに分ける。その他の値は同じでOK。
確認
それぞれで設定ができていれば、New Relic側のAWS IntegrationのAccount Statusダッシュボードの「Total Metric by AWS Region」でリージョンごとの収集メトリクス数合計を確認できる。
まとめ
New Relicとの連携に限らず、CloudWatch Metric Streamsは各リージョンごとへの設定が必要ということが注意点。マルチリージョン 構成の場合は忘れずそれぞれに設定する。
New Relic側はリージョンごとに設定は特に必要ないので、形としてはシンプル。