一、前言
1.1、缘由
随着项目扩大和升级,系统架构也从最开始的单机模式进化到分布式架构,各个系统维护起来也比较费劲了,当遇到问题时无法快速定位问题点,这时迫切需要通过某些方法定位和跟踪系统,以及监控系统性能。
实现方法有很多,可以自定义开发相关框架,也可以使用第三方开源的框架。如果是完全自己开发,短期内还无法完成,所以考虑使用第三方框架。
1.2、调研
调研了市面上几个同类框架,有:
通过对比,最终还是选择了Pinpoint,最重要的原因是,对代码的零侵入,运用JavaAgent字节码增强技术,只需要加启动参数即可。
二、初识Pinpoint
2.1、Pinpoint是什么
Pinpoint是基于Java编写的一个APM(APM:Application Performance Management,应用性能管理)工具。受Dapper的启发,Pinpoint提供了一种解决方案,通过在分布式应用程序中跟踪事务来帮助分析系统的整体结构以及它们中的组件之间的相互关系。
2.2、Pinpoint架构
架构说明:
三、搭建环境
3.1、相关工具
3.2、安装JDK
3.3、安装ZooKeeper
3.4、安装HBase
3.4.1、下载
cd /data
wget http://mirror.bit.edu.cn/apache/hbase/hbase-1.2.8/hbase-1.2.8-bin.tar.gz
3.4.2、安装Zip解压工具
yum install unzip
3.4.3、解压HBase
unzip hbase-1.2.8/hbase-1.2.8-bin.tar.gz
mv hbase-1.2.8 hbase
3.4.4、修改配置
打开 /data/hbase/conf/hbase-env.sh
修改为false,使用独立安装的Zookeeper
export HBASE_MANAGES_ZK=false
打开 /data/hbase/conf/hbase-site.xml
添加如下配置
3.4.5、启动HBase
cd /data/hbase/bin
./start-hbase.sh
3.4.6、创建数据表
下载Pinpoint创建表脚本:https://github.com/naver/pinpoint/blob/master/hbase/scripts/hbase-create.hbase
./hbase shell hbase-create.habse
3.5、安装Tomcat
3.5.1、下载
cd /data
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz
unzip apache-tomcat-8.5.34
mv apache-tomcat-8.5.34 tomcat
3.5.2、启动
cd /data/tomcat/bin
./startup.sh
3.6、安装Pinpoint
3.6.1、下载
地址:https://github.com/naver/pinpoint/releases
分别下载:pinpoint-agent-1.8.0.tar.gz、pinpoint-collector-1.8.0.war、pinpoint-web-1.8.0.war
pinpoint-collector-1.8.0.war 重命名为 collector.war
pinpoint-web-1.8.0.war 重命名为 ROOT.war
拷贝到Tomcat的webapps目录下:
由于Tomcat、HBase、Zoookeeper都安装在同一台服务器中,所以Pinpoint无需更改配置文件,保持默认即可。
3.6.2、访问WEB
地址:http://localhost
3.7、配置Agent
3.7.1、配置
解压pinpoint-agent-1.8.0.tar.gz,重命名为 pinpoint-agent,拷贝到Java应用所在服务器中。
修改 pinpoint.config 文件
采集器所在服务器IP地址
profiler.collector.ip=172.19.1.2
设置应用程序类型为 Spring Boot
profiler.applicationservertype=SPRING_BOOT
3.7.2、启动应用
java -jar -javaagent:/pinpoint-agent/pinpoint-bootstrap-1.8.0.jar -Dpinpoint.agentId=user-service -Dpinpoint.applicationName=user-service user-service.jar
-javaagent:pinpoint探针路径
-Dpinpoint.agentId:探针ID
-Dpinpoint.applicationName:应用名称
四、预览
五、其它