GuanceCloud / dd-trace-java

Datadog APM client for Java
https://docs.datadoghq.com/tracing/languages/java
Apache License 2.0
9 stars 3 forks source link

获取特定函数的入参信息 #26

Closed lrwh closed 1 year ago

lrwh commented 1 year ago

特定函数 主要是指业务指定的函数,来获取对应的入参情况。

特定函数 需要通过特定的参数进行定义声明,目前 ddtrace 提供了两种方式对特定的函数进行 trace 声明

  1. 通过启动参数标记 -Ddd.trace.methods ,参考文档 类或方法注入Trace
  2. 通过引入 SDK 的方式,使用 @Trace 进行标记 ,参考文档 函数级别埋点

通过上述方式进行声明后,会将对应的方法标记为 trace,同时生成对应的 Span 信息。而这种方式生成的 Span 信息比较单调,仅仅表现为对其方法进行调用和时间计数。

因此需要对其进行优化处理,并完成诉求:需要获取此类函数的入参信息,根据业务必要进行提取分析操作。

lrwh commented 1 year ago

目前通过跟踪源码分析,最终定位可以根据 datadog.trace.instrumentation.trace_annotation.TraceAdvice 来完成以上操作。

lrwh commented 1 year ago

由于无法对数据类型进行转化以及 json 序列化需要额外的依赖和开销,所以目前只是针对参数值做了toString()处理,且对于toString()结果做了二次处理,字段值长度不能超过 1024个字符,对于超过部分做了丢弃操作。