AWSのMetric Streamインテグレーションを行うと、AWSがCloudWatch Metricsに保存されているMetricsを送信します。また、New RelicではAWSから送られたMetricが基本的にはそのまま保存されるようになっています。

このインテグレーションに関して基本的には、AWSがCloudWatch Metricsに保存した値をそのままMetric Streamで送ってくれることが前提ですが、ContainerInsightの場合、一部PodごとのMetricを送信してくれないようです。

こういった場合にAWSがどういった内容でMetric Stream経由でMetricを送信しているかが確認できる方法を紹介します。

対応方法

本ブログでは、以下の方法でMetric Stream経由で送信されるMetricの内容を確認する方法を説明します。

  1. Metric StreamでMetricの保存先をS3にする(保存方式はMetric Streamインテグレーションと同じOpenTelemetry 0.7形式)
  2. 保存されたバイナリをJavaのプログラムでデコードする

Metric Streamの作成方法

  1. AWSのコンソールからCloudWatch => Metric Streamsの画面を表示し、「Create metric stream」をクリックする
  1. 以下のように設定を行う
    1. Destinationで「Quick S3 setup」を選択
    2. Change output formatの項目で「OpenTelemetry 0.7」を選択
    3. ※ その他の項目はお客様のニーズにより修正していただけますが、デフォルトでも問題ありません。
  2. 「Create metric stream」で作成

※デフォルトの場合、S3のバケットは新規で作成されます。また、S3の保存先は対象Metric Streamの詳細画面で確認できます。

Metric Streamが作成され、新規にCloudWatch Metricsに作成されたMetricが、数分程度でMetricがS3に保存され始めるので、S3からローカルにダウンロードしておきます。

デコードプログラムの作成

こちらにサンプルプログラムがあるので、ダウンロードあるいはローカルにcloneする

ダウンロード後、以下のコマンドでビルドしてjarファイルを作成する

mvn clean install

先にS3からダウンロードしたファイルパスをパラメータに指定して、javaを実行するとデコードされた内容が確認できます。

java -jar ./target/otel-decoder-1.0-SNAPSHOT.jar <ファイル名>

なお、デコードされた内容は、こちらのAWSが提供しているMetricの内容と同様のはずです。

もし、Metric Streamで連携されている情報が少ない場合、こちらにて実際に連携されている内容を確認してみてください。

New Relic Now 新しいAgentic Integrationsのデモを今すぐ実施
今すぐ見る