Apache Skywalking - 应用程序类的检测

问题描述

我最近开始探索 Skywalking 作为 APM 工具。

我对查看应用层的方法/函数所花费的时间很感兴趣。基本上是 JAVA 应用程序的一种工具。使用 Skywalking,我只得到 3 个具有一个函数和两个 DB 执行函数的跨度(方法)。我尝试添加属性

'plugin.jdkthreading.threading_class_prefixes=${THREADING_CLASS_PREFIX=my.package}'

但这确实有效。我仍然只能在仪表板中看到 API 被命中的 3 个跨度。在 Profile 功能下,我可以获得线程堆栈。但我只对热点方法感兴趣。我在配置中遗漏了什么吗?

我希望对以特定模式开头的类进行检测并在跟踪中捕获。我怎样才能做到这一点?或者我可以从其他任何开源 APM 工具开始吗?

解决方法

使用plugin.jdkthreading.threading_class_prefixes=${THREADING_CLASS_PREFIX:my.package}时,请务必将jdk-threading-plugin文件夹下的optional-plugins移动到plugins文件夹中,因为jdk-threading-plugin默认是禁用的,您需要将其移至 plugins 以启用它。

就热点方法而言,您有两种方法:

@Trace
@Tag(key = "tag1",value = "arg[0]")
@Tag(key = "tag2",value = "arg[1]")
@Tag(key = "username",value = "returnedObj.username")
@Tag(key = "age",value = "returnedObj.age")
public User methodYouWantToTrace(String param1,String param2) {
    // ActiveSpan.setOperationName("Customize your own operation name,if this is an entry span,this would be an endpoint name");
    // ...
}