Consul 2.0.0 Telemetry Collector not forwarding Envoy and API Gateway metrics to OpenTelemetry Collector

Hello,

I’m deploying Consul Helm chart 2.0.0 on Minikube and I’m trying to export Envoy sidecar and API Gateway metrics to an OpenTelemetry Collector using the built-in Telemetry Collector.

My setup:

  • Consul Helm chart: 2.0.0

  • Minikube

  • OpenTelemetry Collector receiving OTLP HTTP on port 4318

  • Prometheus scraping metrics exposed by the OTel Collector

Consul configuration:

global:
  name: consul
  datacenter: minikube

  tls:
    enabled: true
    enableAutoEncrypt: true

  acls:
    manageSystemACLs: true

  gossipEncryption:
    autoGenerate: true

  metrics:
    enabled: true
    enableAgentMetrics: true
    enableTelemetryCollector: true

server:
  replicas: 1

client:
  enabled: true

connectInject:
  enabled: true
  cni:
    enabled: true

telemetryCollector:
  enabled: true
  customExporterConfig: |
    {"http_collector_endpoint": "http://otel-collector-opentelemetry-collector.observability:4318"}

ui:
  enabled: true
  service:
    type: ClusterIP

  metrics:
    enabled: true
    baseURL: "http://prometheus-kube-prometheus-prometheus.observability:9090"

  dashboardURLTemplates:
    service: "http://localhost:3000/d/heHhNSFf6Na8vIZWRs8H/envoy-global?orgId=1&var-service={{Service.Name}}&var-namespace={{Service.Namespace}}&var-dc={{Datacenter}}"

OTel Collector configuration:

mode: deployment

image:
  repository: otel/opentelemetry-collector-contrib

ports:
  prometheus:
    enabled: true
    containerPort: 8889
    servicePort: 8889
    protocol: TCP

serviceMonitor:
  enabled: true
  metricsEndpoints:
    - port: prometheus
      path: /metrics
      interval: 15s

config:
  receivers:
    otlp:
      protocols:
        http:
          endpoint: 0.0.0.0:4318

  exporters:
    prometheus:
      endpoint: 0.0.0.0:8889
      enable_open_metrics: true

    otlphttp/jaeger:
      endpoint: http://jaeger:4318
      tls:
        insecure: true

  processors:
    batch: { }

  service:
    pipelines:
      traces:
        receivers: [ otlp ]
        processors: [ batch ]
        exporters: [ otlphttp/jaeger ]

      metrics:
        receivers: [ otlp ]
        processors: [ batch ]
        exporters: [ prometheus ]

What I observe:

  • Application metrics sent directly to the OTel Collector are visible in Prometheus.

  • Telemetry Collector starts successfully and reports no export errors.

  • Telemetry Collector logs show metrics being received.

  • I can manually access Envoy metrics on port 20200 from injected sidecars.

  • However, no Envoy or API Gateway metrics appear in Prometheus through the Telemetry Collector pipeline.

Has anyone successfully used Consul Telemetry Collector in Consul 2.0.0 to export Envoy/API Gateway metrics to an OpenTelemetry Collector?

Are there any additional settings required to enable Envoy metric collection, or is this a known limitation/issue in Consul 2.0.0?

Thanks.