如何为Traefik TCP路由配置Jaeger链路追踪?
Traefik TCP路由无OpenTelemetry追踪Span问题排查与解决
问题场景
已基于Docker Compose部署Jaeger、Traefik v3.1.3和traefik-whoami测试服务:
- HTTP路由代理正常,Jaeger中能看到完整追踪链路(包含Traefik内部Span)
- TCP路由代理功能正常,但Jaeger中无任何TCP相关的追踪数据
- 仅需获取Traefik处理TCP请求的内部Span,无需上下文传播
当前部署配置
docker-compose.yml
version: "3" services: jaeger: image: jaegertracing/all-in-one ports: - "16686:16686" traefik: image: traefik:v3.1.3 volumes: - ./traefik_cfg/:/etc/traefik/ ports: - "9000:9000" - "18080:80" whoami: image: traefik/whoami ports: - "28080:80"
traefik.toml
[global] checkNewVersion = false sendAnonymousUsage = false [log] level = "DEBUG" [api] dashboard = true insecure = true [entryPoints] [entryPoints.web] address = ":80" [entryPoints.tcp] address = ":9000" [providers] [providers.file] filename = "/etc/traefik/dynamic_conf.toml" [tracing] addInternals = true [tracing.otlp.grpc] endpoint = "jaeger:4317" insecure = true
dynamic_conf.toml
[tcp] [tcp.routers] [tcp.routers.whoami-tcp] entryPoints = ["tcp"] rule = "HostSNI(`*`)" service = "whoami-tcp-svc" [tcp.services.whoami-tcp-svc.loadBalancer] [[tcp.services.whoami-tcp-svc.loadBalancer.servers]] address = "whoami:80" [http.routers] [http.routers.whoami-http] entryPoints = ["web"] rule = "PathPrefix(`/whoami`)" service = "whoami-http-svc" [http.services] [http.services.whoami-http-svc] [http.services.whoami-http-svc.loadBalancer] [[http.services.whoami-http-svc.loadBalancer.servers]] url = "http://whoami:80"
解决方法
Traefik v3中,TCP路由的追踪需要显式在TCP路由器配置中开启追踪开关——HTTP路由默认继承全局追踪配置,但TCP路由需单独声明。
修改dynamic_conf.toml中的TCP路由器配置,添加tracing = true:
[tcp] [tcp.routers] [tcp.routers.whoami-tcp] entryPoints = ["tcp"] rule = "HostSNI(`*`)" service = "whoami-tcp-svc" tracing = true # 新增该行启用TCP路由追踪
验证步骤
- 重启Traefik服务加载新配置
- 发送TCP请求测试:使用
nc localhost 9000,输入GET / HTTP/1.1并回车两次模拟HTTP请求(或直接用telnet发送数据) - 打开Jaeger UI(http://localhost:16686),筛选Traefik服务,即可看到TCP请求的内部追踪Span
额外排查点
- 查看Traefik DEBUG日志,确认是否有
Starting TCP tracing span类日志,若存在说明追踪已触发 - 确保Jaeger容器的4317端口在Docker网络中正常可达(traefik与jaeger同属默认网络,无需额外配置)
内容的提问来源于stack exchange,提问作者user33262
相关产品推荐
相关产品推荐

