You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Otel Collector无法将Trace发送至Jaeger问题排查求助

Otel Collector无法将Trace发送至Jaeger问题排查求助

各位大佬好,我遇到一个非常棘手的问题,想请大家帮忙排查下:

我有几个基于Spring Boot + Micrometer + Spring Boot Actuator实现了OpenTelemetry追踪的Java应用,直接把应用的OTLP端点指向Jaeger的4318端口时,Trace能正常在Jaeger UI(http://localhost:16686)里显示。但因为很多Trace没用,我想过滤掉或者重命名这些无用的Trace,所以引入了Otel Collector,打算通过它来转发并处理Trace,结果现在完全卡壳了——Collector没报错,但就是没把Trace转发到Jaeger,只有Collector的debug exporter能在控制台正常输出Trace内容,Jaeger UI里啥都看不到。

下面是我的所有相关配置,以及已经试过的排查动作:


1. 业务应用(api-service)的Docker Compose配置

api-service:
  image: <api-image>
  restart: on-failure
  depends_on:
    - mysql
    - zookeeper
    - redis
    - kafka
    - user-app
    - ff4j-ui
  volumes:
    - $PWD/data/config:/config
  environment:
    SPRING_REDIS_HOST: <host>
    AWS_ACCESS_KEY_ID: <AWS_ACCESS_KEY_ID>
    SPRING_DATASOURCE_PASSWORD: <PASSWORD>
    AWS_SECRET_ACCESS_KEY: <AWS_SECRET_ACCESS_KEY>
    CORS_EXPOSED_HEADERS: <HEADERS>
    XSRF_DOMAIN: 127.0.0.1
    ZOOKEEPER_CONNECTION: zookeeper:2181
    JAEGER_SAMPLER_TYPE: const
    SPRING_DATASOURCE_USERNAME: <USERNAME>
    REDIS_SESSION_HOST: redis
    JDBC_INCLUDES: QUERY, KEYS, FETCH
    OTEL_EXPORTER_OTLP_ENDPOINT: http://0.0.0.0:4318
    CCS_SERVICE_NAME: <SERVICE-NAME>
    FEATUREFLAG_HOSTURL: http://ff4j-ui:8099
    CORS_ALLOWED_ORIGINS: http://127.0.0.1:8081
    SWAGGER_ENABLED: 'false'
    CORS_ALLOWED_METHODS: GET,POST,HEAD,OPTIONS,PATCH,PUT,DELETE
    JAEGER_SAMPLER_PARAM: '1'
    JAEGER_AGENT_HOST: jaeger
    HTTP_SERVICE_CONNECT_TIMEOUT: '99999'
    HTTP_SERVICE_READ_TIMEOUT: '999999'
    SPRING_DATASOURCE_URL: <DATASOURCE-URL>
    SPRING_KAFKA_BOOTSTRAPSERVERS: kafka:9092
    MANAGEMENT_OTLP_TRACING_ENDPOINT: http://0.0.0.0:4318
  ports:
    - 8082:8080
    - 7988:5005

补充说明:当我把应用的MANAGEMENT_OTLP_TRACING_ENDPOINT直接改成jaeger:4318时,Trace能立刻在Jaeger里正常显示,说明应用的追踪逻辑本身没问题。


2. Otel Collector的Docker Compose配置

otel-collector:
  image: otel/opentelemetry-collector-contrib:latest
  depends_on:
    - jaeger
  volumes:
    - $PWD/data/config/otel-collector-config.yml:/etc/otel-collector-config.yml
  ports:
    - 4317:4317
    - 4318:4318
    - 1888:1888
    - 13133:13133
    - 55679:55679

3. Jaeger的Docker Compose配置

jaeger:
  image: jaegertracing/all-in-one:latest
  container_name: jaeger
  environment:
    COLLECTOR_ZIPKIN_HOST_PORT: 9411
    COLLECTOR_OTLP_ENABLED: true
    SPAN_STORAGE_TYPE: memory
    LOG_LEVEL: debug
    JAEGER_LOG_LEVEL: debug
  ports:
    - "16686:16686"
    - "16685:16685"

4. Otel Collector的核心配置文件(otel-collector-config.yml)

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:
        endpoint: 0.0.0.0:4318

processors:
  filter:
    traces:
      exclude:
        spans:
          - 'name == "security filterchain before"'
          - 'name == "authorize request"'

exporters:
  otlp/jaeger:
    endpoint: jaeger:4317
    tls:
      insecure: true
    debug:
      verbosity: detailed
  debug:

service:
  telemetry:
    logs:
      level: debug
  extensions: [zpages]
  pipelines:
    traces:
      receivers: [otlp]
      exporters: [otlp/jaeger,debug]

我已经试过的所有排查动作

  1. 完全移除Collector配置里的filter处理器,只保留最基础的接收+转发逻辑,问题依旧
  2. 尝试修改Collector的Jaeger exporter端点:
    • 改成jaeger:4318(Jaeger的OTLP HTTP端口)
    • 改成jaeger:14250(Jaeger的gRPC直接接收端口)
      两种情况都没用
  3. 更换Jaeger镜像版本(试过比latest新的特定版本),没有改善
  4. 调整应用的OTLP端点为otel-collector:4318/otel-collector:4317,Collector的debug exporter能正常收到Trace,说明应用到Collector的链路是通的
  5. 开启了Collector的debug级别日志,全程没看到任何报错信息

现在我要么想解决Collector转发到Jaeger的问题,要么求推荐其他能实现过滤/重命名OpenTelemetry Trace的替代方案,麻烦各位大佬支支招!


内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 11:50:30