点击上方 IT牧场 ,选择 置顶或者星标技术干货每日送达!
插件作用:自定义增强任意类里的任意方法,从而实现对任意类里任意方法的监控。
使用
举个例子,有一个类,定义如下:
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的绝对路径
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
喜欢就点个"在看"呗^_^