Pinpoint是一个开源的 APM (Application Performance Management/应用性能管理)工具,用于基于java的大规模分布式系统,基于Google Dapper论文。
架构组成
Pinpoint主要由四部分组成:
Pinpoint-Collector:数据收集模块,接收Agent发送过来的监控数据,并存储到HBase数据库
Pinpoint-Agent:用于收集应用端监控数据,无侵入式,只需要在启动命令中加入部分参数即可
Pinpoint-Web:UI,展示性能数据
HBase Storage:监控展示模块,展示系统调用关系、调用详情、应用状态等,并支持报警等功能
优点:
1、分布式事务跟踪,跟踪跨分布式应用的消息
2、自动检测应用拓扑,帮助你搞清楚应用的架构
3、水平扩展以便支持大规模服务器集群
4、提供代码级别的可见性以便轻松定位失败点和瓶颈
5、使用字节码增强技术,添加新功能而无需修改代码
功能:
1、故障快速定位
2、各个调用环节的性能分析
3、数据分析等
4、生成服务调用拓扑图
软件下载地址:
Pinpoint GitHub 地址:
https://github.com/naver/pinpoint
https://github.com/pinpoint-apm/pinpoint/releases/tag/1.8.5
hbbase下载地址:
http://archive.apache.org/dist/hbase/
初始化pinpoint库
下载脚本:https://github.com/naver/pinpoint/blob/master/hbase/scripts/hbase-create.hbase
https://raw.githubusercontent.com/pinpoint-apm/pinpoint/master/hbase/scripts/hbase-create.hbase
部署软件版本信息:
jdk1.8.0_172
pinpoint-agent-1.8.5
pinpoint-collector-1.8.5
pinpoint-web-1.8.5
hbase-1.2.12
部署主机信息:
ip地址 | 角色 | 操作系统 | 部署服务 |
10.0.10.201 | 服务端 | CentOS 7.8 | jdk collector web hbase tomcat8 |
10.0.10.46 | agent端 | CentOS 7.8 | jdk agent spring-cloud service |
10.0.10.87 | agent端 | CentOS 7.8 | jdk tomcat java service |
环境安装:
1、安装JDK
解压自行安装,环境变量配置如下:
# java config export JAVA_HOME=/usr/local/jdk1.8.0_172 export PATH=${JAVA_HOME}/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
2、安装HBase
- 将Hbase放到指定目录,我这里下载的是1.2.12版本的。
# tar -zxvf hbase-1.2.12-bin.tar.gz -C /usr/local/ # # ln -s hbase-1.2.12 hbase
2.修改配置信息
修改hbase-env.sh文件,#加入JAVA_HOME
export JAVA_HOME=/usr/local/jdk1.8.0_172
注释掉如下两行,去除告警信息:
#export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m" #export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"
3.修改hbase-site.xml文件.
# vi hbase-site.xml <configuration> <property> <name>hbase.rootdir</name> <value>file:///usr/local/hbase/data</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/usr/local/hbase/zookeper</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> <!-- false是单机模式,true是分布式模式 --> <property> <name>hbase.cluster.distributed</name> <value>false</value> </property> </configuration>
4.启动HBase,并查看服务及关联端口
bin]# ./start-hbase.sh # jps 15482 HMaster ]# netstat -anpt |grep 15482 tcp6 0 0 :::2181 :::* LISTEN 15482/java tcp6 0 0 :::16010 :::* LISTEN 15482/java tcp6 0 0 :::40012 :::* LISTEN 15482/java tcp6 0 0 10.0.10.201:44621 :::* LISTEN 15482/java tcp6 0 0 10.0.10.201:43408 :::* LISTEN 15482/java tcp6 0 0 127.0.0.1:36292 127.0.0.1:2181 ESTABLISHED 15482/java tcp6 0 0 ::1:35938 ::1:2181 ESTABLISHED 15482/java tcp6 0 0 127.0.0.1:36296 127.0.0.1:2181 ESTABLISHED 15482/java tcp6 0 0 10.0.10.201:45708 10.0.10.201:43408 ESTABLISHED 15482/java tcp6 0 0 10.0.10.201:43408 10.0.10.201:45706 ESTABLISHED 15482/java tcp6 0 0 10.0.10.201:44621 10.0.10.201:41087 ESTABLISHED 15482/java tcp6 0 0 10.0.10.201:43408 10.0.10.201:45708 ESTABLISHED 15482/java tcp6 0 0 127.0.0.1:2181 127.0.0.1:36292 ESTABLISHED 15482/java tcp6 0 0 ::1:2181 ::1:35938 ESTABLISHED 15482/java tcp6 0 0 127.0.0.1:2181 127.0.0.1:36300 ESTABLISHED 15482/java tcp6 0 0 127.0.0.1:2181 127.0.0.1:36290 ESTABLISHED 15482/java tcp6 0 0 ::1:2181 ::1:35934 ESTABLISHED 15482/java tcp6 0 0 127.0.0.1:2181 127.0.0.1:36296 ESTABLISHED 15482/java tcp6 0 0 10.0.10.201:41087 10.0.10.201:44621 ESTABLISHED 15482/java
5.初始化pinpoint库,并导入数据脚本
hbase]# wget https://raw.githubusercontent.com/pinpoint-apm/pinpoint/master/hbase/scripts/hbase-create.hbase #执行数据脚本 hbase]# ./bin/hbase shell hbase-create.hbase # 执行完了以后,进入Hbase ./hbase shell #进入后可以看到Hbase的版本,还有一些相关的信息 [root@hztestdb01 bin]# ./hbase shell 2021-02-26 10:55:55,074 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 1.2.12, r91d5ec4c4dcd10ceec984c6e663ea82acf353995, Sat Apr 6 15:27:28 CDT 2019 hbase(main):003:0> list
登录Hbase web,来查看HBase的数据是否初始化成功.
3、部署pinpoint-collector服务
部署war包(将war包放到tomcat webapps目录),修改server.xml配置.
#替换端口号 sed -i 's/port="8005"/port="18005"/g' server.xml sed -i 's/port="8080"/port="18080"/g' server.xml sed -i 's/port="8443"/port="18443"/g' server.xml sed -i 's/port="8009"/port="18009"/g' server.xml #启动tomcat服务,并检查日志是否正常 # ./startup.sh
4、部署pinpoint-web
部署war包(以webapps目录部署),修改server.xml配置
部署pinpoint-web 部署war包(以webapps目录部署),修改server.xml配置 sed -i 's/port="8005"/port="28005"/g' server.xml sed -i 's/port="8080"/port="28080"/g' server.xml sed -i 's/port="8443"/port="28443"/g' server.xml sed -i 's/port="8009"/port="28009"/g' server.xml sed -i 's/redirectPort="8443"/redirectPort="28443"/g' server.xml 启动tomcat服务,并检查日志是否正常 # ./startup.sh
然后可以在浏览器中:http://10.0.10.201:28080/pp-web/
5、部署pinpoint-agent采集监控数据
首先将pinpoint-agent-1.8.5.tar.gz传入到客户端服务器10.0.10.46/87并解压至/usr/local/pinpoint-agent目录中
配置pinpoint-agent采集器
pinpoint-agent]# vi pinpoint.config #主要修改IP,只需要指定到安装pinpoint-collector的IP就行了,安装pp-col启动后,自动就开启了9994,9995,9996的端口了. profiler.collector.ip=10.0.10.201
6、tomcat方式部署的java应用的监控,只需要在配置文件添加如下几行重启服务即可.
# 修改测试项目下的tomcat启动文件"catalina.sh",修改这个只要是为了监控测试环境的Tomcat,增加探针 bin]# vim catalina.sh CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/pinpoint-agent/pinpoint-bootstrap-1.8.5.jar" CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=AP-TOMCAT" CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=AP-TEST" # 第一行是pp-agent的jar包位置 # 第二行是agent的ID,这个ID是唯一的,我是用pp + 日期命名的,只要与其他的项目的ID不重复就好了 # 第三行是采集项目的名字,这个名字可以随便取,只要各个项目不重复就好了
7、springboot 包部署 如果是jar包部署,直接在启动命令加启动参数:
nohup $jdk_path/bin/java $jvm -Duser.timezone=GMT+08 -javaagent:/usr/local/pinpoint-agent/pinpoint-bootstrap-1.8.5.jar -Dpinpoint.agentId=应用唯一ID -Dpinpoint.applicationName=应用名称 -jar app-boot.jar > app-boot.log 2>&1 &
在启动jar服务时,添加如下两行即可.
刷新页面并展示信息如下:
微服务展示
tomcat展示:
调用链路展示:
weblogic 部署的java应用监控:
链接文档:https://github.com/pinpoint-apm/pinpoint/tree/master/plugins/weblogic
SAVE_JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:/usr/local/pinpoint-agent/pinpoint-bootstrap-1.8.5.jar -Dpinpoint.agentId=weblogic-112 -Dpinpoint.applicationName=test-weblogic"
参考文档:
https://blog.csdn.net/zdshare/article/details/90640676
https://cloud.tencent.com/developer/article/1521571
https://www.jb51.net/article/171795.htm