deepflow icon indicating copy to clipboard operation
deepflow copied to clipboard

[BUG] 自定义开发wasm 遇见的几个问题

Open wuzongling opened this issue 1 year ago • 6 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

1 wasn_instance: "tx_wasm" wasm on http resp fail: vm call on_http_resp fail: error while executing at wasm backtrace: 0: memory fault at wasm address 0x18828a4 in linear memory of size 0x1000000 1: wasm trap: out of bounds memory acces image

加上_ "github.com/wasilibs/nottinygc"后,报了新错误:wasn_instance: "tx_wasm" wasm on http resp fail: vm call on_http_resp fail: error while executing at wasm backtrace:

2 wasn_instance: "tx_wasm" wasm on http resp fail: vm call on_http_resp fail: error while executing at wasm backtrace:

3 采集到的body 是缺失的,有的是没有采集到body,有的是采集的json 不全 image image

4 采集到的trace id 在grafana 上,根据查询条件查询不出来 image image

5 这里生成的request id 不知道哪里生成出来的 image

6 Exception 的值设置不省心,都是OK 企业微信截图_31601fee-6d56-4e0d-9d66-bc1ded90e47a 企业微信截图_0c3b4810-2647-48af-9daa-c9d7f4757049 企业微信截图_29b10512-da8e-4ab7-99f0-239ec3be5c77

How to reproduce

No response

DeepFlow version

agent :6.3.8

server : 基于6.2.5 二次开发

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

wuzongling avatar Apr 19 '24 02:04 wuzongling

你好,目前经过分析与复现,得出结论:

  1. 导致 painc 原因如下: 代码中些问题,比如下面这里如果还没赋值,可能会导致 panic。建议将错误处理完善一下,目前 wasm 插件发生 panic 会 trap 且无法捕获,所以需要自己预防一下 panic img_v3_02a9_7839aeb3-85a1-4793-ba8b-27a3cd85361g
  2. 数据缺失问题(body,json 缺失)原因如下:可能是出现分包了(不确定)
  3. 采集到的 trace id 在 grafana 上,根据查询条件查询不出来,可能为 trace_id 等数据匹配时带有引号,建议前后去掉引号,或者把引号换位星号 img_v3_02a9_2e3b6b7b-c835-4c4b-9257-c3a63f751e3g
  4. 生成的 request id 不知道哪里生成出来的,原因如下:我们是无插桩的,也不会凭空生成一个 request id,需要检查一下代码中有没有赋值的位置
  5. exception 不省心,需要检查一下对应设置 img_v3_02a9_5335a98d-d62d-48f8-9de7-1ed97190f8cg img_v3_02a9_03f6187b-ec12-4f88-ad36-658908875a5g

1473371932 avatar Apr 28 '24 01:04 1473371932

1 导致 painc 原因如下: 代码中些问题,比如下面这里如果还没赋值,可能会导致 panic。建议将错误处理完善一下,目前 wasm 插件发生 panic 会 trap 且无法捕获,所以需要自己预防一下 panic。
这个我们测试的时候也发现,现在是可能空指针的都做了判断。这里有个问题,在wasm 插件里面做defer 去捕获panic 不知道会不会生效,现在代码是这样写了

wuzongling avatar Apr 28 '24 02:04 wuzongling

生成的 request id 不知道哪里生成出来的,原因如下:我们是无插桩的,也不会凭空生成一个 request id,需要检查一下代码中有没有赋值的位置。 可能是我们网关集成了otel ,它自己做了一些设置导致的。这个问题不大

wuzongling avatar Apr 28 '24 02:04 wuzongling

exception 不省心,需要检查一下对应设置。 这个我们代码是没有设置OK,所以为了排查我们把response.Exception的值写到了属性里面的Exception,来做比较。看我上面的截图就发现Exception: error-, 但是 grafana上面显示的还是Ok

wuzongling avatar Apr 28 '24 02:04 wuzongling

1 导致 painc 原因如下: 代码中些问题,比如下面这里如果还没赋值,可能会导致 panic。建议将错误处理完善一下,目前 wasm 插件发生 panic 会 trap 且无法捕获,所以需要自己预防一下 panic。 这个我们测试的时候也发现,现在是可能空指针的都做了判断。这里有个问题,在wasm 插件里面做defer 去捕获panic 不知道会不会生效,现在代码是这样写了

panic 不会被捕获,会直接 trap,所以还是要预防一下 panic

TomatoMr avatar Apr 29 '24 10:04 TomatoMr

exception 不省心,需要检查一下对应设置。 这个我们代码是没有设置OK,所以为了排查我们把response.Exception的值写到了属性里面的Exception,来做比较。看我上面的截图就发现Exception: error-, 但是 grafana上面显示的还是Ok

你好,我确认了一下,response_exception 确实是从插件赋值的。所以 grafana 里查到的 response_exception 应该是和 attributes 里的一致,是否 grafana 的 query 有改动呢?

TomatoMr avatar Apr 29 '24 10:04 TomatoMr

@wuzongling ,您好,针对 第三个问题(采集到的body 是缺失的,有的是没有采集到body,有的是采集的json 不全) 请问你们有解决方案吗?

axnhhhh avatar Jul 15 '24 12:07 axnhhhh

近期看此 ISSUE 无新问题,我先关掉了,如果后续遇到其他问题,再重启此 ISSUE

1473371932 avatar Sep 09 '24 02:09 1473371932