21.4. Sampling


sampler 决定 trace 是否应该被丢弃或转发,通过限制发送到收集器的追踪数量来降低开销。它有助于管理资源消耗,从而可以避免跟踪每个请求和潜在性能损失的大量存储成本。

警告

对于生产环境环境,应正确设置抽样功能,以最大程度降低基础架构成本。

Red Hat build of Keycloak 支持几个内置 OpenTelemetry 示例程序,例如:

  • always_on
  • always_off
  • traceidratio (默认)
  • parentbased_always_on
  • parentbased_always_off
  • parentbased_traceidratio

已使用的 sampler 可以通过 tracing-sampler-type 属性来更改。

21.4.1. 默认 sampler

红帽构建的 Keycloak 的默认 sampler 是 traceidratio,它根据通过 tracing-sampler-ratio 属性可配置的指定比例控制 trace 抽样率。

21.4.1.1. 跟踪比率

默认追踪比率为 1.0,这意味着所有 trace 都抽样 - 发送到收集器。比率是范围 (0,1] )中的浮动号。例如,当比率为 0.1 时,只有 10% 的 trace 会抽样。

警告

对于生产环境就绪环境,追踪率应该是较小的数字,以防止大量追踪存储基础架构并避免性能开销。

21.4.1.2. rationale

sampler 根据抽样范围的当前比例做出自己的抽样决策,而不管父范围上做出的决定,正如使用 parentbased_traceidratio sampler 一样。

parentbased_traceidratio 抽样器可以是首选的默认类型,因为它可确保 parent 和 child 范围之间的抽样一致性。具体来说,如果对父范围进行抽样,则其所有子范围也会被抽样。它有助于将所有 span 保留为一起,并防止存储不完整的 trace。

但是,它可能会引入某些安全风险,从而导致 DoS 攻击。外部调用者可以操作 trace 标头,父范围可以注入,追踪存储可能会超负。需要评估正确的 HTTP 标头(特别是 tracestate)过滤和适当的调用者信任措施。

如需更多信息,请参阅 W3C Trace 上下文 文档。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.