前言:由于翻译水平有限,难免有所疏漏。各位读者在本机搭建环境demo时请如有疑惑请联系:tienchen1990@hotmail.com
产品介绍:
Pinpoint是一个开源的APM(Application Performance Management (Monitoring)/ 应用性能管理)工具。基于Google Dapper论文实现,用于基于Java的大规模分布式应用。
由于当前网络资料较少,且大部分为英文,因此在使用总结中难免有纰漏错误。如有疑问请自行参考相关文档。
支持模块:翻译来源(https://github.com/naver/pinpoint)
··JDK 6+
··Tomcat 6/7/8, Jetty 8/9, JBoss EAP 6, Resin 3/4
··Spring, Spring Boot
· Apache HTTP Client 3.x/4.x, JDK HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient
··Thrift Client, Thrift Service, DUBBO PROVIDER, DUBBO CONSUMER
··MySQL, Oracle, MSSQL, CUBRID, DBCP, POSTGRESQL, MARIA
··Arcus, Memcached, Redis, CASSANDRA
··iBATIS, MyBatis
··gson, Jackson, Json Lib
··log4j, Logback
环境要求:
Java环境
本例基于Jdk1.8, Hbase 1.0.3, pinpiont anget 1.6
安装部署:
本实例基于Linux发行版Ubuntu 16.04, 其他诸如Windows/Mac OS等系统安装方法基本相同,请自行查阅。官方spring boot应用需要pp1.6及以上版本支持。虽然我本地测试1.5.2也可以,但请以官方为准。
Jdk安装
去oracle官网下载稳定版jdk-8u144-linux-x64 .tar.gz 解压到/usr/java 目录下
Tar -zxvf jdk-8u144-linux-x64 .tar.gz
mkdir /usr/java
mv 1.8.0_144/ /usr/java
配置环境变量
vi /etc/profile
添加:
export JAVA_HOME=/usr/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
wq保存退出
使之立即生效
source /etc/profile
pinpoint安装
使用git clonehttps://github.com/naver/pinpoint.git下载pinpoint或者将项目作为zip文件下载并解压缩
使用maven安装pinpoint 并运行 mvn install -Dmaven.test.skip=true
git clonehttps://github.com/naver/pinpoint.git
cd pinpoint
mvn install -Dmaven.test.skip=true
HBASE安装
Hbase用来存储pinpoint采集来的数据
在官网下载hbase1.0.3版,解压缩到指定目录
tar -zxvf hbase-1.0.3-bin.tar.gz
mkdir -p /data/service
mv hbase-1.0.3/ /data/service/hbase
修改hbase-env.sh的JAVA_HOME环境变量位置
cd /data/service/hbase/conf/
vi hbase-env.sh
在27行左右的位置,修改如下
export JAVA_HOME=/usr/java/jdk1.8/
修改Hbase的配置信息
vi hbase-site.xml
在结尾修改成如下,这里我们指定Hbase本地来存储数据,生产环境将数据建议存入HDFS中
hbase.rootdir
启动hbase
cd /data/service/hbase/bin
./start-hbase.sh
查看Hbase是否启动成功,如启动成功,会看到HMaster进程
[root@localhost bin]# jps
12075 Jps
11784 HMaster
初始化Hbase的pinpoint库
执行pinpoint提供的Hbase初始化语句,执行过程需要一小会儿时间。
执行脚本见附录1.
./hbase shell/scripts/hbase-create.hbase
执行完毕后,进入Hbase, 可以看到相关版本信息
./hbase shell
然后登录web,查看初始化数据是否成功
http://192.168.205.128:16010/master-status(以自己实际部署的ip地址为准)
安装pinpoint-collector
部署war包
解压Tomcat,将Tomcat重命名移动到指定位置
tar -zxvf apache-tomcat-8.0.36.tar.gz
mv apache-tomcat-8.0.36/ /data/service/pp-col
因为后面要部署较多的tomcat实例,因此建议修改pp-col的端口号,避免冲突。在此我们可以在每个默认端口前面加1
cd /data/service/pp-col/conf/
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
sed -i 's/redirectPort="8443"/redirectPort="18443"/g' server.xml
如果你本机的网卡不是eth0,需要进行如下修改。或者直接用"vi"进去,修改localhost
sed -i "s/localhost/`ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | awk -F: '{print $2}'`/g" server.xml
部署pinpoint-collector.war包
rm -rf /data/service/pp-col/webapps/*
unzip pinpoint-collector-1.6.0.war -d /data/service/pp-col/webapps/ROOT
启动tomcat
cd /data/service/pp-col/bin/
./startup.sh
查看日志,是否启动成功
tail -f ../logs/catalina.out
安装pinpoint-web
部署war包
解压Tomcat,将Tomcat重命名移动到指定位置
tar -zxvf apache-tomcat-8.0.36.tar.gz
mv apache-tomcat-8.0.36/ /data/service/pp-web
因为后面要部署较多的tomcat实例,因此建议修改pp-col的端口号,避免冲突。在此我们可以在每个默认端口前面加2
cd /data/service/pp-web/conf/
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
如果你本机的网卡不是eth0,需要进行如下修改。或者直接用"vi"进去,修改localhost
sed -i "s/localhost/`ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | awk -F: '{print $2}'`/g" server.xml
部署pinpoint-collector.war包
rm -rf /data/service/pp-web/webapps/*
unzip pinpoint-web-1.6.0.war -d /data/service/pp-web/webapps/ROOT
查看war包是否解压成功
ll /data/service/pp-web/webapps/ROOT/WEB-INF/classes/
[root@localhost conf]# ll /data/service/pp-web/webapps/ROOT/WEB-INF/classes/
total 88
-rw-rw-r--. 1 root root 2164 Apr 7 2016 applicationContext-cache.xml
-rw-rw-r--. 1 root root 3649 Apr 7 2016 applicationContext-dao-config.xml
-rw-rw-r--. 1 root root 1490 Apr 7 2016 applicationContext-datasource.xml
-rw-rw-r--. 1 root root 6680 Apr 7 2016 applicationContext-hbase.xml
-rw-rw-r--. 1 root root 1610 Apr 7 2016 applicationContext-websocket.xml
-rw-rw-r--. 1 root root 6576 Apr 7 2016 applicationContext-web.xml
drwxrwxr-x. 2 root root 4096 Apr 7 2016 batch
-rw-rw-r--. 1 root root 106 Apr 7 2016 batch.properties
drwxrwxr-x. 3 root root 4096 Apr 7 2016 com
-rw-rw-r--. 1 root root 682 Apr 7 2016 ehcache.xml
-rw-rw-r--. 1 root root 1001 Apr 7 2016 hbase.properties
-rw-rw-r--. 1 root root 153 Apr 7 2016 jdbc.properties
-rw-rw-r--. 1 root root 3338 Apr 7 2016 log4j.xml
drwxrwxr-x. 2 root root 4096 Apr 7 2016 mapper
-rw-rw-r--. 1 root root 1420 Apr 7 2016 mybatis-config.xml
drwxrwxr-x. 3 root root 4096 Apr 7 2016 org
-rw-rw-r--. 1 root root 630 Apr 7 2016 pinpoint-web.properties
-rw-rw-r--. 1 root root 141 Apr 7 2016 project.properties
-rw-rw-r--. 1 root root 3872 Apr 7 2016 servlet-context.xml
drwxrwxr-x. 2 root root 4096 Apr 7 2016 sql
配置文件解释:
hbase.properties 配置我们pp-web从哪个数据源获取采集数据,这里我们只指定Hbase的zookeeper地址
jdbc.properties pp-web连接自身Mysql数据库的连接认证配置。
pinpoint-web.properties 这里pp-web集群的配置文件
applicationContext-* .xml 这些文件在后续的调优工作中会用到
log4j.xml 日志相关
启动tomcat
cd /data/service/pp-web/bin/
./startup.sh
查看日志,是否启动成功
tail -f ../logs/catalina.out
日志中出现下面这句话,说明已经启动成功了
org.apache.catalina.startup.Catalina.start Server startup in 79531 ms
在浏览器中访问http://192.168.205.128:28080(具体以自己配置的ip为准)
部署pp-agent采集监控数据(探针)
解压Tomcat,将Tomcat重命名移动到指定位置
tar -zxvf apache-tomcat-8.0.36.tar.gz
mv apache-tomcat-8.0.36/ /data/pp-test
配置localhost的外部访问权限
cd /data/pp-test/conf/
sed -i "s/localhost/`ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | awk -F: '{print $2}'`/g" server.xml
解压测试的war包(对于spring boot应用打成的jar包,后面会介绍)
rm -rf /data/pp-test/webapps/*
unzip test.war -d /data/pp-test/webapps/ROOT
配置pp-agent探针
解压pp-agent, 并移动到指定位置
tar -zxvf pinpoint-agent-1.5.2.tar.gz
mv pinpoint-agent-1.5.2 /data/pp-agent
编辑配置文件
cd /data/pp-agent/
vi pinpoint.config
修改IP将其指定到pp-col的ip
profiler.collector.ip=192.168.245.136
修改测试项目下的tomcat启动文件"catalina.sh",修改这个只要是为了监控测试环境的Tomcat,增加探针
cd /data/pp-test/bin
vi catalina.sh
在第20行左右增加如下字段
CATALINA_OPTS="$CATALINA_OPTS-javaagent:/data/pp-agent/pinpoint-bootstrap-1.6.0.jar"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=pp20161122"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=MyTestPP
第一行是pp-agent的jar包的位置
第二行是agent的唯一标识,名称随意,但不可与其他项目重复
第三行是被采集项目的名称,名称随意,但不可与其他项目重复
监控Tomcat
启动测试用的Tomcat的服务器
cd /data/pp-test/bin/
./startup.sh
查看启动日志,确实Tomcat启动
tail -f ../logs/catalina.out
访问测试环境
访问pp-web
192.168.205.128/28080(具体以自己实际配置的ip为准)
在右边的绿色小点点即每一次访问
『注意』要查看每一次访问详情,需要按住左键不动,在绿色小点点上拉一个小框框即可
可以看到每一次的访问都详细的记载在下表中
Spring Boot应用的部署采集
Spring Boot应用探测非常简单,只要想在启动命令中添加相关参数即可。如下
java -jar-javaagent:/data/pp-agent/pinpoint-bootstrap-1.6.0.jar-Dpinpoint.agentId=tuandai-test20170905 -Dpinpoint.applicationName=tuandai-test -jar user-service-core-1.0.0-CLIENTS-SNAPSHOT.jar &
注意点:
Pinpoint主要有三大组件,agent,collector,web。Agent探针部署在应用里面,同时agent中配置了collector系统的ip,从而实现了collector能够搜集监控应用的信息。Collector和ui中同时和hbase建立联系,collector负责将监控到的数据存入hbase中,ui负责读取hbase中的数据并展示。从而实现了对应用的性能管理。
关于hbase的启动有两种方式:standalone和distributed模式。Standalone是hbase使用自带的zookeeper启动,distributed模式是hbase和zookeeper分开启动。本例中采用standalone模式启动。如果要采用distributed模式启动,只需要更改hbase-env.sh和hbase-site.xml配置文件:
Hbase-env.sh指定java环境变量和distributed模式启动
Hbase-site.xml配置文件:
vim hbase-site.xml
指定hbase和zookeeper存放数据的目录,这里zookeeper和hbase在同一服务器,采用127.0.0.1,开启集群模式
FAQ:
Zookeepeer连接异常,请注意是否2182端口被占用。
Hbase如果写入异常,请检查权限
Tomcat应用启动后,浏览器无法访问,请设置防火墙开放端口,或关闭防火墙
参考资料: