pinpoint介绍
Pinpoint是用Java / PHP编写的大规模分布式系统的APM(应用程序性能管理)工具。受Dapper的启发,Pinpoint提供了一种解决方案,可通过跟踪跨分布式应用程序的事务来帮助分析系统的整体结构以及其中的组件如何互连。
pinpoint监控特点
能够清晰的展示应用程序拓扑
实时的监控应用程序
获得每个交易的代码级可见性
安装APM代理而无需更改任何代码
对性能的影响最小(资源使用量增加约3%)
安装pinpoint
环境
两台Redhat7.1虚拟机
- 192.168.56.132 server1 监控端,安装Hbase数据库,PinPoint-Collector,以及PinPoint-Web
- 192.168.56.137 server2 被监控端,部署一个测试项目与PinPoint-Agent
所需安装包及版本
软件 | 版本 |
pinpoint-collector | 1.7.3 |
pinpoint-agetn | 1.7.3 |
pinpoint-web | 1.7.3 |
hbase | 1.2.6 |
jdk | 1.8 |
tomcat | 8.0.53 |
server1安装hbase、pinpoint-collector、pinpoint-web
1.安装配置Java环境
虚拟机本身已安装Java8,先卸载掉
[root@server1 ~]# java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
[root@server1 local]# yum remove java -y
将jdk包解压至/usr/local目录下
[root@server1 local]# tar -zxvf /root/Desktop/pinpoint/jdk-8u171-linux-x64.tar.gz -C .
配置Java环境变量
[root@server1 local]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_171
export PATH=$PATH:$JAVA_HOME/bin
[root@server1 local]# source /etc/profile
[root@server1 local]# java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
####
2.安装Hbase
将hbase包解压至/usr/local目录下
[root@server1 local]# pwd
/usr/local
[root@server1 local]# tar -zxvf /root/Desktop/pinpoint/hbase-1.2.6-bin.tar.gz -C .
修改hbase Java环境变量
[root@server1 local]# vim hbase-1.2.6/conf/hbase-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_171
修改hbase配置信息,制定hbase存储数据
[root@server1 local]# vim hbase-1.2.6/conf/hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///data/hbase</value>
</property>
</configuration>
建立/data/hbase目录
[root@server1 local]# mkdir -p /data/hbase
启动hbase
[root@server1 bin]# pwd
/usr/local/hbase-1.2.6/bin
[root@server1 bin]# sh start-hbase.sh
[root@server1 bin]# ./start-hbase.sh
starting master, logging to /usr/local/hbase-1.2.6/bin/../logs/hbase-root-master-server1.example.com.out
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
出现这个报错是因为使用了Java8而Java8不支持这两个参数,将它们注释掉
[root@server1 conf]# vim hbase-env.sh
#Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
#export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
#export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
再次启动hbase
[root@server1 bin]# ./start-hbase.sh
starting master, logging to /usr/local/hbase-1.2.6/bin/../logs/hbase-root-master-server1.example.com.out
使用jps命令可以看到HMAster说明已经启动成功了
[root@server1 bin]# jps
25335 HMaster
25465 Jps
3.初始化Hbase的pinpoint库
[root@server1 bin]# ./hbase shell /root/Desktop/pinpoint/hbase-create.hbase
2020-03-25 21:59:48,654 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
TABLE
AgentEvent
AgentInfo
AgentLifeCycle
AgentStat
AgentStatV2
ApiMetaData
ApplicationIndex
ApplicationMapStatisticsCallee_Ver2
ApplicationMapStatisticsCaller_Ver2
ApplicationMapStatisticsSelf_Ver2
ApplicationTraceIndex
HostApplicationMap_Ver2
SqlMetaData_Ver2
StringMetaData
TraceV2
Traces
16 row(s) in 0.0610 seconds
进入hbase
[root@server1 bin]# ./hbase shell
Version 1.2.6, rUnknown, Mon May 29 02:25:32 CDT 2017
hbase(main):001:0>
也可以通过网页访问IP+16010
4.安装部署pinpoint-collector
安装tomcat,用于部署pinpoin-collector
将tomcat包解压至/usr/local目录下并重命名为tomcat8
[root@server1 local]# tar -zxvf /root/Desktop/pinpoint/apache-tomcat-8.0.53.tar.gz -C .
[root@server1 local]# mv apache-tomcat-8.0.53/ tomcat8
修改tomcat端口避免与pinpoint-web冲突(这里统一将各端口号+10)
[root@server1 local]# cd tomcat8/conf
[root@server1 conf]# vim server.xml
<Server port="8015" shutdown="SHUTDOWN">
<Connector port="8090" protocol="HTTP/1.1"
<Connector port="8019" protocol="AJP/1.3" redirectPort="8453" />
将pinpoint-collector解压至tomcat程序目录下
[root@server1 ROOT]# pwd
/usr/local/tomcat8/webapps/ROOT
[root@server1 ROOT]# cp /root/Desktop/pinpoint/pinpoint-collector-1.7.3.war .
[root@server1 ROOT]# unzip pinpoint-collector-1.7.3.war
启动tomcat
[root@server1 ROOT]# pwd
/usr/local/tomcat8/webapps/ROOT
[root@server1 ROOT]# unzip pinpoint-collector-1.7.3.war ^C
[root@server1 ROOT]# cd /usr/local/tomcat8/bin/
[root@server1 bin]# ./startup.sh
5.安装pinpoint-web
再次解压tomcat并修改端口用于安装pinpoint-web
[root@server1 local]# tar -zxvf /root/Desktop/pinpoint/apache-tomcat-8.0.53.tar.gz -C .
[root@server1 local]# mv apache-tomcat-8.0.53/ tomcat8-1 #与pinpoint-collector所在tomcat进行区分改名为tomcat8-1
修改tomcat8-1端口避免与pinpoint-collector冲突
[root@server1 local]# cd tomcat8-1/conf
[root@server1 conf]# vim server.xml
<Server port="8025" shutdown="SHUTDOWN">
<Connector port="8010" protocol="HTTP/1.1"
<Connector port="8029" protocol="AJP/1.3" redirectPort="8463" />
将pinpoint-web解压至tomcat程序目录下
[root@server1 ROOT]# cp /root/Desktop/pinpoint/pinpoint-web-1.7.3.war .
[root@server1 ROOT]# unzip pinpoint-web-1.7.3.war
启动tomcat8-1
[root@server1 conf]# cd ../bin
[root@server1 bin]# ./startup.sh
通过访问IP:8010访问pinpoint-web来验证是否安装完成
至此pinpoint server端已经安装完成
下来进行agent端安装
server2安装pinpoint-agent及测试
1.安装Java
可参考server1
先卸载系统自带Java
[root@server2 Desktop]# yum remove java* -y
将jdk解压至/usr/local目录下
[root@server2 local]# tar -zxvf /root/Desktop/pinpoint/jdk-8u171-linux-x64.tar.gz -C .
配置环境变量
[root@server2 local]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_171
export PATH=$PATH:$JAVA_HOME/bin
[root@server2 local]# source /etc/profile
[root@server2 local]# whereis java
java: /usr/local/jdk1.8.0_171/bin/java
2.安装Tomcat用于部署测试项目
解压Tomcat至/usr/local/目录下
[root@server2 local]# tar -zxvf /root/Desktop/pinpoint/apache-tomcat-8.0.53.tar.gz -C .
将测试包解压至Tomcat程序目录下
[root@server2 ROOT]# pwd
/usr/local/tomcat8/webapps/ROOT
[root@server2 ROOT]# cp /root/Desktop/pinpoint/test.war .
[root@server2 ROOT]# unzip test.war
访问Tomcat验证
3.安装pinpoint-agent
将pinpoint-agent安装在/usr/local/pinpoint-agent目录下
在/usr/local/目录下创建pinpoint-agent目录并将pinpoint-agent包解压至此目录
[root@server2 pinpoint-agent]# tar -zxvf /root/Desktop/pinpoint/pinpoint-agent-1.7.3.tar.gz -C .
编辑配置文件
将profiler.collector.ip改为server端IP
[root@server2 pinpoint-agent]# vim pinpoint.config
profiler.collector.ip=192.168.56.132 #此IP为server端IP
pinpoint监控tomcat
在Tomcat的catalina.sh文件中添加pinpoint监控探针
三行探针分别表示如下
- pp-agent目录下 pinpoint-bootstrap-1.7.3.jar 的全路径
- agent的唯一ID,与被监控的其他项目不能相同
- 采集项目的名字,pp-web页面中,下拉框选择项目时显示的名字
在tomcat的catalina.sh文件中添加探针
[root@server2 bin]# vim catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/pinpoint-agent/pinpoint-bootstrap-1.7.3.jar" #pinpoint包所在路径
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=pp20200326"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=my-test1" #applicationname是所监控项在pinpoint中展示的名字
启动Tomcat测试
可以看到Java进程中已经加载了pinpoint参数了
[root@server2 bin]# ./startup.sh
[root@server2 bin]# ps -ef |grep java
root 28104 1 76 21:29 pts/0 00:00:05 /usr/local/jdk1.8.0_171/bin/java -Djava.util.logging.config.file=/usr/local/tomcat8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -javaagent:/usr/local/pinpoint-agent/pinpoint-bootstrap-1.7.3.jar -Dpinpoint.agentId=my-tomcat8 -Dpinpoint.applicationName=1.7.3_Test_APP -Dignore.endorsed.dirs= -classpath /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat8 -Dcatalina.home=/usr/local/tomcat8 -Djava.io.tmpdir=/usr/local/tomcat8/temp org.apache.catalina.startup.Bootstrap start
打开pinpoint-web页面检查是否有监控数据,可以看到已经监控到了
可以使用pinpoint监控Tomcat的堆栈信息和CPU等信息
至此,pinpoint监控已经搭建完成,并成功地监控到了tomcat的信息。pinpoint功能强大,不仅能监控tomcat还能监控weblogic、JBoss、wildfly等java容器,想要学习pinpoint的同学赶紧动手吧!