deepflowio / deepflow

eBPF Observability - Distributed Tracing and Profiling
https://deepflow.io
Apache License 2.0
2.98k stars 333 forks source link

[QA] 自定义RPC协议解析器无法采集系统调用日志 #8516

Open svensxl opened 3 days ago

svensxl commented 3 days ago

Search before asking

Description

我用Rust实现了一个类似bRPC的私有的,扩展解析协议osp,能够正常解析网络包并记录宿主机和pod网卡的日志

Use case

但无法采集客户端和服务端的系统调用日志,查询clickhosue表flow_log.l7_flow_log,找不到相关联的trace日志,参见下图所示 1 2

请问是否我漏修改了什么代码,导致协议解析器,无法解析系统调用采集的数据包吗

Related issues

No response

Are you willing to submit a PR?

Code of Conduct

svensxl commented 3 days ago

看起来是eBPF 的 hook 点, read/write的探针没有解析到,AF_PACKET网卡的解析成功

yinjiping commented 2 days ago

类似bRPC的私有的,扩展解析协议osp,这个协议ebpf无法解析出来,有两个方法: 1 agent/src/ebpf/kernel/include/protocol_inference.h 添加这个协议,让ebpf支持这个协议 2 直接配置端口的白名单,让这个端口(协议osp)的数据都送上来。

1 可能比较麻烦一些, 可以使用2试试 @svensxl

设置白名单参考: https://github.com/deepflowio/deepflow/blob/main/server/agent_config/example.yaml#L1412

svensxl commented 1 day ago

类似bRPC的私有的,扩展解析协议osp,这个协议ebpf无法解析出来,有两个方法: 1 agent/src/ebpf/kernel/include/protocol_inference.h 添加这个协议,让ebpf支持这个协议 2 直接配置端口的白名单,让这个端口(协议osp)的数据都送上来。

1 可能比较麻烦一些, 可以使用2试试 @svensxl

设置白名单参考: https://github.com/deepflowio/deepflow/blob/main/server/agent_config/example.yaml#L1412

谢谢,我尝试了第二种方法,有点奇怪,也导致了AF_PACKET网卡日志采集失败,我再试试第一种方法