配置链路采样
Istio 提供了多种配置链路采样的方法。 在此页面中,您将学习并了解所有配置采样的不同方式。
开始之前
- 确保您的应用程序按照此处6描述的方式传播链路追踪标头。
可用的链路采样配置
百分比采样器:选择用于链路生成的请求百分比的随机采样率。
自定义 OpenTelemetry 采样器:自定义采样器实现,必须与
OpenTelemetryTracingProvider
进行配对。
百分比采样器
随机采样率百分比使用指定的百分比值来选择要采样的请求。
采样率应在 0.0 至 100.0 范围内,精度为 0.01。 例如,要跟踪每 10000 个请求中的 5 个请求,请使用 0.05 作为此处的值。
您可以通过三种方式配置随机采样率:
Telemetry API
可以在各种范围内配置采样:网格范围、命名空间或工作负载,从而提供极大的灵活性。 要了解更多信息,请参阅 Telemetry API7 文档。
安装 Istio 时无需在 defaultConfig
中设置 sampling
:
通过 Telemetry API 启用链路追踪提供程序并设置 randomSamplingPercentage
:
实用 MeshConfig
随机百分比采样可以通过 MeshConfig
进行全局配置。
然后,通过 Telemetry API 启用链路追踪提供程序。
请注意,我们在这里不设置 randomSamplingPercentage
。
使用 proxy.istio.io/config
注解 {#using-the-proxy.istio.io/config-annotation}
您可以将 proxy.istio.io/config
注解添加到 Pod 元数据规范中,
以覆盖任何网格范围的采样设置。
例如,要覆盖上面的网格范围的采样,您可以将以下内容添加到 Pod 清单中:
自定义 OpenTelemetry 采样器
OpenTelemetry 规范定义了 Sampler API。 Sampler API 支持构建自定义采样器,该采样器可以执行更智能、更高效的采样决策, 例如 Probability Sampling(概率采样)8。
然后,此类采样器可以与
OpenTelemetryTracingProvider
配对。
当前在 Istio 中的自定义采样器配置:
自定义采样器通过 MeshConfig
进行配置。以下是配置 Dynatrace 采样器的示例:
优先顺序
通过多种配置采样的方法,了解每种方法的优先顺序非常重要。
使用随机百分比采样器时,优先顺序为:
Telemetry API > Pod 注解 > MeshConfig |
这意味着,如果在上述所有内容中都定义了一个值, 则 Telemetry API 中的值就是被选定的值。
配置自定义 OpenTelemetry 采样器时,优先顺序为:
自定义 OTel 采样器 > (Telemetry API | Pod 注解 | MeshConfig ) |
这意味着,如果配置了自定义 OpenTelemetry 采样器,它将覆盖所有其他方法。
此外,随机百分比值设置为 100
并且无法更改。这很重要,
因为自定义采样器需要接收 100% 的 Span 才能正确执行其决策。
部署 OpenTelemetry 收集器
为 OpenTelemetry Collector 创建命名空间:
部署 OpenTelemetry Collector。 您可以使用此示例配置11作为起点。
部署 Bookinfo 应用程序
部署 Bookinfo 示例应用程序。
使用 Bookinfo 示例生成链路
当 Bookinfo 应用程序启动并运行时, 访问
http://$GATEWAY_URL/productpage
一次或多次以生成链路信息。要查看追踪数据,必须向服务发送请求。请求的数量取决于 Istio 的采样率。 采样率在安装 Istio 时设置,默认采样速率为 1%。在第一个跟踪可见之前,您需要发送至少 100 个请求。 使用以下命令向
productpage
服务发送 100 个请求:
清理
删除 Telemetry 资源:
使用 control-C 或下面命令删除可能仍在运行的任何
istioctl
进程:卸载 OpenTelemetry Collector: