deepflow icon indicating copy to clipboard operation
deepflow copied to clipboard

[BUG] WASM payload缺失

Open axnhhhh opened this issue 1 year ago • 3 comments

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有缺失,怀疑是进行了分包。 image

agent报错: image

WASM代码(同http_status_rewrite): image

agent-group-config配置如下: image

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

axnhhhh avatar Jul 12 '24 04:07 axnhhhh

@axnhhhh 您好,payload 的长度是跟 l7_log_packet_size 配置有关,看到您已经配置了,所以认为出现了分包的怀疑是合理的,确实是有可能如此。以下是几个排查思路和建议,供您参考:

  1. payload 的长度可能还跟 agent-group-config 中的 capture_packet_size 配置有关,请确认是否有设置及设置是否足够长;
  2. 也有可能是网络设置导致的,例如报文长度大于网卡 mtu 长度导致的分包,或者其他网关之类的设置导致的截断,请确认此类设置是否合理;
  3. 为了验证 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 。

TomatoMr avatar Jul 12 '24 06:07 TomatoMr

您好,根据您提供的排查思路,进行了初步排查,暂并未定位到具体原因。 1、agent-group-config 中 capture_packet_size 未配置,使用的默认配置 2、mtu 1500 image 3、payload分包的场景中,payload长度不固定。有<1500 有>1500 的 image 4、另外发现还有粘包的情况,下图为wasm重打印的payload数据包 image

axnhhhh avatar Jul 15 '24 10:07 axnhhhh

您好,根据您提供的排查思路,进行了初步排查,暂并未定位到具体原因。 1、agent-group-config 中 capture_packet_size 未配置,使用的默认配置 2、mtu 1500 image 3、payload分包的场景中,payload长度不固定。有<1500 有>1500 的 image 4、另外发现还有粘包的情况,下图为wasm重打印的payload数据包 image

您好,如果是遇到了分包或者 http 分块,目前是可能会解析 json 失败,至于您提到的“粘包”问题,应该不是粘包,是因为日志打印过多而已。

TomatoMr avatar Jul 18 '24 01:07 TomatoMr