aws-otel-collectorのバージョンアップでotelへのメトリクス送信ができなくなった

EKSのバージョンを1.29から1.32にアップデートする際、otel collectorとして使用していたaws-otel-collectorのバージョンをv0.35.0からv0.41.2にアップデートしたところ、otelへのメトリクス送信が正常に行われなくなりました。

調査

otel-collector podにdebug podをアタッチし、netstatコマンドでポートの状態を確認しました。

  • v0.35.0 (EKS 1.29): :::4318 (全アドレスにバインド)

  • v0.41.2 (EKS 1.32): 127.0.0.1:4318 (ローカルホストにのみバインド)

この結果から、aws-otel-collectorのバージョンアップによってotel-collectorのバインドアドレスが変わったことが分かりました。

原因

otel v0.104.0でデフォルトのbind addressがlocalhostに変更されていました(参考)。

aws-otel-collectorの各バージョンにバンドルされているotelcolのバージョンは以下の通りです。

  • v0.41.2: otelcol v0.109.0 (go.mod)

  • v0.35.0: otelcol v0.88.0 (go.mod)

EKS 1.29環境で導入していたaws-otel-collector:v0.35.0では、otelcolのバージョンが0.88.0であり、デフォルトのバインドアドレスは全アドレスでした。
一方、EKS 1.32環境で導入したaws-otel-collector:v0.41.2では、otelcolのバージョンが0.109.0であり、デフォルトのバインドアドレスがlocalhostに変更されています。

aws-otel-collectorの設定ファイルでは、endpointを指定していませんでした。

# otel-collector config
receivers:
  otlp:
	  protocols:
		  http:

そのため、aws-otel-collectorのバージョンアップによってotel-collectorのバインドアドレスが変更され、メトリクス送信が失敗するようになりました。

解決策

aws-otel-collectorの設定ファイルで、endpointを明示的に指定します。

receivers:
  otlp:
	  protocols:
		  http:
		    endpoint: "[::]:4318"

これにより、otel-collectorは全アドレスにバインドされるようになり、メトリクスの送信が正常に行われるようになりました。

まとめ

aws-otel-collectorのバージョンアップを行う際は、otel-collectorのバインドアドレスの変更に注意する必要があります。特に、otel v0.104.0以降ではデフォルトのバインドアドレスがlocalhostに変更されているため、endpointを明示的に指定することを推奨します。

いいなと思ったら応援しよう!