Skywalking系列博客5-apm-customize-enhance-plugin插件使用教程

点击上方 IT牧场 ,选择 置顶或者星标技术干货每日送达!

Skywalking系列博客5-apm-customize-enhance-plugin插件使用教程_第1张图片

插件作用:自定义增强任意类里的任意方法,从而实现对任意类里任意方法的监控。

使用

举个例子,有一个类,定义如下:

public class TestService1 {
    public static void staticMethod(String str0, int count, Map m, List l, Object[] os) {
      // 业务逻辑
    }
  ...
}

那么,想要对该方法进行监控,则可如下操作:

移动jar包

将 optional-plugins/apm-customize-enhance-plugin-6.5.0.jar 移动到 plugins 目录

编写增强规则

创建一个文件,名为例如 customize_enhance.xml ,内容如下:



    
        
            arg[0]
            arg[1]
            arg[3].[0]
            arg[2].['k1']
            arg[4].[1]
            arg[4].[2]
        
    

规则说明:

配置 说明
class_name 要被增强的类
method 类的拦截器方法
operation_name 如果进行了配置,将用它替代默认的operation_name
operation_name_suffix 表示在operation_name后添加动态数据
static 方法是否为静态方法
tag 将在local span中添加一个tag。key的值需要在XML节点上表示。
log 将在local span中添加一个log。key的值需要在XML节点上表示。
arg[x] 表示输入的参数值。比如args[0]表示第一个参数。
.[x] 当正在被解析的对象是Array或List,你可以用这个表达式得到对应index上的对象。
.['key'] 当正在被解析的对象是Map, 你可以用这个表达式得到map的key。

特别需要注意的是method的写法:

基本类型: 基本类型.class ,例如: int.class

非基本类型: 类的完全限定名称 ,例如:java.lang.String

数组:可以写个数组打印一下,就知道格式了,例如:

public static void main(String[] args) {
        String[] s = new String[]{};
        System.out.println(s);


        int [] x = new int []{};
        System.out.println(x);
    }

结果:

[Ljava.lang.String;@1b0375b3
[I@2f7c7260

因此,对于String类型的数组,就可以写成 [Ljava.lang.String; ;对于int类型的数组,则写成 [I 。

配置

agent.config中添加配置:

plugin.customize.enhance_file=customize_enhance.xml的绝对路径

Bonus ^_^

apm-trace-ignore-plugin

作用:过滤掉希望被忽略的endpoint使用说明:http://www.itmuch.com/books/skywalking/setup/service-agent/java-agent/agent-optional-plugins/trace-ignore-plugin.html[1]

References

[1]http://www.itmuch.com/books/skywalking/setup/service-agent/java-agent/agent-optional-plugins/trace-ignore-plugin.html

喜欢就点个"在看"呗^_^

Skywalking系列博客5-apm-customize-enhance-plugin插件使用教程_第2张图片

你可能感兴趣的:(Skywalking系列博客5-apm-customize-enhance-plugin插件使用教程)