[BUG] WASM payload缺失
Search before asking
- [X] I had searched in the issues and found no similar feature requirement.
DeepFlow Component
Agent
What you expected to happen
通过wasm采集到的body有缺失,怀疑是进行了分包。
agent报错:
WASM代码(同http_status_rewrite):
agent-group-config配置如下:
How to reproduce
No response
DeepFlow version
agent: v6.5.9 server:v6.5.9
DeepFlow agent list
No response
Kubernetes CNI
No response
Operation-System/Kernel version
No response
Anything else
No response
Are you willing to submit a PR?
- [X] Yes I am willing to submit a PR!
Code of Conduct
- [X] I agree to follow this project's Code of Conduct
@axnhhhh 您好,payload 的长度是跟 l7_log_packet_size 配置有关,看到您已经配置了,所以认为出现了分包的怀疑是合理的,确实是有可能如此。以下是几个排查思路和建议,供您参考:
- payload 的长度可能还跟 agent-group-config 中的 capture_packet_size 配置有关,请确认是否有设置及设置是否足够长;
- 也有可能是网络设置导致的,例如报文长度大于网卡 mtu 长度导致的分包,或者其他网关之类的设置导致的截断,请确认此类设置是否合理;
- 为了验证 wasm 插件接收到的 payload 是否被截断,可以在 onResp 方法开头便打印 payload 的日志,以便调试,例如:
sdk.Info("on http resp payload_len: %d, payload: %s", len(payload), string(payload)),另外,我看到代码里是在解析 body 为 json 失败时打印了 payload 的日志,我觉得不太合理。解析 body 为 json 时,body 的赋值是不确定的,应当确认 body 的内容再解析,且打印的日志的内容应该是 body 。
您好,根据您提供的排查思路,进行了初步排查,暂并未定位到具体原因。
1、agent-group-config 中 capture_packet_size 未配置,使用的默认配置
2、mtu 1500
3、payload分包的场景中,payload长度不固定。有<1500 有>1500 的
4、另外发现还有粘包的情况,下图为wasm重打印的payload数据包
您好,根据您提供的排查思路,进行了初步排查,暂并未定位到具体原因。 1、agent-group-config 中 capture_packet_size 未配置,使用的默认配置 2、mtu 1500
3、payload分包的场景中,payload长度不固定。有<1500 有>1500 的
4、另外发现还有粘包的情况,下图为wasm重打印的payload数据包
您好,如果是遇到了分包或者 http 分块,目前是可能会解析 json 失败,至于您提到的“粘包”问题,应该不是粘包,是因为日志打印过多而已。
3、payload分包的场景中,payload长度不固定。有<1500 有>1500 的
4、另外发现还有粘包的情况,下图为wasm重打印的payload数据包 