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の内容を確認する方法を説明します。
- Metric StreamでMetricの保存先をS3にする(保存方式はMetric Streamインテグレーションと同じOpenTelemetry 0.7形式)
- 保存されたバイナリをJavaのプログラムでデコードする
Metric Streamの作成方法
- AWSのコンソールからCloudWatch => Metric Streamsの画面を表示し、「Create metric stream」をクリックする
- 以下のように設定を行う
- Destinationで「Quick S3 setup」を選択
- Change output formatの項目で「OpenTelemetry 0.7」を選択
- ※ その他の項目はお客様のニーズにより修正していただけますが、デフォルトでも問題ありません。
- 「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 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。