0.0 前言html
国内的APM行业这两年刚刚起步,可是在国外却比较成熟了,而且因为这两年人力成本的快速提升,国内外涌现了几家很是不错的APM企业,例如APPdynamic,Dynamic,NewRelic等。java
咱们这里不考虑商业化的实现方案,如何可以提供一种免费的开源实现方案呢?linux
下面给你们介绍一个开源的 APM (Application Performance Management/应用性能管理)工具 - Pinpoint。一个分布式事务跟踪系统的平台,思路基于google Dapper,用于基于java的大规模分布式系统,经过跟踪分布式应用之间的调用来提供解决方案,以帮助分析系统的整体结构和内部模块之间如何相互联系。Pinpoint的目标就是为n(n>=1)层架构开发新的跟踪平台,为n层架构的系统提供解决方案。git
0.1 Pinpoint的特色以下:github
0.2 Pinpoint 架构web
1.0 环境准备sql
为了省事能够直接就到这里(https://get.k8scn.org/packages/others/pinpoint/)下载所需安装包,统一放置在 /root/pp/
目录下面。shell
apache-tomcat-8.0.36.tar.gz hbase-1.0.3-bin.tar.gz jdk-8u92-linux-x64.rpm pinpoint-agent-1.5.2.tar.gz pinpoint-collector-1.5.2.war pinpoint-web-1.5.2.war pp-collector pp-web zookeeper-3.4.6-10.el6.x86_64.rpm
1.1 部署环境约定数据库
192.168.56.11 CentOS6(jdk1.8.0) Pinpoint-collector, Pinpoint-web, zookeeper # 下面咱们将简称pp-collector&pp-web 192.168.56.12 CentOS6(jdk1.8.0) Hbase 192.168.56.13 CentOS6(jdk1.8.0) Pinpoint-agent(demo应用)
1.2 系统环境说明apache
$ /etc/init.d/iptables stop $ setenforce 0
这里咱们为了避免影响模块之间的相互通讯,暂时先把几台设备的iptables都关闭了。
2.0 开始部署 咱们采用rpm方式安装jdk,这里就略过安装过程了,主要说一下Tomcat 和Bbase的安装和配置
2.1 部署和初始化 Hbase
$ vim ~/.bashrc # Java Environment Variables export JAVA_HOME=/usr/java/default export PATH=$PATH:$JAVA_HOME/bin $ source ~/.bashrc $ tar xf /root/pp/hbase-1.0.3-bin.tar.gz /usr/local/ $ cd /usr/local/hbase-1.0.3/conf $ vim hbase-env.sh export JAVA_HOME=/usr/java/default/ # 指到本身对应的JAVA_HOME,默认使用java6 $ vim hbase-site.xml <configuration> <property> <name>hbase.rootdir</name> <value>file:///data/hbase</value> # 这里咱们指定Hbase本地来存储数据,生产环境将数据建议存入HDFS中。 </property> </configuration> $ ../bin/start-hbase.sh // 启动 Hbase
注意: 这里说明一下,咱们是最简方式启动的Hbase,没有单独部署Hbase集群管理的zookeeper,而是直接使用Hbase自带的zk模块。另外,Hbase墙裂建议将数据存入HDFS里面,目前咱们是存在Hbase本地的。
2.1.1 验证Hbase是否启动成功
$ jps 8114 Jps 7820 HMaster
2.1.2下载并执行pp的Hbase初始化表语句
$ wget -c https://raw.githubusercontent.com/naver/pinpoint/master/hbase/scripts/hbase-create.hbase -P /root/pp/ $ cd /usr/local/hbase-1.0.3 $ ./bin/hbase shell /root/pp/hbase-create.hbase # 这里须要大概半分钟时间完成pp的表初始化 $ ./bin/hbase shell 2016-07-14 20:57:10,606 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.0.3, rf1e1312f9790a7c40f6a4b5a1bab2ea1dd559890, Tue Jan 19 19:26:53 PST 2016 hbase(main):001:0> status 'detailed' # 我这里已经初始化pp相关表,因此数据展现比较多 version 1.0.3 0 regionsInTransition master coprocessors: [] 1 live servers c612:46781 1468494831781 requestsPerSecond=0.0, numberOfOnlineRegions=194, usedHeapMB=18, maxHeapMB=241, numberOfStores=322, numberOfStorefiles=3, storefileUncompressedSizeMB=0, storefileSizeMB=0, memstoreSizeMB=0, storefileIndexSizeMB=0, readRequestsCount=9272, writeRequestsCount=385, rootIndexSizeKB=2, totalStaticIndexSizeKB=1, totalStaticBloomSizeKB=0, totalCompactingKVs=0, currentCompactedKVs=0, compactionProgressPct=NaN, coprocessors=[MultiRowMutationEndpoint] "AgentEvent,,1468495003477.b13eb3203210fb9d94feb1a445e0ad1b." numberOfStores=1, numberOfStorefiles=0, storefileUncompressedSizeMB=0, storefileSizeMB=0, memstoreSizeMB=0, storefileIndexSizeMB=0, readRequestsCount=0