APM工具使用记录

563 阅读2分钟

性能测试时发现系统偶尔慢,需要使用工具来判断问题原因,前前后后使用三个工具,记录一下使用过程。

系统环境:

EulerOS release 2.0 (SP8)
Linux ecs-5222 4.19.36-vhulk1907.1.0.h475.eulerosv2r8.aarch64 #1 SMP Mon Jul 22 00:00:00 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux

1. 阿里Arthas

使用profile功能,系统报错,不支持arm

2. skywalking 6.6

运行一段时间,UI响应非常慢,且系统占用CPU非常,看配置发现存储为默认H2(内存);改为文件方式,再运行一段时间还是非常慢;最后改为ElasticSearch 6.3.2版本。

但skywalking有个问题,trace中spring service、jdbc相关内容都没有,只有servlet信息。

由于后续自定义pp插件及编译麻烦,又回来研究了skywalking,发现spring service需要使用option中插件拷贝到plugin目录下才行;而且自定义插件也很方便

但下载源码编译报错。

[ERROR] ../Downloads/skywalking-6.6.0/apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/trace/component/command/TraceIgnoreCommand.java:[39,48] 找不到符号 [ERROR] 符号: 变量 KeyStringValuePair [ERROR] 位置: 类 org.apache.skywalking.apm.network.trace.component.command.TraceIgnoreCommand [ERROR] ../Downloads/skywalking-6.6.0/apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/trace/component/command/ServiceResetCommand.java:[46,20] 找不到符号 [ERROR] 符号: 类 KeyStringValuePair [ERROR] 位置: 类 org.apache.skywalking.apm.network.trace.component.command.ServiceResetCommand [ERROR] ../Downloads/skywalking-6.6.0/apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/trace/component/command/ServiceResetCommand.java:[48,20] 找不到符号 [ERROR] 符号: 类 KeyStringValuePair [ERROR] 位置: 类 org.apache.skywalking.apm.network.trace.component.command.ServiceResetCommand [ERROR] ../Downloads/skywalking-6.6.0/apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/trace/component/command/EndpointResetCommand.java:[40,27] 程序包KeyStringValuePair不存在

后续再看看如何解决

3. pinpoint-1.8.5

下载速度很慢,后来通过香港的服务器进行下载,然后传到国内,速度很快

pp安装有点复杂,按照 www.bbsmax.com/A/gGdX3oL15… 进行安装的。

由于本机上已经安装了一个zookeeper,启动hbase时存在冲突,就将端口改为2182;都启动完成后,agent经常报超时,后来发现collector和web上的zookeeper端口也需要修改。

pinpoint的trace没有jdbc信息,另外没法和应用关联起来。

jdbc信息没有的原因可能不是apm的问题,应该是采用了gaussdbT的问题。

如是准备开发插件,首先将trace中增加应用信息。

下载pp源码后,发现编译有点变态,只好在服务器上搭建一个环境,将jdk6、jdk7、jdk8、jdk9都下载下来,然后编译通过,编译比较慢。

插件参考:blog.csdn.net/boling_cava…

在本机进行插件开发,然后将代码传到服务器上进行编译,发现只能全部编译。

然后将编译好的jar传到web、collector、agent目录,启动tomat pp-web报错,找不到Caused by: java.lang.ClassNotFoundException: com.navercorp.pinpoint.bootstrap.plugin.ProfilerPlugin;就将web下到插件删除;重启启动应用,发现trace可以看到自定义插件拦截的方法,但没有参数信息;检查代码、官方文章、百度各类文章,发现也没有啥特殊,后来想想将pinpoint-bootstrap-core的jar拷贝到web下,并将i 定义插件jar也拷贝进去,重启,竟然可以看到了。。。

pinpoint缺少根据traceid 查找的功能,但有通过log4j等日志工具将traceID记录下来的功能