はじめに
Amazon CloudWatch Metric Streamのコンソール上で、5つのサードパーティ製品を対象に、メトリクスを送信するクイックセットアップがサポートされました。
CloudWatch Metric Streamのコンソール上で、「サードパーティ製品」「宛先のURL」「APIキー」を指定すると連携が可能です。
セットアップすると、Kinesis Data FirehoseやS3バケット、IAM ロールが自動作成されます。
対象の製品は以下の5つです。
- Datadog
- Dynatrace
- New Relic
- Splunk Observability Cloud
- SumoLogic
今回は、New Relicを利用して、アップデートのセットアップを試してみます。
ちなみに、CloudWatch メトリクスをNew Relicに送信する場合、以下の対応が必要でした。
アップデートによって、CloudWatch メトリクスをNew Relicに送信する手順がどのように変わったか確認します。
アップデートに合わせて、ドキュメントも更新されていたので、下記のドキュメントを元に進めます。
前提
- New Relicのアカウント作成済み
New RelicでAPIキー発行
New Relicのコンソール上でAPIキーを発行します。
キータイプは、Ingest - License
でAPIキーを発行し、キーをコピーしておきます
IAMロールの作成まで行う
下記の手順通り、Step1からStep5を対応する必要がありました。
New Relic側でStep5に進み、New Relic側で一意となるAWSアカウント名と、IAMロールのARNを入力します。
Step6のNew Relicに連携するためのCloudFormationのテンプレートは、使用しませんのでダウンロードする必要はありません。
メトリクスストリームの作成
[メトリクスストリームの作成]から、Quick Amazon Web Services Partner setup
を選択し、製品にはNew Relic
を指定します。
HTTP エンドポイントURLを選択し、先程発行したAPIキーを貼り付けます。
ちなみに、セットアップでサポートされていない5つの製品以外に対して、連携させたい場合、Custom setup with Firehose
を選択します。
続いてNew Relicに送信するメトリクスを選択します。
全て送ることもできますし、特定のメトリクスのみ選択もしくは除外することも可能です。
対象のメトリクスの数が増えるほど、コストも高くなるため、注意しましょう。今回は、全て送るようにしました。
あとは、メトリクスストリーム名を作成するだけです。
メトリクスストリームに対して一意の名前が自動的に生成されてますが、カスタマイズも可能です。
最後に、アカウントで自動作成される各リソースと名前が確認できます。
ちなみに、各製品によって、Kinesis Data Firehose設定は、異なります。先程紹介したAWSドキュメントに、製品ごとの設定値が記載されていますので、ご確認ください。
また、上記の図の赤枠で囲っている箇所では、CloudFormationのテンプレートとしてダウンロードすることもできました。
AWSTemplateFormatVersion: '2010-09-09'
Description: New Relic CloudWatch Metric Stream
Parameters:
AccessKey:
Description: Your New Relic API Key
Type: String
NoEcho: true
AllowedPattern: ^.{1,4096}$
ConstraintDescription: The API key can have up to 4096 characters.
Resources:
FirehoseToS3Role:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service:
- firehose.amazonaws.com
Action:
- sts:AssumeRole
Path: /
Policies:
- PolicyName: newRelic_metric_stream_s3_policy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- s3:AbortMultipartUpload
- s3:GetBucketLocation
- s3:GetObject
- s3:ListBucket
- s3:ListBucketMultipartUploads
- s3:PutObject
Resource:
- Fn::Sub: $arn:aws:s3:::${StreamBackupBucket}/*
- Fn::Sub: $arn:aws:s3:::${StreamBackupBucket}
MetricStreamToFirehoseRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service:
- streams.metrics.cloudwatch.amazonaws.com
Action:
- sts:AssumeRole
Path: /
Policies:
- PolicyName: newRelic_stream_firehose_policy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- firehose:PutRecord
- firehose:PutRecordBatch
Resource:
- Fn::Sub: ${MetricKinesisFirehose.Arn}
StreamBackupBucket:
Type: AWS::S3::Bucket
MetricKinesisFirehose:
Type: AWS::KinesisFirehose::DeliveryStream
Properties:
DeliveryStreamName: ExternalFull-RLC-1mHMrn
DeliveryStreamType: DirectPut
HttpEndpointDestinationConfiguration:
BufferingHints:
IntervalInSeconds: 60
SizeInMBs: 1
EndpointConfiguration:
Name: New Relic
Url: https://aws-api.newrelic.com/cloudwatch-metrics/v1
AccessKey:
Ref: AccessKey
RequestConfiguration:
ContentEncoding: GZIP
RetryOptions:
DurationInSeconds: 60
S3BackupMode: FailedDataOnly
S3Configuration:
RoleARN:
Fn::GetAtt:
- FirehoseToS3Role
- Arn
BucketARN:
Fn::GetAtt:
- StreamBackupBucket
- Arn
ErrorOutputPrefix: newRelic_stream
BufferingHints:
IntervalInSeconds: 60
SizeInMBs: 1
CompressionFormat: GZIP
MetricStream:
Type: AWS::CloudWatch::MetricStream
Properties:
Name: ExternalFull-RLC-1mHMrn
OutputFormat: opentelemetry0.7
StatisticsConfigurations:
- IncludeMetrics:
- Namespace: AWS/EC2
MetricName: CPUUtilization
AdditionalStatistics:
- p99
IncludeFilters: []
ExcludeFilters: []
IncludeLinkedAccountsMetrics: false
FirehoseArn:
Fn::GetAtt:
- MetricKinesisFirehose
- Arn
RoleArn:
Fn::GetAtt:
- MetricStreamToFirehoseRole
- Arn
作成後、すこし時間をおくと、CloudWatch メトリクスがNew Relicに連携し、New Relic側でメトリクスを確認できるようになりました。
最後に
今回のアップデートでは、CloudWatch Metric Streamのコンソール上で、5つのサードパーティ製品を対象にメトリクスを送信するセットアップができるようになりました。
New Relicのデータ連携方法は、従来のCloudFormationでスタック作成から、CloudWatch Metric Streamのコンソール上で作成に変わった点のみです。
New Relicの場合、元々CloudFormationのテンプレートが用意されており、連携の作業の負荷が低かったため、今回のアップデートの恩恵はあまり感じられませんでした。
他のサードパーティ製品だと恩恵をより感じる可能性がありますので、機会があれば試してみたいと思います。