Opentelemetry - OTLP Exporter setup for jaeger

554 Views Asked by At

while installing and running the OTLP collector in a my server,it throws the error, Err: connection error: desc = "transport: authentication handshake failed: tls: first record does not look like a TLS handshake"

My config setup:

receivers:
  otlp:
    protocols:
      http:
      grpc:
        endpoint: "0.0.0.0:4317"
exporters:
   otlp:
      endpoint: "jaegersite.com:4317"
      tls:
        insecure: false
        insecure_skip_verify: true        
   debug:
       verbosity: detailed
service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [debug,otlp]

Running jaeger in jaegersite.com and exposed in 16686 port,

Running Opentelemtry collector as image in the compose, compose file,

otel-collector:
    image: otel/opentelemetry-collector-contrib
    volumes:
      - ./otel-collector-config.yaml:/etc/otelcol-contrib/config.yaml
    ports:
      - 1888:1888 # pprof extension
      - 8888:8888 # Prometheus metrics exposed by the Collector
      - 8889:8889 # Prometheus exporter metrics
      - 13133:13133 # health_check extension
      - 4317:4317 # OTLP gRPC receiver
      - 4318:4318 # OTLP http receiver
      - 55679:55679 # zpages extension

Also checked the above configuartion with TLS certicate for exporter as ,

tls:      
  cert_file: "./mycertificatepath/.pem file"
  key_file: "./mykeypath/.pem file"

same error came.

I want to setup a OTLP collector with Jaeger as a exporter endpoint which was hosted in another server and Instrumented application has been hosted in another server.Then how the receiver and exporter and port should be like and Overcome TLS issue.

Here is my jeager setup,

docker run -d --name jaeger \
  -p 5775:5775/udp \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 14250:14250 \
  -p 14268:14268 \
  -p 14269:14269 \
  -p 4317:4317 \
  -p 4318:4318 \
  -p 9411:9411 \
  jaegertracing/all-in-one:1.52
1

There are 1 best solutions below

2
On

You didn't provide full reproducible example, so answer may not be 100% correct and some additional adjustments may be needed.

You didn't expose how is jaeger configured, but it looks like you didn't configure TLS, so you have to export to Jaeger OTLP port without TLS:

exporters:
   otlp:
      endpoint: "jaegersite.com:<jaeger-otlp-port>"
      tls:
        insecure: true

BTW Jaeger port 16686 is for Jaeger UI. Jaeger has port 55680 for OTLP format usually (but again, you didn't show your Jaeger configuration, so it can be different port and/or TLS configuration in your case).