分布式追踪工具pinpoint的原理与使用

前言:由于翻译水平有限,难免有所疏漏。各位读者在本机搭建环境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

file:///data/hbase>

启动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应用启动后,浏览器无法访问,请设置防火墙开放端口,或关闭防火墙

参考资料:

https://github.com/naver/pinpoint

http://www.cnblogs.com/yyhh/p/6106472.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容