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
限制了可以拥有自定义采样规则的自定义跨度名称的数量。如果远程采样策略超出限制,采样决策将回退到默认采样器。