2021/03/31にリリースされたCloudWatch Metric Streamsを使ってNew Relicにメトリクスデータを送ってみた。
New RelicからAPIでポーリングしてメトリクスデータを取得するよりタイムラグが少なくなり、確実性があがるとのことなので、とりあえずやってみた。
CloudWatch Metric Streamsってなんや?
CloudWatchからNew RelicなどのモニタリングSaaSに対してデータを送る機能です。
いままで
New RelicなどのモニタリングSaaSでCloudWatchのメトリクスをモニタリングする場合、いままでは設定された間隔でSaaS側からCloudWatchにGetMetric APIを叩いてデータ収集していた。
CloudWatch Metric Streamsを使うと
New RelicなどのモニタリングSaaSに対してCloudWatchからメトリックをストリームすることで、データ収集のタイムラグが大幅に改善される。
とりあえずやってみた
New Relic側の設定
- New RelicへログインしInfrastrucure > AWS > Add an AWS Accountをクリック
- Metric Streamを選択してクリック
- 以降は画面に表示されるとおりに設定
※AWSにIAMロールを作ったりです。
※既存のAWSインテグレーションがあるものは、IAMロールはそのまま使えます。
AWS側の設定
- 対象のAWSアカウントへログインしておく。
- 下記リンクのCFnテンプレートでスタックを作成して実行
※New Relicのライセンスキーが必要、ライセンスキーはNRで右上アカウントメニュー > API Keysで確認できる。
※Kinesisのエラー履歴を保存するS3バケット指定箇所があるが、既存バケットだとNGとなる。
https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://nr-downloads-main.s3.amazonaws.com/cloud_integrations/aws/cloudformation/MetricStreams_CloudFormation.yml&stackName=NewRelic-Metric-Stream¶m_NewRelicDatacenter=US
結果
16:29にNRQLでRDSのCPU Utilizationを確認したところ、16:26のメトリクスが記録されていた!はやい!
タイムラグは3分くらいかな。
WHERE句に下記のようなcloudwatch-metrics-streamsで取得したものという指定をすれば、従来のAPIポーリングと共存してもstreamのメトリクスのみを対象にできます。
`collector.name` = 'cloudwatch-metric-streams'
AWS利用料金
対象期間: 4/2 - 4/8の1週間
データ参照元: AWS Cost Explorer
使用コンポーネントなどにより変動しますので参考として。
CloudWatch Streams
AWS利用料金: You pay $0.003 for every 1000 metric updates
料金参考: https://aws.amazon.com/jp/blogs/aws/cloudwatch-metric-streams-send-aws-metrics-to-partners-and-to-your-apps-in-real-time/
23.81USD/1week
23.81USD * 4week = 95.24USD
ちなみに従来通りのGetMetricData APIだと…
19.93USD/1week
19.93USD * 4week = 79.72USD
Kinesis Data Firehose
AWS利用料金: 0.036USD/GBあたり
料金参考: https://aws.amazon.com/jp/kinesis/data-firehose/pricing/
0.09USD/1week
0.09USD * 4week = 0.36USD
参考
■CloudWatch Metric Streams – Send AWS Metrics to Partners and to Your Apps in Real Time
https://aws.amazon.com/jp/blogs/aws/cloudwatch-metric-streams-send-aws-metrics-to-partners-and-to-your-apps-in-real-time/
■Move Faster with New Relic One and Amazon CloudWatch Metric Streams
https://blog.newrelic.com/product-news/aws-cloudwatch-metric-streams/