Google が構築した OpenTelemetry Collector のトラブルシューティング

このドキュメントでは、Google が構築した OpenTelemetry Collector などの OpenTelemetry Collector を使用して Google Cloud Observability にデータを送信する際のトラブルシューティング手順と一般的な問題について説明します。

データの収集のトラブルシューティング

このセクションでは、データ収集に関する問題のトラブルシューティングに使用できる戦略について説明します。

debug エクスポータを使用する

debug エクスポータは、OpenTelemetry Collector レベルでデータを表示するのに最適な方法です。エクスポータは、受信したデータを人が読める形式で stdout に書き込みます。これは、パイプライン内の変換が意図した結果を生成していることを確認する必要がある場合に最も役立ちます。

debug エクスポータは、Google が構築した OpenTelemetry Collector に含まれています。verbosity: detailed を使用して debug エクスポーターを構成すると、テレメトリー ペイロード全体を確認できます。

exporters:
  debug:
    verbosity: detailed

エクスポーターをパイプラインに含めることができます。

service:
  pipelines:
    metrics:
      receivers: [
        # ...
      ]
      processors: [
        # ...
      ]
      exporters: [
        debug, # can be added alongside any other configured exporters
        # ...
      ]

OTTL Playground で OpenTelemetry Transformation Language(OTTL)をオンラインでテストする

OTTL Playground は、OpenTelemetry Transformation Language パイプラインをインタラクティブに開発できる、コミュニティ開発のツールです。まず、OTLP JSON を入力として指定し、OpenTelemetry コレクタと同じ構成を使用してパイプラインを記述し、結果を視覚的に確認します。

パイプラインから OTLP JSON を取得する最善の方法は、変換プロセッサの前の場所に file エクスポータを配置することです。まず、file エクスポータを構成します。

exporters:
  file:
    path: example.json

次のようなパイプラインがあるとします。

service:
  pipelines:
    metrics:
      receivers: [hostmetrics]
      processors: [
        memorylimiter,
        groupbyattrs,
        transform, # where your OTTL pipeline will go
        cumulativetodelta,
        metricstarttime,
      ]
      exporters: [
        otlp,
      ]

パイプラインを一時的に変更して、作業中の transform プロセッサに入力されるデータと同じ形式でデータをエクスポートできます。

service:
  pipelines:
    metrics:
      receivers: [hostmetrics]
      processors: [
        memorylimiter,
        groupbyattrs,
        # transform,
        # cumulativetodelta,
        # metricstarttime,
      ]
      exporters: [
        # otlp,
        file,
      ]

file エクスポータは、受信した各ペイロードをファイルの 1 行に書き込みます。OTTL Playground への入力として、単一行のデータを使用できます。

既知の問題

このセクションでは、OpenTelemetry Collector/Google が構築した OpenTelemetry Collector の既知の問題と、可能な場合の回避策について説明します。

otlp エクスポータの使用時に connect: network is unreachable エラーが多発する

注: この問題は gRPC otlp エクスポータにのみ適用され、otlphttp という HTTP 相当のエクスポータには適用されません。

注: この問題は、これまでのところ Compute Engine 環境でのみ直接確認されていますが、問題の性質上、Compute Engine に限定されていることを確認することはできません。

Google が構築した OpenTelemetry Collector バージョン 0.147.0 以降とアップストリーム OpenTelemetry Collector バージョン 0.145.0 以降では、otlp エクスポータのデフォルトが クライアントサイド ロード バランシング戦略 round_robin になります。以前は pick_first でした。以前に pick_first 戦略を使用していたエクスポートでは、IPV6 が機能しないシナリオで完全に機能する IPV4 フォールバックも使用されていました。round_robin 戦略にはこのプロパティがなく、エクスポート開始時に解決したすべてのアドレスに、機能しない場合でも繰り返し送信を試みます。

そのため、otlp エクスポータを使用して Telemetry API にデータを送信している場合は、次のようなエラー メッセージが表示されることがあります。

2026-02-13T20:50:00.665Z        warn    grpc@v1.78.0/clientconn.go:1526 [core] [Channel #1 SubChannel #18] grpc: addrConn.createTransport failed to connect to {Addr: "[2607:f8b0:4001:c62::5f]:443", ServerName: "telemetry.googleapis.com:443", }. Err: connection error: desc = "transport: Error while dialing: dial tcp [2607:f8b0:4001:c62::5f]:443: connect: network is unreachable"   {"resource": {"service.instance.id": "feb467f0-ecc6-4a0c-b1e2-90c908131fdd", "service.name": "otelcol-google", "service.version": "v0.147.0"}, "grpc_log": true}

ログの実際のエラーを特定する:

transport: Error while dialing: dial tcp [2607:f8b0:4001:c62::5f]:443: connect: network is unreachable

このエラーを回避するには、otlphttp エクスポータに切り替える(例については、OTLP 指標のユーザーガイドをご覧ください)か、otlp エクスポータで pick_first バランサを手動で構成します。

exporters:
  otlp:
    # ...
    balancer_name: pick_first
    # ...

いずれの回避策を試してもエラーが解決しない場合は、このエラー メッセージは実際のネットワーク接続の問題の兆候である可能性が高いため、コレクタが実際にネットワークに到達できることを確認する必要があります。