如何配置K8s中SpringBoot应用通过OpenTelemetry向Jaeger发追踪数据
Kubernetes中SpringBoot用OpenTelemetry对接Jaeger Operator实例配置指南
关于Jaeger Sidecar注入的说明
不需要在Deployment中添加sidecar.jaegertracing.io/inject: "true"注解。你使用的是OpenTelemetry SDK直接收集并发送追踪数据到Jaeger Collector,该注解是用来注入Jaeger代理sidecar的,当前场景完全不需要额外代理,直接由OTel SDK发送数据即可。
配置端点的具体值
先确认Jaeger Operator部署的Collector服务名称,执行命令查看observability命名空间下的相关服务:
kubectl get svc -n observability
Collector服务名称通常为<你的Jaeger实例名>-collector,比如实例名为prod-jaeger,则服务名为prod-jaeger-collector。
1. OTLP Exporter配置(推荐,OpenTelemetry原生方式)
用OTLP协议直接发送到Jaeger Collector,Spring Boot配置示例:
# HTTP协议(端口4318) spring.sleuth.otel.exporter.otlp.endpoint=http://<jaeger-collector-service-name>.observability.svc.cluster.local:4318/v1/traces spring.sleuth.otel.exporter.otlp.protocol=http/protobuf # 或使用gRPC协议(端口4317) # spring.sleuth.otel.exporter.otlp.endpoint=grpc://<jaeger-collector-service-name>.observability.svc.cluster.local:4317
2. Jaeger Exporter配置(兼容Jaeger格式)
如果选择用OTel SDK的Jaeger格式 exporter,配置示例:
# gRPC协议(端口14250) spring.sleuth.otel.exporter.jaeger.endpoint=http://<jaeger-collector-service-name>.observability.svc.cluster.local:14250 # 或HTTP协议(端口14268) # spring.sleuth.otel.exporter.jaeger.endpoint=http://<jaeger-collector-service-name>.observability.svc.cluster.local:14268/api/traces
额外注意事项
- 确保Spring Boot应用所在命名空间与observability命名空间网络连通正常,K8s默认DNS解析支持跨命名空间服务访问,只要Collector服务存在即可。
- 确认项目已引入正确依赖:
spring-cloud-starter-sleuth和spring-cloud-sleuth-otel-autoconfigure,保证OTel SDK能正常集成到SpringBoot应用中。
内容的提问来源于stack exchange,提问作者Tair Itzhak
相关产品推荐
相关产品推荐

