我正在使用带有跟踪的Istio。我有两个REST服务A1,它们调用A2。A1服务将从客户端接收的报头转发到REST服务A2。
然而,我无法在我的Jaeger UI中看到跟踪。我正在使用curl将头部中的一些随机值发送到我的服务A1:
curl -H "end-user: april1101" -H "x-request-id: april1a01"
-H "x-b3-traceid: 1" -H "x-b3-spanid: 2" -H "x-b3-parentspanid: 3"
-H "x-b3-sampled: 4dfgdgsdfgdfg" -H "x-b3-flags: 5"
-H "x-ot-span-context: 6" http://trace-rest-2-service:9005/kafka/headerpass?arg=yo
我尝试过的另一个标头参数是:
curl -H "end-user: 34723b86-fe18-4e36-ac56-0ad12bf3d136"
-H "x-request-id: 4aba321a-4e60-4b42-b0ca-654c2400d485"
-H "x-b3-traceid: 308eec41-93bd-4584-8efe-2b968284c41e"
-H "x-b3-spanid: 8395e40e-6a79-4a34-b444-18d401f597cb"
-H "x-b3-parentspanid: c55f6cf0-3547-4202-b51e-9eaaa2136a73"
-H "x-b3-sampled: 1948dd81-9e70-4694-95f9-018e3abdbe29"
-H "x-b3-flags: acac5baf-42d2-45d8-84d0-645070a76f2e"
-H "x-ot-span-context: 6ee27e27-45c4-47de-86e4-1d4227bcf638"
http://trace-rest-2-service:9005/kafka/headerpass?arg=832amApril_1
不过,我在耶格尔身上看不到任何痕迹。如果只调用服务A3而不传递任何头,那么我在JaegerUI中看到了跟踪。
感谢
您可能遇到此问题的原因有几个。
来自istio文档:
为什么我的请求没有被跟踪?自Istio 1.0.3以来,
default
配置文件中的跟踪采样率已降至1%。这意味着,在Istio捕获的100个跟踪实例中,只有1个会报告给跟踪后端。demo
配置文件中的采样率仍然设置为100%。有关如何设置采样率的更多信息,请参阅本节。如果您仍然没有看到任何跟踪数据,请确认您的端口符合Istio端口命名约定,并且适当的容器端口已公开(例如,通过pod规范(,以启用sidecar代理(Envoy(的流量捕获。
如果您只看到与egress代理相关的跟踪数据,而没有看到ingress代理,那么它可能仍然与Istio端口命名约定有关。从Istio 1.3开始,将自动检测出站流量的协议。
希望它能有所帮助。