Closed lrwh closed 1 year ago
特定函数 主要是指业务指定的函数,来获取对应的入参情况。
特定函数 需要通过特定的参数进行定义声明,目前 ddtrace 提供了两种方式对特定的函数进行 trace 声明
通过启动参数标记 -Ddd.trace.methods ,参考文档 类或方法注入Trace 通过引入 SDK 的方式,使用 @Trace 进行标记 ,参考文档 函数级别埋点
-Ddd.trace.methods
@Trace
通过上述方式进行声明后,会将对应的方法标记为 trace,同时生成对应的 Span 信息。而这种方式生成的 Span 信息比较单调,仅仅表现为对其方法进行调用和时间计数。
因此需要对其进行优化处理,并完成诉求:需要获取此类函数的入参信息,根据业务必要进行提取分析操作。
目前通过跟踪源码分析,最终定位可以根据 datadog.trace.instrumentation.trace_annotation.TraceAdvice 来完成以上操作。
datadog.trace.instrumentation.trace_annotation.TraceAdvice
由于无法对数据类型进行转化以及 json 序列化需要额外的依赖和开销,所以目前只是针对参数值做了toString()处理,且对于toString()结果做了二次处理,字段值长度不能超过 1024个字符,对于超过部分做了丢弃操作。
toString()
1024
特定函数 主要是指业务指定的函数,来获取对应的入参情况。
特定函数 需要通过特定的参数进行定义声明,目前 ddtrace 提供了两种方式对特定的函数进行 trace 声明
通过上述方式进行声明后,会将对应的方法标记为 trace,同时生成对应的 Span 信息。而这种方式生成的 Span 信息比较单调,仅仅表现为对其方法进行调用和时间计数。
因此需要对其进行优化处理,并完成诉求:需要获取此类函数的入参信息,根据业务必要进行提取分析操作。