# Linkerd Jaeger Tracing w/ Open Telemtry Collector

**URL:** <https://linkerd.buoyant.io/t/linkerd-jaeger-tracing-w-open-telemtry-collector/364>\
**Category:** Linkerd General Discussion\
**Tags:** proxy\
**Created:** [January 17, 2024, 10:31pm UTC](https://linkerd.buoyant.io/t/linkerd-jaeger-tracing-w-open-telemtry-collector/364 "2024-01-17T22:31:37Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jseiser](https://avatars.discourse-cdn.com/v4/letter/j/b77776/32.png) [@jseiser](https://linkerd.buoyant.io/u/jseiser)\
**Post date:** [January 17, 2024, 10:31pm UTC](https://linkerd.buoyant.io/t/linkerd-jaeger-tracing-w-open-telemtry-collector/364/1 "2024-01-17T22:31:38Z")

</div>

We are using the `grafana-agent` to handle incoming traces, potentially do things to them, and then forward them on to Grafana Tempo. The Grafana agent is basically running the Open Telemtry Collector under the hood.

This setup is working for all of our applications, but linkerd is not sending traces and I assume its some misconfiguration on my end.

There is a service, listening for OTLP HTTP and GRPC traffic

```auto
kubectl get svc -n grafana-agent
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
grafana-agent ClusterIP 172.20.18.93 <none> 80/TCP,4317/TCP,4318/TCP 27h

```

The configuration of this OTLP collector, ends in sending the traces to Tempo via GRPC

```auto
    otelcol.exporter.otlp "to_tempo" {
      client {
        endpoint = "tempo-distributed-distributor.tempo.svc.cluster.local:4317"
        tls {
            insecure = true
            insecure_skip_verify = true
        }
      }
    }

```

This is working for our applications, I can view traces in Grafana etc.

nginx-ingress for example, it defaults `otlp-collector-port` to `4317`

```auto
    enable-opentelemetry: "true"
    otlp-collector-host: "grafana-agent.grafana-agent.svc.cluster.local"

```

I have `linkerd-jaeger` deployed via the helm chart, like this, ive tried both `4318` and `4317`, neither appear to work.

```auto
collector:
  enabled: false
jaeger:
  enabled: false

webhook:
  externalSecret: true
  injectCaFrom: linkerd-jaeger/jaeger-injector
  collectorSvcAddr: grafana-agent.grafana-agent:4317
  collectorSvcAccount: grafana-agent

```

I can see this is configured on my `linkerd-proxy`

```auto
      LINKERD2_PROXY_TRACE_COLLECTOR_SVC_ADDR: grafana-agent.grafana-agent:4317
      LINKERD2_PROXY_TRACE_COLLECTOR_SVC_NAME: grafana-agent.grafana-agent.serviceaccount.identity.linkerd.cluster.local

```

I see errors on the `linkerd-proxy` that would be sending a trace

```auto
{"timestamp":"[1351.438936s]","level":"WARN","fields":{"message":"Service failed","error":"endpoint 172.20.18.93:4317: channel closed"},"target":"linkerd_reconnect","spans":[{"name":"opencensus"},{"addr":"grafana-agent.grafana-agent.svc.cluster.local:4317","name":"controller"},{"addr":"172.20.18.93:4317","name":"endpoint"}],"threadId":"ThreadId(1)"}
{"timestamp":"[1394.200939s]","level":"WARN","fields":{"message":"Service failed","error":"endpoint 172.20.18.93:4317: channel closed"},"target":"linkerd_reconnect","spans":[{"name":"opencensus"},{"addr":"grafana-agent.grafana-agent.svc.cluster.local:4317","name":"controller"},{"addr":"172.20.18.93:4317","name":"endpoint"}],"threadId":"ThreadId(1)"}
{"timestamp":"[1416.017672s]","level":"WARN","fields":{"message":"Service failed","error":"endpoint 172.20.18.93:4317: channel closed"},"target":"linkerd_reconnect","spans":[{"name":"opencensus"},{"addr":"grafana-agent.grafana-agent.svc.cluster.local:4317","name":"controller"},{"addr":"172.20.18.93:4317","name":"endpoint"}],"threadId":"ThreadId(1)"}
{"timestamp":"[1502.128800s]","level":"WARN","fields":{"message":"Service failed","error":"endpoint 172.20.18.93:4317: channel closed"},"target":"linkerd_reconnect","spans":[{"name":"opencensus"},{"addr":"grafana-agent.grafana-agent.svc.cluster.local:4317","name":"controller"},{"addr":"172.20.18.93:4317","name":"endpoint"}],"threadId":"ThreadId(1)"}

```

---

<div class="post-metadata">

**Author:** ![trojan295](https://avatars.discourse-cdn.com/v4/letter/t/ed655f/32.png) [@trojan295](https://linkerd.buoyant.io/u/trojan295)\
**Post date:** [March 22, 2024, 2:17pm UTC](https://linkerd.buoyant.io/t/linkerd-jaeger-tracing-w-open-telemtry-collector/364/2 "2024-03-22T14:17:19Z")

</div>

AFAIK Linkerd supports only the Opencensus protocol for span collection.  
I don’t know how it looks on the Grafana Agent, but I use OpenTelemetry Collector and I push the Linkerd spans to port 55678 on the collector.

The receiver config for this is:

```auto
receivers:
    opencensus: {}

```

---

<div class="post-metadata">

**Author:** ![Flynn](https://yyz1.discourse-cdn.com/flex029/user_avatar/linkerd.buoyant.io/flynn/32/41_2.png) [@Flynn](https://linkerd.buoyant.io/u/Flynn)\
**Post date:** [December 5, 2024, 4:50pm UTC](https://linkerd.buoyant.io/t/linkerd-jaeger-tracing-w-open-telemtry-collector/364/3 "2024-12-05T16:50:02Z")

</div>

Linkerd now natively supports the OpenTelemetry protocol! This was added in Linkerd edge-24.10.1, so it’s also in Linkerd 2.17 – check out [Distributed tracing with Linkerd | Linkerd](https://linkerd.io/2/tasks/distributed-tracing/) for details, but that should help you here, I’d think.
