deepflowio / deepflow

:sparkles: Zero-code distributed tracing, observability via eBPF :rocket:
https://deepflow.io
Apache License 2.0
2.62k stars 293 forks source link

[FR] 导入 OpenTelemetry 数据,trace 中的span 是如何跟原始数据关联起来的 #7167

Open jiaozi07 opened 3 weeks ago

jiaozi07 commented 3 weeks ago

Search before asking

Description

otel 中的数据跟ebpf 的火焰图是割裂的,无法关联在一起

Use case

目前的架构: trace(agent) --> OpenTelemetry --> deepflow agent --> deepflow server 现象是otel 中的数据跟ebpf 的火焰图是割裂的,无法关联在一起,请问是哪里出现了问题

image

Related issues

No response

Are you willing to submit a PR?

Code of Conduct

sharang commented 2 weeks ago

@jiaozi07 你的 deepflow-agent 配置是怎样的?以及 agent 和 version 分别是什么版本?

jiaozi07 commented 2 weeks ago

deepflow-ctl agent-group-config list g-ba4afb713c -o yaml vtap_group_id: g-ba4afb713c external_agent_http_proxy_enabled: 1 # required external_agent_http_proxy_port: 38086 # optional, default 38086

/ # deepflow-server -v Name: deepflow-server community edition Branch: v6.5 CommitID: 5b57b89343b1281be513a2fda17c914a5ed22526 RevCount: 10673 Compiler: go version go1.21.12 linux/amd64 CompileTime: 2024-07-08 10:20:27

deepflow-agent -v 10658-e4122adefd9879e394eee5f5fd6398bfce95a70b Name: deepflow-agent community edition Branch: v6.5 CommitId: e4122adefd9879e394eee5f5fd6398bfce95a70b RevCount: 10658 Compiler: rustc 1.77.1 (7cf61ebde 2024-03-27) CompileTime: 2024-07-04 12:01:24

sharang commented 2 weeks ago

@jiaozi07 直接搜索一下 flow_log.l7_flow_log 表,看看有没有 signal_source = eBPF & trace_id != "" 的条目

可以基于下图修改搜索条件查看:

image

sharang commented 2 weeks ago

预期之中,应该 signal_source = eBPF / Packet 的 request log 会根据 trace_id、span_id 字段的值与 otel 的 request log 关联起来,呈现在分布式追踪火焰图中。

liu1004010308 commented 1 week ago

@jiaozi07 @sharang 您好,我遇到了同样的问题,jaeger数据导入后,jaeger otel数据和ebpf 的火焰图也是分离的! 后来解决了吗?

sharang commented 1 week ago

@jiaozi07 @sharang 您好,我遇到了同样的问题,jaeger数据导入后,jaeger otel数据和ebpf 的火焰图也是分离的! 后来解决了吗?

@liu1004010308 在 request log 中用一个 trace_id 来查询,看看能否出现 span_id 相同的、signal_source = eBPF/OTel 的两个 span。预期应该能出现。如果没有出现的话,可能的原因是 trace_id/span_id 在 HTTP header 中太靠后的位置,将此配置增大尝试一下:

https://www.deepflow.io/docs/zh/best-practice/agent-performance-tuning/#%E9%99%8D%E4%BD%8E%E5%8E%9F%E5%A7%8B%E6%95%B0%E6%8D%AE%E7%9A%84%E9%95%BF%E5%BA%A6

l7_log_packet_size

liu1004010308 commented 1 day ago

@sharang 我遇到了一个问题,为什么jaeger的trace_id只有16位,到deepflow后就变成了32位。 image