LoginSignup
0
0

CloudWatch cross-account observability で集めたメトリクスを NewRelic に連携してみる

Last updated at Posted at 2023-12-17

本記事は New Relic 使ってみた情報をシェアしよう! by New Relic Advent Calendar 2023 シリーズ2 18日目の記事です。

はじめに

CloudWatch cross-account observability でモニタリングアカウントに集めた CloudWatch メトリクスを NewRelic へ転送したとき、

NewRelic 側ではどの AWS アカウントから転送されたメトリクスだと判別されるのか、

もしかしたら全部モニタリングアカウントのメトリクスと集約されてしまうのでは?と思い、

気になったため実際にやってみました。

結論

NewRelic に取り込まれたメトリクスの Dimension には、

  • ソースアカウントのメトリクスには、ソースアカウントの AWS アカウント ID
  • モニタリングアカウントのメトリクスには、モニタリングアカウントの AWS アカウント ID

が付与されていました。

結論
(Dimensions の aws.accountID の箇所に、モニタリングアカウントとソースアカウントの AWS アカウント ID がそれぞれ入っていました)

やってみました

構成

構成

  • ソースアカウントとモニタリングアカウントで1つずつ AWS アカウントを用意しました
  • NewRelic へのメトリクス連携は CloudWatch Metric Streams 統合 を利用しました

設定・確認

モニタリングアカウント側の設定

  • 手順 5. の、連携するデータの選択では [メトリクス] を選択する
  • terraform でやる場合は以下
resource "aws_oam_sink" "this" {
  name = "foo"
}

resource "aws_oam_sink_policy" "this" {
  sink_identifier = aws_oam_sink.this.id
  policy          = data.aws_iam_policy_document.oam.json
}

data "aws_iam_policy_document" "oam" {
  statement {
    effect = "Allow"
    principals {
      identifiers = [
        <ソースアカウントの AWS アカウント ID>
      ]
      type        = "AWS"
    }
    actions = ["oam:CreateLink", "oam:UpdateLink"]
    resources = ["*"]
    condition {
      test     = "ForAllValues:StringEquals"
      variable = "oam:ResourceTypes"
      values   = ["AWS::CloudWatch::Metric"]
    }
  }
}

ソースアカウント側の設定

  • 手順 3. の、連携するデータの選択では [メトリクス] を選択する
  • terraform でやる場合は以下
resource "aws_oam_link" "this" {
  label_template  = "$AccountName"
  resource_types  = ["AWS::CloudWatch::Metric"]
  sink_identifier = <前手順で作成した aws_oam_sink.this の arn>
}

モニタリングアカウントおよび NewRelic アカウントで CloudWatch Metric Streams 統合を構成

 

  • NewRelic 側には対象の AWS アカウントとリンクする設定を実施
    • [Infrastructure] -> [AWS] の画面で "Set up Amazon Web Services integrations through the UI. " のリンクから、ガイド付きセットアップを実施可能

AWS Integration

  • 上記リソースの作成をまとめて terraform でやる場合はこちらの module を利用可能

確認

上記の設定が完了したら、NewRelic にデータ連携が出来ていることを確認する

NewRelic の [Infrastructure] -> [AWS] の画面で、真ん中上部あたりのプルダウンリストで metric stream のものを選択し、

スクリーンショット 2023-12-15 182018.png

同画面の右部あたり Account status dashboard をクリックして以下の画面に遷移する

確認2

Metrics が 0 でなければ、メトリクスが連携されている

次に NewRelic の [Query Your Data] -> [Data explorer] -> [Metrics] の画面で、左側の Metric の一覧から CloudWatch のメトリクス(aws. で始まるもの)を選択し(画像では aws.ec2.CPUUtilization)、

確認3

Metric 一覧の下部にある Dimensions を開いて id でフィルタリングすると以下のように、メトリクスに付与された AWS アカウント ID (aws.accountID)を確認できる

確認4

おわりに

CloudWatch Metric Stream では取得できないメトリクス もいくつかあるため、注意が必要です。

それらについては、API Polling でのメトリクス取得が必要になりそうです。

 

以上、簡単な内容ではありましたが、お読みいただきありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0