使用遥测 API 配置追踪
Istio 提供了配置高级跟踪选项的功能,例如采样率和向报告的跨度添加自定义标签。此任务向您展示如何使用遥测 API 自定义跟踪选项。
开始之前
安装
在此示例中,我们将跟踪发送到 zipkin
,因此请确保已安装它
$ cat <<EOF > ./tracing.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
enableTracing: true
defaultConfig:
tracing: {} # disabled MeshConfig tracing options
extensionProviders:
# add zipkin provider
- name: zipkin
zipkin:
service: zipkin.istio-system.svc.cluster.local
port: 9411
EOF
$ istioctl install -f ./tracing.yaml --skip-confirmation
为网格启用追踪
通过应用以下配置启用跟踪
$ kubectl apply -f - <<EOF
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
tracing:
- providers:
- name: "zipkin"
EOF
自定义跟踪采样
采样率选项可用于控制报告到跟踪系统的请求百分比。应根据网格中的流量和您想要收集的跟踪数据量来配置此选项。默认速率为 1%。
$ kubectl apply -f - <<EOF
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
tracing:
- providers:
- name: "zipkin"
randomSamplingPercentage: 100.00
EOF
自定义跟踪标签
可以根据字面量、环境变量和客户端请求头向跨度添加自定义标签,以便在特定于您的环境的跨度中提供其他信息。
您可以使用以下三个支持的选项中的任何一个来自定义标签。
字面量表示添加到每个跨度的静态值。
apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: mesh-default namespace: istio-system spec: tracing: - providers: - name: "zipkin" randomSamplingPercentage: 100.00 customTags: "provider": literal: value: "zipkin"
环境变量可用于从工作负载代理环境变量填充自定义标签的值。
apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: mesh-default namespace: istio-system spec: tracing: - providers: - name: "zipkin" randomSamplingPercentage: 100.00 customTags: "cluster_id": environment: name: ISTIO_META_CLUSTER_ID defaultValue: Kubernetes # optional
客户端请求头选项可用于从传入的客户端请求头填充标签值。
apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: mesh-default namespace: istio-system spec: tracing: - providers: - name: "zipkin" randomSamplingPercentage: 100.00 customTags: my_tag_header: header: name: <CLIENT-HEADER> defaultValue: <VALUE> # optional
自定义跟踪标签长度
默认情况下,作为HttpUrl
跨度标签一部分包含的请求路径的最大长度为 256。要修改此最大长度,请将以下内容添加到您的tracing.yaml
文件中。
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
enableTracing: true
defaultConfig:
tracing: {} # disabled tracing options via `MeshConfig`
extensionProviders:
# add zipkin provider
- name: zipkin
zipkin:
service: zipkin.istio-system.svc.cluster.local
port: 9411
maxTagLength: <VALUE>
验证结果
您可以使用Zipkin UI验证结果。