跳到主要内容
跳到主要内容

链路追踪

链路追踪

链路追踪(tracing)记录了一次请求在系统中的执行的生命周期,包括请求及其子过程调用链路、执行时间及统计信息,可用于慢查询定位、性能瓶颈分析等。

原理

doris负责收集traces,并导出到第三方链路分析系统,由链路分析系统负责traces的展示和存储。

快速搭建

doris目前支持直接将traces导出到 zipkin 中。

部署 zipkin

curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar

配置及启动Doris

添加配置到fe.conf

# 开启链路追踪
enable_tracing = true

# 配置traces导出到zipkin
trace_export_url = http://127.0.0.1:9411/api/v2/spans

添加配置到be.conf

# 开启链路追踪。
enable_tracing = true

# 配置traces导出到zipkin。
trace_export_url = http://127.0.0.1:9411/api/v2/spans

# 可选。缓存span的队列大小。span数量达到队列容量一半时将触发一次span导出,队列满后到达队列的span将被丢弃。
max_span_queue_size=2048

# 可选。单次导出span的最大数量。
max_span_export_batch_size=512

# 可选。导出span的最大间隔时间。
export_span_schedule_delay_millis=500

启动fe和be

sh fe/bin/start_fe.sh --daemon
sh be/bin/start_be.sh --daemon

执行查询

...

查看zipkin UI

浏览器打开http://127.0.0.1:9411/zipkin/ 可查看查询链路。

使用opentelemetry collector

使用opentelemetry collector 可将traces导出到其他系统例如zipkin、jaeger、skywalking,或者数据库系统和文件中。 详情参考 collector exporter

同时 opentelemetry collector 提供了丰富的算子用来处理traces。例如过滤 spans尾采样。详情参考collector processor

traces导出的路径:doris -> collector -> zipkin等。

部署 opentelemetry collector

opentelemetry 发布了collector corecontrib, contrib提供了更丰富的功能,这里以contrib版举例。

下载 collector

下载 otelcol-contrib, 可在官网下载更多平台预编译版

wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.55.0/otelcol-contrib_0.55.0_linux_amd64.tar.gz

tar -zxvf otelcol-contrib_0.55.0_linux_amd64.tar.gz

生成配置文件

collector 配置文件分为5部分:receiversprocessorsexportersextensionsservice。其中receivers、processors、exporters分别定义了接收、处理、导出数据的方式;extensions是可选的,用于扩展主要用于不涉及处理遥测数据的任务;service指定在collector中使用哪些组件。可参考 collector configuration

下面配置文件使用otlp(OpenTelemetry Protocol)协议接收traces数据,进行批处理并过滤掉时间超过50ms的traces, 最终导出到zipkin和文件中。

cat > otel-collector-config.yaml << EOF
receivers:
otlp:
protocols:
http:

exporters:
zipkin:
endpoint: "http://10.81.85.90:8791/api/v2/spans"
file:
path: ./filename.json

processors:
batch:
tail_sampling:
policies:
{
name: duration_policy,
type: latency,
latency: {threshold_ms: 50}
}

extensions:

service:
pipelines:
traces:
receivers: [otlp]
processors: [batch, tail_sampling]
exporters: [zipkin, file]
EOF

启动 collector

nohup ./otelcol-contrib --config=otel-collector-config.yaml &

配置及启动Doris

添加配置到fe.conf

# 开启链路追踪
enable_tracing = true

# 启用opentelemetry collector。
trace_exporter = collector

# 配置traces导出到collector,4318为collector otlp http默认端口。
trace_export_url = http://127.0.0.1:4318/v1/traces

添加配置到be.conf

# 开启链路追踪。
enable_tracing = true

# 启用opentelemetry collector。
trace_exporter = collector

# 配置traces导出到collector,4318为collector otlp http默认端口。
trace_export_url = http://127.0.0.1:4318/v1/traces

# 可选。缓存span的队列大小。span数量达到队列容量一半时将触发一次span导出,队列满后到达队列的span将被丢弃。
max_span_queue_size=2048

# 可选。单次导出span的最大数量。
max_span_export_batch_size=512

# 可选。导出span的最大间隔时间。
export_span_schedule_delay_millis=500

启动fe和be

sh fe/bin/start_fe.sh --daemon
sh be/bin/start_be.sh --daemon

执行查询

...

查看traces

...