istio-分布式追踪
2020-07-01 本文已影响0人
与诗小睡
- 分布式追踪可以让用户对跨多个分布式服务网格的 1 个请求进行追踪分析。这样进而可以通过可视化的方式更加深入地了解请求的延迟,序列化和并行度
Istio 利用 Envoy 的分布式追踪功能提供了开箱即用的追踪集成。确切地说,Istio 提供了安装各种各种追踪后端服务的选项,并且通过配置代理来自动发送追踪 span 到追踪后端服务。 - 追踪上下文传递
尽管 Istio 代理能够自动发送 span,但是他们需要一些附加线索才能将整个追踪链路关联到一起。
所以当代理发送 span 信息的时候,应用需要附加适当的 HTTP 请求头信息,这样才能够把多个 span 正确的关联到同一个追踪上
要做到这一点,应用程序从传入请求到任何传出的请求中需要包含以下请求头参数:
- x-request-id
- x-b3-traceid
- x-b3-spanid
- x-b3-parentspanid
- x-b3-sampled
- x-b3-flags
- x-ot-span-context
- 追踪采样
默认情况下,使用 demo 配置文件安装时,Istio 会捕获所有请求的追踪信息。例如,当使用上面的 Bookinfo 示例应用时,每次访问 /productpage 接口时,你都可以在 dashboard 中看到一条相应的追踪信息。此采样频率适用于测试或低流量网格。对于高流量网格你可以通过下面的两种方法之一来降低追踪采样频率.
- 在网格安装时,使用可选项
values.pilot.traceSampling
来设置采样百分比。参考通过 istioctl 安装文档查看详细的配置可选项
在运行中的网格,可以通过编辑 istio-pilot deployment 并通过以下步骤来改变环境变量:
运行下面的命令来打开编辑器并加载 deployment 配置文件
kubectl -n istio-system edit deploy istio-pilot
找到 PILOT_TRACE_SAMPLING 环境变量,将 value: 设置成你想要的百分比。
在这两种情况下,有效值的范围从 0.0 到 100.0,精度为 0.01。