Search code examples
opentracingdistributed-tracingopen-telemetry

Can jaegar collector receive spans and traces from otel collector which are coming in via otlp protocol?


I have an application that is generating spans and traces and sending them to otel collector using otlp protocol. Now if I configure jaeger as one of the exporters in otel collector config, will the jaeger collector be able to receive and display the traces and spans?

If we see the jaeger collector documentation

At default settings the collector exposes the following ports:
Port    Protocol    Function
14250   gRPC    used by jaeger-agent to send spans in model.proto format
14268   HTTP    can accept spans directly from clients in jaeger.thrift format over binary thrift protocol
9411    HTTP    can accept Zipkin spans in Thrift, JSON and Proto (disabled by default)
14269   HTTP    admin port: health check at / and metrics at /metrics

There is no mention of it accepting otel formatted traces and spans.

Otel collector config

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: collector-config
data:
  collector.yaml: |
    receivers:
      otlp:
        protocols: 
          grpc:
    processors:
    exporters:
      logging:
      jaeger:
        endpoint: jaeger-all-in-one:14250
        insecure: true
    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: []
          exporters: [logging]

Solution

  • Yes it's by design to export otel traces to other formats including jaeger. You can make your configuration something like this

    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: collector-config
    data:
      collector.yaml: |
        receivers:
          otlp:
            protocols:
              grpc:
        processors:
        exporters:
          jaeger:
            endpoint: jaeger-collector.default.svc.cluster.local:14250
            insecure: true
          logging:
        service:
          name: cpp-template
          pipelines:
            traces:
              receivers: [otlp]
              processors: []
              exporters: [jaeger]
    

    Just need to setup exporter to jaeger with a valid endpoint and set the jaeger in the exporter list in the trace pipeline