Skywalking:代码行级监控 apm-customize-enhance-plugin插件使用教程

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

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

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 ,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<enhanced>
    <class class_name="test.apache.skywalking.testcase.customize.service.TestService1">
        <method method="staticMethod(java.lang.String,int.class,java.util.Map,java.util.List,[Ljava.lang.Object;)" operation_name="/is_static_method_args" static="true">
            <operation_name_suffix>arg[0]</operation_name_suffix>
            <operation_name_suffix>arg[1]</operation_name_suffix>
            <operation_name_suffix>arg[3].[0]</operation_name_suffix>
            <tag key="tag_1">arg[2].['k1']</tag>
            <tag key="tag_2">arg[4].[1]</tag>
            <log key="log_1">arg[4].[2]</log>
        </method>
    </class>
</enhanced>

规则说明:

配置说明
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的绝对路径
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值