Soluciona problemas del recopilador de OpenTelemetry integrado en Google

En este documento, se describen los pasos para solucionar problemas y los problemas comunes relacionados con el uso de un recopilador de OpenTelemetry, como el recopilador de OpenTelemetry integrado en Google, para enviar datos a Google Cloud Observability.

Soluciona problemas de recopilación de datos

En esta sección, se describen las estrategias que puedes usar para solucionar problemas relacionados con la recopilación de datos.

Usa el exportador debug

El exportador de debug es la mejor manera de ver los datos a nivel del recopilador de OpenTelemetry. El exportador toma los datos que recibe y los escribe en stdout en un formato legible por humanos. Esto es más útil cuando necesitas verificar que las transformaciones de tu canalización produzcan el resultado esperado.

El exportador debug se incluye en el recopilador de OpenTelemetry integrado en Google. Puedes configurar el exportador debug con verbosity: detailed para ver toda la carga útil de telemetría.

exporters:
  debug:
    verbosity: detailed

Puedes incluir el exportador en tu canalización:

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

Prueba el lenguaje de transformación de OpenTelemetry (OTTL) en línea con OTTL Playground

El OTTL Playground es una herramienta desarrollada por la comunidad que te permite desarrollar de forma interactiva una canalización del lenguaje de transformación de OpenTelemetry. Para comenzar, proporciona OTLP JSON como entrada, escribe tu canalización con la misma configuración que usarías para tu OpenTelemetry Collector y, luego, inspecciona los resultados de forma visual.

La mejor manera de obtener JSON de OTLP de una canalización es colocar un exportador de file en el punto anterior a donde estaría tu procesador de transformación. Comienza por configurar un exportador file:

exporters:
  file:
    path: example.json

Si tuvieras una canalización como la siguiente:

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

Podrías modificar temporalmente tu canalización para exportar los datos tal como se verán cuando ingresen al procesador transform en el que estás trabajando.

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

El exportador de file escribirá cada carga útil que reciba en una línea del archivo. Puedes usar una sola línea de datos como entrada para OTTL Playground.

Problemas conocidos

En esta sección, se describen los problemas conocidos con el recopilador de OpenTelemetry y el recopilador de OpenTelemetry integrado en Google, y cómo solucionarlos cuando sea posible.

Errores connect: network is unreachable excesivos cuando se usa el exportador otlp

NOTA: Este problema solo se aplica al exportador de gRPC otlp, no al exportador equivalente de HTTP llamado otlphttp.

NOTA: Hasta el momento, este problema solo se observó directamente en entornos de Compute Engine, pero, debido a su naturaleza, no podemos confirmar que se limite solo a Compute Engine.

A partir de la versión 0.147.0 del recopilador de OpenTelemetry integrado en Google y la versión 0.145.0 del recopilador de OpenTelemetry upstream, el exportador otlp comenzará a usar de forma predeterminada la estrategia de balanceo de cargas del cliente round_robin, mientras que antes usaba pick_first. Cuando el exportador usaba anteriormente la estrategia pick_first, también tenía una copia de seguridad de IPv4 que funcionaba perfectamente en situaciones en las que IPv6 no funcionaba. La estrategia round_robin no tiene esta propiedad y, repetidamente, intentará enviar datos a todas las direcciones que resuelva en el momento de inicio del exportador, incluso cuando no funcionen.

Como resultado, si usas el exportador otlp para enviar datos a la API de Telemetry, es posible que veas mensajes de error como este:

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}

Aísla el error real del registro:

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

Para solucionar este error, puedes cambiar al exportador otlphttp (consulta nuestra guía del usuario de las métricas de OTLP para ver un ejemplo) o configurar manualmente el balanceador de pick_first en el exportador otlp:

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

Si el error persiste después de aplicar cualquiera de las soluciones alternativas, es probable que este mensaje de error sea un síntoma de problemas reales de conectividad de red, por lo que deberás asegurarte de que tu recopilador pueda acceder a la red.