tracing 块
tracing 是一个可选的配置块,用于自定义 Alloy 如何生成分布式追踪。tracing 不需要标签,每个配置文件中只能出现一次。
示例
tracing {
sampling_fraction = 0.1
write_to = [otelcol.exporter.otlp.tempo.input]
}
otelcol.exporter.otlp "tempo" {
// Send traces to a locally running Tempo without TLS enabled.
client {
endpoint = sys.env("TEMPO_OTLP_ENDPOINT")
tls {
insecure = true
}
}
}参数
支持以下参数
| 名称 | 类型 | 描述 | 默认值 | 必填 |
|---|---|---|---|---|
sampling_fraction | 数字 | 保留的分布式追踪比例。 | 0.1 | 否 |
write_to | 列表(otelcol.Consumer) | 来自 otelcol 组件的输入,用于发送分布式追踪。 | [] | 否 |
write_to 参数控制将分布式追踪发送到哪些组件进行处理。数组中的元素可以是任何接受分布式追踪的 otelcol 组件,包括处理器和导出器。当 write_to 设置为空数组 [] 时,所有分布式追踪都将被丢弃。
注意
在
tracing块被评估之前生成的任何分布式追踪,例如在进程生命周期早期启动时,都将被丢弃。
sampling_fraction 参数控制应将生成的分布式追踪的百分比发送到 write_to 指定的消费者。当设置为 1 或更大时,保留 100% 的分布式追踪。当设置为 0 或更小时,保留 0% 的分布式追踪。
块
在 tracing 定义中支持以下块
| 层级 | 块 | 描述 | 必填 |
|---|---|---|---|
| sampler | sampler | 在基本采样比例之上定义自定义采样。 | 否 |
| sampler > jaeger_remote | jaeger_remote | 通过 Jaeger 远程采样器检索采样信息。 | 否 |
> 符号表示更深的嵌套层级。例如,sampler > jaeger_remote 指的是定义在 sampler 块内部的 jaeger_remote 块。
sampler 块
sampler 块包含要使用的自定义采样器的定义。sampler 块不支持任何参数,完全通过内部块进行控制。
在 sampler 块中定义多个要使用的采样器是无效的。
jaeger_remote 块
jaeger_remote 块配置通过公开 Jaeger 采样策略的远程服务器检索采样信息。
| 名称 | 类型 | 描述 | 默认值 | 必填 |
|---|---|---|---|---|
url | string | 从中检索采样策略的 URL。 | "http://127.0.0.1:5778/sampling" | 否 |
max_operations | 数字 | 限制可以拥有自定义采样的操作数量。 | 256 | 否 |
refresh_interval | 持续时间 | 轮询 URL 获取新采样策略的频率。 | "1m" | 否 |
远程采样策略从 url 参数指定的 URL 检索,并按计时器轮询更新。轮询频率由 refresh_interval 参数控制。
对远程采样策略服务器的请求是通过对配置的 url 参数发出 HTTP GET 请求来完成的。URL 中始终会添加 service=alloy 查询参数,以便服务器能够响应特定于服务的策略。HTTP 响应体将被读取为 JSON,其模式与 Jaeger strategies.json 文件中指定的模式匹配。
max_operations 限制了可以拥有自定义采样规则的自定义跨度名称的数量。如果远程采样策略超出限制,采样决策将回退到默认采样器。



