简介
Pinpoint是用Java编写的大型分布式系统的APM(应用程序性能管理)工具。 受Dapper的启发,Pinpoint提供了一种解决方案,通过在分布式应用程序中跟踪事务来帮助分析系统的整体结构以及它们中的组件之间的相互关系。
pinpoint是开源在github上的一款APM监控工具,它是用Java编写的,用于大规模分布式系统监控。它对性能的影响最小(只增加约3%资源利用率),安装agent是无侵入式的,只需要在被测试的Tomcat中加上3句话,打下探针,就可以监控整套程序了
Pinpoint-Collector:收集各种性能数据
Pinpoint-Agent:和自己运行的应用关联起来的探针;主要用来采集数据,发送给pinpoint处理
Pinpoint-Web:将收集到的数据显示成WEB网页形式
HBase
Storage:收集到的数据存到HBase中
1. 安装JDK,具体的安装请查找相关文档。
2. https://github.com/naver/pinpoint/releases 下载war包。
pinpoint-agent-1.8.0.tar.gz
pinpoint-collector-1.8.0.war
pinpoint-web-1.8.0.war
3. 安装Hbase, pinpoint收集来的测试数据,主要是存在Hbase数据库的。所以它可以收集大量的 数据,可以进行更加详细的分析。
下载Hbase的包解压后修改Hbase的配置文件:hbase-1.0.3/conf/hbase-env.sh
vi hbase-env.sh
# 在27行左右的位置,修改如下
exportJAVA_HOME=/usr/java/jdk17/
vihbase-site.xml
# 在结尾修改成如下,这里我们指定Hbase本地来存储数据,生产环境将数据建议存入HDFS 中。
hbase.rootdir
file:///data/hbase
4. 启动Hbase
进入到Hbase的目录下/hbase/bin
./start-hbase.sh
# 查看Hbase是否启动成功,如果启动成功的会看到"HMaster"的进程
[root@localhost bin]# jps
12075 Jps
11784 HMaster
5. 初始化Hbase的pinpoint库
./hbase shell /opt/hbase-create.hbase(导入pinpoint提供的Hbase提供的语句,此命令在 Hbase/bin/下执行)
6. 执行完了进入Hbase数据库当中:./hbase shell (也是在Hbase/bin/下去执行)
进入后可以看到Hbase的版本,还有一些相关的信息
2016-11-15 01:55:44,861 WARN [main] util.NativeCodeLoader: Unable to load native- hadoop library foryour platform... using built
in-java classes where applicableHBase Shell; enter 'help' for listof supported commands.
Type "exit" to leave the HBase Shell
Version 1.0.3, rf1e1312f9790a7c40f6a4b5a1bab2ea1dd559890, Tue Jan 1919:26:53 PST 2016
hbase(main):001:0>
# 输入"status 'detailed'"可以查看刚才初始化的表,是否存在
也可以登录web,来查看HBase的数据是否初始化成功
HbaseWeb:http://192.168.245.134:16010/master-status如下图所示:
7. 安装部署pinpoint-collector程序:(此程序运行在Tomcat容器里需要新建一个Tomcat容器来运 行此程序)
将pinpoint-collector.war包放到Tomcat程序的webapp的目录的ROOT目录下。
然后启动Tomcat应用就可以了。(需要将war包解压)
注意:修改Tomcat的端口号,因为在本机上还要部署一个Tomcat应用避免端口重复
如果Tomcat启动失败以为Java_home没有获取到变量,可以修改配置文件
Vim/opt/tomcat/bin/setclasspath.sh(添加下面两行就可以了)
export JAVA_HOME=/opt/software/jdk1.8.0_171
export JRE_HOME=$JAVA_HOME/jre
保存退出重启就可以了。
8. 安装部署pinpoint-web程序:(此程序运行在Tomcat容器里需要新建一个Tomcat容器来运行此 程序)
将pinpoint-web.war包放到Tomcat程序的webapp的目录的ROOT目录下。
然后启动Tomcat应用就可以了。
注意:修改端口,启动步骤同上。
9. 查看部署的pinpoint-web的界面:10.200.10.160:28080
10. 至此主服务器pinpoint-server部署完成。在以一台主机上部署agent来获取数据。
在此服务器上部署一台Tomcat应用来做测试用。
11. 再次服务器上部署agent端来获取数据。pinpoint-agent-1.5.2.tar.gz
将包解压到/opt/software/目录下。
修改配置文件:vimpinpoint.config
profiler.collector.ip=10.200.10.160修改IP地址为主服务器的地址。
12. 修改测试项目下的tomcat启动文件"catalina.sh",修改这个只要是为了监控测试环境的 Tomcat,增加探针。
添加如下三行:
# 第一行是pp-agent的jar包位置
# 第二行是agent的ID,这个ID是唯一的,我是用pp + 今天的日期命名的,只 要与其他的项 目的ID不重复就好了
# 第三行是采集项目的名字,这个名字可以随便取,只要各个项目不重复就好了
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/opt/software/pinpoint-agent-1.5.2 pinpoint-bootstrap-1.5.2.jar"
CATALINA_OPTS="$CATALINA_OPTS-Dpinpoint.agentId=pp20161122"
CATALINA_OPTS="$CATALINA_OPTS-Dpinpoint.applicationName=MyTestPP
13.修改好后启动Tomcat。并在浏览器上访问Tomcat的8080端口。
14. 这时候我们在访问pp-web,可以发现它的下拉框中,多了一个app,如下图:
(上图中里的申请清单MyTestPP就是增加启动Tomcat文件里的探针的项目名称)
15. 点击下拉的项目就可以查看访问的次数。
16. 鼠标点击右上角箭头位置,鼠标左键按住不动,拉框查看。
此时就会出现下图的详细访问的信息。
总结
到这里,整个部署过程就完了。值得要注意的地方:
如果Hbase不是与pp-web, pp-col装在一台机器上,需要安装zookeeper,只要安装就好,确实2181端口启动就好。
如果zookeeper安装在独立机器上,这里需要修改一下pp-colletor 和 pp-web的配置文件pinpoint-collector.properties,pinpoint-web.properties,不然会导致俩个模块启动失败。
发现pinpoint还是有些缺陷,异步的操作监控不到,比如我写了个多线程来发送HttpClient4的请求,但是pinpoint监控不到。但是它介绍又说可以监控到Httpclient4的请求。现在都是分布式系统,异步拿数据再常见不过来,如果监控不到异步的操作,就很鸡肋了。看pp1.6会不会修复这个问题
在pp1.6部署,Hbase中的默认字段有增加,如果没有加上默认字段,取得的数据就会变得相当少了。