Pinpoint是一个开源的 APM (Application Performance Management/应用性能管理)工具,用于基于java的大规模分布式系统。 仿照Google Dapper,Pinpoint通过跟踪分布式应用之间的调用来提供解决方案,以帮助分析系统的总体结构和内部模块之间如何相互联系。
Pinpoint-Collector:收集各种性能数据
Pinpoint-Agent:和自己运行的应用关联起来的探针
Pinpoint-Web:将收集到的数据显示成WEB网页形式
HBase Storage:收集到的数据存到HBase中
安装步骤
一.安装 JDK1.8
略
二.安装Zookeeper
- 下载Zookeeper并解压
cd /usr/local/src
curl -OL http://files.saas.hand-china.com/hitoa/1.0.0/zookeeper-3.4.9.tar.gz
tar -xzvf zookeeper-3.4.9.tar.gz
mv zookeeper-3.4.9 /usr/local/ - 配置Zookeeper
cd /usr/local/zookeeper-3.4.9/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
添加以下内容:
tickTime=20000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-3.4.9/data
clientPort=2181
MaxSessionTimeout=200000
注解 生产环境中建议搭Zookeeper集群,这里暂时只搭单节点。
- 启动Zookeeper
cd /usr/local/zookeeper-3.4.9/bin
./zkServer.sh start
输出以下内容表示Zookeeper启动成功:
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
ps -ef|grep zookeeper
Zookeeper启动成功后,绑定到2181端口提供服务。
三.安装HBase
- 下载Hbase并解压
cd /usr/local/
curl -OL http://files.saas.hand-china.com/hitoa/1.0.0/hbase-1.2.4-bin.tar.gz
tar -xzvf hbase-1.2.4-bin.tar.gz - 配置HBase环境变量
vim /etc/profile
在/etc/profile
文件末尾追加以下内容:
#HBASE_HOME
export HBASE_HOME=/usr/local/hbase-1.2.4
使配置生效:
source /etc/profile
- 配置HBase配置文件
cd /usr/local/hbase-1.2.4/conf
vim hbase-site.xml
hbase-site.xml中添加以下内容:
hbase.rootdir
file:/usr/local/hbase-1.2.4/data
hbase.cluster.distributed
true
hbase.regionserver.handler.count
20
hbase.zookeeper.quorum
localhost
hbase.zookeeper.property.clientPort
2181
zookeeper.session.timeout
200000
注意:这里不是直接加在文件末尾处,直接加需要删除本来带的
注:HBase支持HDFS存储,但是需要安装Hadoop等组件,这里为了方便,暂时先不使用HDFS。另外,生产环境建议搭HBase集群,这里暂时只搭HBase单节点。
- 修改hbase-env.sh:
vim hbase-env.sh
添加配置行:
export HBASE_MANAGES_ZK=false
使得HBase不使用内置Zookeeper,而使用前面安装好的外置Zookeeper。
- 启动HBase (jdk 1.7+安装略)
cd /usr/local/hbase-1.2.4/bin
./start-hbase.sh
HBase日志文件位于 /usr/local/hbase-1.2.4/logs ,可以查看HBase启动日志。
tail -f /usr/local/hbase-1.2.4/logs/hbase-root-1-regionserver-VM_0_12_centos.out
cat /usr/local/hbase-1.2.4/logs/hbase-root-1-regionserver-VM_0_12_centos.log - 查看HBase状态
HBase启动成功以后,可以通过浏览器访问 http://ip:16010 查看HBase有关信息,我这里是访问
http://129.211.24.177:16010/
注解
如果发现成功启动了HBase,但是却无法在浏览器中访问 http://ip:16010,这是因为CentOS7默认开启了防火墙,可以先将防火墙关掉 systemctl stop firewalld.service,再尝试访问。
四. 初始化Pinpoint表结构
- Pinpoint采用HBase作为底层存储,需要先在HBase中初始化表结构。
首先确保HBase是正常启动状态,然后:
cd /usr/local
curl -OL http://files.saas.hand-china.com/hitoa/1.0.0/pinpoint-hbase-create.hbase
./hbase-1.2.4/bin/hbase shell ./pinpoint-hbase-create.hbase
初始化成功以后,会在HBase中创建16张表。
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.0430 seconds
五.安装Pinpoint Collector
- 下载Pinpoint Collector并解压
Pinpoint Collector、Pinpoint Web的部署均需要Tomcat,所以先下载Tomcat。
cd /usr/local
curl -OL http://files.saas.hand-china.com/hitoa/1.0.0/apache-tomcat-8.5.14.zip
unzip apache-tomcat-8.5.14.zip
mv apache-tomcat-8.5.14 pinpoint-collector-1.6.1
curl -OL http://files.saas.hand-china.com/hitoa/1.0.0/pinpoint-collector-1.6.1.war
cd /usr/local/pinpoint-collector-1.6.1/webapps
rm -rf *
unzip /usr/local/pinpoint-collector-1.6.1.war -d ROOT
- 修改配置文件
由于我这里HITOA的全部组件都部署在同一台机器上,为了避免端口冲突,需要对Tomcat的端口做一些设置,可以直接下载已经设置好的配置文件:
cd /usr/local/pinpoint-collector-1.6.1/conf
curl http://files.saas.hand-china.com/hitoa/1.0.0/pinpoint-collector-server.xml -o server.xml
- 启动Pinpoint Collector
cd /usr/local/pinpoint-collector-1.6.1/bin
chmod +x catalina.sh shutdown.sh startup.sh
./startup.sh
注解
启动Pinpoint Collector时请确保HBase、Zookeeper都是正常启动的,否则会报错Connection Refused。
-
查看Pinpoint Collector日志
cd /usr/local/pinpoint-collector-1.6.1/logs
tail -f catalina.out
catalina.out 中有详细的Pinpoint Collector日志,如果输出如下内容,则表明启动成功:
另外,可以随时通过查看Pinpoint Collector日志来了解Pinpoint Collector运行情况 。
六.安装Pinpoint Web
- 下载Pinpoint Web并解压
同安装Pinpoint Collector一样,Pinpoint Web部署一样需要Tomcat,由于前面已经下载了tomcat,这里不再下载:
cd /usr/local
unzip apache-tomcat-8.5.14.zip
mv apache-tomcat-8.5.14 pinpoint-web-1.6.1
curl -OL http://files.saas.hand-china.com/hitoa/1.0.0/pinpoint-web-1.6.1.war
cd /usr/local/pinpoint-web-1.6.1/webapps
rm -rf *
unzip /usr/local/pinpoint-web-1.6.1.war -d ROOT
- 修改配置文件
cd /usr/local/pinpoint-web-1.6.1/webapps/ROOT/WEB-INF/classes
vim pinpoint-web.properties
由于当前的Pinpoint Web并不是集群部署,所以将
cluster.enable=true
改为
cluster.enable=false
为了避免端口冲突,修改tomcat的一些设置,可以直接下载已经设置好的配置文件:
cd /usr/local/pinpoint-web-1.6.1/conf
curl http://files.saas.hand-china.com/hitoa/1.0.0/pinpoint-web-server.xml -o server.xml - 启动Pinpoint Web
cd /usr/local/pinpoint-web-1.6.1/bin
chmod +x catalina.sh shutdown.sh startup.sh
./startup.sh -
查看Pinpoint Web日志
cd /usr/local/pinpoint-web-1.6.1/logs
tail -f catalina.out
catalina.out 中有详细的Pinpoint Web日志,如果输出如下内容,则表明启动成功:
- 访问Pinpoint Web
Pinpoint Web启动成功以后,浏览器访问 http://ip:19080/,即可访问Pinpoint Web界面。
http://129.211.24.177:19080/
注解
Pinpoint Web原来的默认端口并不是19080,为了避免冲突,在 pinpoint-web-server.xml 文件中做了修改。
Pinpoint Web内置了告警功能,需要安装MySQL,本快速安装文档暂时不提供此部分内容,后续手册中详细讲解Pinpoint Web告警功能的配置、开发及使用。
至此,“调用链路分析平台”的服务端基本搭建完成,后面需要在监控的目标应用上安装Pinpoint Agent,自动采集调用链路数据发送至Pinpoint Collector,并在Pinpoint Web中展现。
七. 安装Pinpoint Agent
Pinpoint采用无侵入式的方式跟踪应用的请求调用链路,需要设置下目标应用的JVM参数即可。
这里以监控core
为例:
- 下载Pinpoint Agent并解压
cd /usr/local
mkdir pinpoint-agent-1.6.1
cd pinpoint-agent-1.6.1/
curl -OL http://files.saas.hand-china.com/hitoa/1.0.0/pinpoint-agent-1.6.1.tar.gz
tar -xzvf pinpoint-agent-1.6.1.tar.gz
- 配置Pinpoint Agent
Pinpoint Agent的配置文件是/usr/local/pinpoint-agent-1.6.1/pinpoint.config
,修改:
vim /usr/local/pinpoint-agent-1.6.1/pinpoint.config
Pinpoint Agent默认的配置文件是适用于监控OpenJDK的应用,对于Oracle JDK的应用需要
添加:
profiler.jvm.vendor.name=Oracle
另外,默认的采样率(Sampling Rate)是5%,为了使采集数据更完整,暂时设置为100%,修改以下配置:
profiler.sampling.rate=1
配置collector ip:
profiler.collector.ip=129.211.24.177
//如果collector装在本机则不需要修改这个ip地址 - 配置JVM参数
Pinpoint Web和Agent关联
因为我打算监控Pinpoint Web本身,而Pinpoint Web是部署在tomcat中,所以修改Pinpoint Web的JVM参数只需要修改 bin/catalina.sh 即可。
注意:监控哪个tomcat就修改哪个tomcat的catalina.sh
vim /usr/local/pinpoint-web-1.6.1/bin/catalina.sh
或者自己所要监控的tomcat应用:
vim /usr/local/apache-tomcat-8.5.14/bin/catalina.sh
在 catalina.sh 头部添加以下内容:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/pinpoint-agent-1.6.1/pinpoint-bootstrap-1.6.1.jar"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=core"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=core01"
其中,第一个路径指向pinpoint-bootstrap的jar包位置,第二个pinpoint.applicationName表示监控的目标应用的名称,第三 个pinpoint.agentId表示监控目标应用的ID,其中pinpoint.applicationName可以不唯一,pinpoint.agentId要求唯一,如果 pinpoint.applicationName相同但pinpoint.agentId不同,则表示的是同一个应用的集群。
- Spring boot应用的部署:
nohup java -javaagent: /usr/localpinpoint-agent-1.6.1/pinpoint-bootstrap-1.6.1.jar-Dpinpoint.applicationName=hap -Dpinpoint.agentId=hap01 –jar myapp.jar > log.log &
八.启动目标应用
配置完JVM参数以后,要启动下目标应用以使得生效。
由于我这里监控的是Pinpoint Web本身,前面已经启动过,这里先停止,再重启:
cd /usr/local/pinpoint-web-1.6.1/bin
./shutdown.sh
./startup.sh
重启成功以后,访问Pinpoint Web:http://ip:19080 ,如果能在应用列表中看到 hap,则说明监控成功。
如下图所示:
鼠标点击右上角箭头位置,鼠标左键按住不动,拉框查看。