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 변환 언어 (OTTL) 온라인 테스트

OTTL Playground는 OpenTelemetry 변환 언어 파이프라인을 대화형으로 개발할 수 있는 커뮤니티 개발 도구입니다. OTLP JSON을 입력으로 제공하고 OpenTelemetry Collector와 동일한 구성을 사용하여 파이프라인을 작성하고 결과를 시각적으로 검사합니다.

파이프라인에서 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 내보내기는 수신된 각 페이로드를 파일의 행에 씁니다. 단일 데이터 행을 OTTL Playground의 입력으로 사용할 수 있습니다.

알려진 문제

이 섹션에서는 OpenTelemetry Collector/Google 기반의 OpenTelemetry Collector의 알려진 문제와 가능한 경우 해결 방법을 설명합니다.

otlp 내보내기 도구를 사용할 때 과도한 connect: network is unreachable 오류

참고: 이 문제는 gRPC otlp 내보내기에만 적용되며 HTTP에 상응하는 otlphttp 내보내기에는 적용되지 않습니다.

참고: 이 문제는 지금까지 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
    # ...

두 가지 해결 방법 중 하나를 적용한 후에도 오류가 계속되면 이 오류 메시지가 실제 네트워크 연결 문제의 증상일 수 있으므로 수집기가 실제로 네트워크에 연결될 수 있는지 확인해야 합니다.