注册用户享全站资源 并成为粉丝 不定时福利发放
 

分布式跟踪工具Pinpoint初探【数据采集监控1】

5
发表时间:2018-11-08 11:22来源:Java帮帮-微信公众号


前言

由于工作需要,前段时间抽口研究了一下APM相关技术。 大的互联网公司都有自己的分布式跟踪系统,比如Google的Dapper,Twitter的zipkin,淘宝的鹰眼,新浪的Watchman,京东的Hydra等,当然还有一些收费的工具。由于技术栈、项目规模以及方便且容易上手的原因,最终还是选择Pinpoint,本文是为了记录Pinpoint详细的搭建过程。

架构图

pinpoint-architecture.png

pinpoint-architecture.png


优点

  • 分布式事务跟踪,跟踪跨分布式应用的消息

  • 自动检测应用拓扑,帮助你搞清楚应用的架构

  • 水平扩展以便支持大规模服务器集群

  • 提供代码级别的可见性以便轻松定位失败点和瓶颈

  • 代码零侵入,运用JavaAgent字节码增强技术,只需要加启动参数即可

Why

随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用,这些组件共同构成了繁杂的分布式网络,那现在的问题是一个请求经过了这些服务后其中出现了一个调用失败的问题,只知道有异常,但具体的异常在哪个服务引起的就需要进入每一个服务里面看日志,这样的处理效率是非常低的。

链路跟踪系统的功能
  • 故障快速定位

  • 各个调用环节的性能分析

  • 数据分析等

  • 生成服务调用拓扑图

搭建环境

机器安装功能
192.168.1.180(8080,9994,9995,9996)pinpoint+hbasepinpointweb面板、控制器以及hbase数据库
192.168.1.190pinpoint-agent+分布式项目采集分布式项目数据,发送给collector

由于下面使用了Docker环境,相关软件已经上传至映射目录。

工具说明
Pinpoint-Web将收集到的数据显示成WEB网页形式
Pinpoint-Collector收集各种性能数据
Pinpoint-Agent和自己运行的应用关联起来的探针
HBase Storage收集到的数据存到HBase中
hbase_scriptsPinpoint初始化数据库
jdk-1.8Java运行环境
apache-tomcat-8.0Tomcat运行容器

HBase脚本介绍

  • hbase-create.hbase - 创建pinpoint必须的表。

  • hbase-drop.hbase - 删除pinpoint必须的所有表

  • hbase-flush-table.hbase - 刷新所有表

  • hbase-major-compact-htable.hbase- 压缩主要的所有表

Docker环境

这里,我们使用Docker进行测试,下载一个纯净版的centos:

docker pull docker.io/centos

创建测试环境:

dockerrun-it--namepinpoint-v /home/software/:/mnt/app-p9901:8080-p9994:9994-p9995:9995-p9996:9996-p16010:16010docker.io/centos

安装JDK

由于oracle官网设置了必须认证才可以下载JDK,这里我们使用事先下载好的JDK8进行安装。

# 解压tar -xvf jdk-8u131-linux-x64.tar.gz# 移动路径mv jdk1.8.0_131/ /usr/java/jdk1.8# 配置环境变量vi /etc/profileexport JAVA_HOME=/usr/java/jdk1.8export PATH=$PATH:$JAVA_HOME/bin# 使生效source /etc/profile

安装Hbase

解压,并放入指定目录:

tar -zxvf hbase-1.2.6-bin.tar.gzmv hbase-1.2.6/ /usr/local/hbase

配置JDK环境变量位置:

cd /usr/local/hbase/conf/vi hbase-env.sh

导入以下配置:

export JAVA_HOME=/usr/java/jdk1.8/

修改Hbase的配置信息:

vi hbase-site.xml

指定Hbase存储数据路径,建议为宿机目录:

<configuration>    <property>        <name>hbase.rootdir</name>        <value>file:///mnt/app/hbase_data</value>    </property></configuration>

最后,启动hbase:

cd /usr/local/hbase/bin/./start-hbase.sh

查看Hbase是否启动成功,如果启动成功的会看到"HMaster"的进程:

[root@c0931ce16a8a bin]# jps489 Jps172 HMaster

启动成功以后,我们可以通过以下网址访问:

http://192.168.1.180:16010/master-status

不出意外,应该是这个样子:

HMaster


初始化Hbase的pinpoint库:

./hbase shell /mnt/app/hbase_scripts/hbase-create.hbase

[root@c0931ce16a8a bin]# ./hbaseshell /mnt/app/hbase_scripts/hbase-create.hbase2018-05-0908:48:25,931WARN[main]util.NativeCodeLoader: Unabletoloadnative-hadooplibraryforyourplatform... usingbuiltin-javaclasseswhereapplicable0row(s) in1.5670seconds0row(s) in4.2500seconds0row(s) in4.2440seconds0row(s) in1.2200seconds0row(s) in1.2210seconds0row(s) in1.2220seconds0row(s) in1.2220seconds0row(s) in1.2210seconds0row(s) in1.2260seconds0row(s) in8.2590seconds0row(s) in1.2260seconds0row(s) in2.2270seconds0row(s) in1.2290seconds0row(s) in1.2240seconds0row(s) in2.2340secondsTABLEAgentEventAgentInfoAgentLifeCycleAgentStatV2ApiMetaDataApplicationIndexApplicationMapStatisticsCallee_Ver2ApplicationMapStatisticsCaller_Ver2ApplicationMapStatisticsSelf_Ver2ApplicationStatAggreApplicationTraceIndexHostApplicationMap_Ver2SqlMetaData_Ver2StringMetaDataTraceV215row(s) in0.0430seconds

登录web,来查看HBase的数据是否初始化成功:

HMaster

安装pinpoint

解压Tomcat8,将Tomcat8移动到指定位置:

tar -xvf apache-tomcat-8.0.36.tar.gzmv apache-tomcat-8.0.36 /usr/local/tomcat8

为了方便省事,我们把pinpoint-web 和 pinpoint-collector 都撸进一个Tomcat中:

mv pinpoint-collector-1.7.2.war  /usr/local/tomcat8/webapps/mv pinpoint-web-1.7.2.war  /usr/local/tomcat8/webapps/# 把web重命名以下mv pinpoint-web-1.7.2.war  pinpoint

启动Tomcat:

./startup.sh

前面的步骤ok,基本不会出现问题,你也可以查看日志是否启动成功:

tail -f catalina.out

最后,访问以下地址:

http://192.168.1.180:9901/pinpoint

3.png

3.png


测试收集

配置Pinpoint-agent

解压Pinpoint-agent:

tar-xvfpinpoint-agent-1.7.2.tar.gz

配置pinpoint.config:

# 这是指pinpoint-collector的地址,默认为127.0.0.1,这里修改为以下profiler.collector.ip=192.168.1.180

这里需要特别注意的是collector的端口一共有3个。
9994是tcp端口9995,9996是udp端口,要保证这些是通的。初始化创建Docker的时候我们已经做了映射。

普通项目部署

修改应用所在tomcat的/bin/catalina.sh:

# 修改为自己的目录CATALINA_OPTS="$CATALINA_OPTS -javaagent:/home/software/pinpoint-agent-1.7.2/pinpoint-bootstrap-1.7.2.jar"# 这里的agentId必须唯一,标志一个jvmCATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=myapp"# applicationName表示同一种应用:同一个应用的不同实例应该使用不同的agentId,相同的applicationNameCATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=MyTestPP"

保存以后,启动项目即可。

springboot项目部署

nohup java -javaagent:/home/software/pinpoint-agent-1.7.2/pinpoint-bootstrap-1.7.2.jar -Dpinpoint.agentId=itstyle-myapp -Dpinpoint.applicationName=itstyle-MyTestPP -jar myapp.jar &

效果演示

当然,这只是个空统计,并没有进行测试:

pinpoint


分享一下真实测试场景:

Pinpoint

Pinpoint


Pinpoint

总结

至此,整个环境已经搭建完毕,当然了还有一些大家需要注意的地方

  • Hbase使用的是默认自带的zookeeper,你也可以自行安装。

  • Dcoker下部署Hbase,切记要把数据放置在宿机,放置数据丢失。

  • 创建Docker容器是,记得映射 8080,9994,9995,9996,16010 相关端口,这里为了省事,把Hbase和pinpoint装在了一起。

  • 如果zookeeper安装在独立机器上,这里需要修改一下pp-colletor 和 pp-web的配置文件pinpoint-collector.properties,pinpoint-web.properties,不然会导致俩个模块启动失败。

  • 思考:官网上说损耗在百分之几,这个还没有详细的测试,网上有人说相对高并发下,性能损失能达到30%~50%之间;也有人说可能是配置参数的问题,待研究。

最后,由于国内下载速度的原因,这里提供下相关软件: 分布式跟踪工具Pinpoint初探(科帮网).zip.zip")


会员登录

会员登录

登录免费下载全站资源

获取验证码
登录
登录
开发简历

开发简历

简历模板网站自取

入坑需谨慎

入坑需谨慎

高薪完全靠自己

微信赞助-Java帮帮社区

微信赞助-Java帮帮社区

非盈利性学习社区

支付宝赞助-Java帮帮社区

支付宝赞助-Java帮帮社区

将分享做到极致

大公司资讯
文章附图

近日,在美国推出满一年的Facebook视频服务Watch,宣布正式向全球推广,这预示着视频领域中,YouTube...

文章附图

据彭博社北京时间9月19日报道,科技行业最引人注目的法律大战可能正在进入尾声。据高通CEO史蒂夫·莫伦科夫(Ste...

Java帮帮公众号生态

Java帮帮公众号生态

总有一款适合你

Java帮帮-微信公众号

Java帮帮-微信公众号

将分享做到极致

Python帮帮-公众号

Python帮帮-公众号

人工智能,爬虫,学习教程

大数据驿站-微信公众号

大数据驿站-微信公众号

一起在数据中成长

九点编程-公众号

九点编程-公众号

深夜九点学编程

程序员服务区-公众号

程序员服务区-公众号

吃喝玩乐,听学吐画

Java帮帮学习群生态

Java帮帮学习群生态

总有一款能帮到你

Java学习群

Java学习群

与大牛一起交流

大数据学习群

大数据学习群

在数据中成长

九点编程学习群

九点编程学习群

深夜九点学编程

python学习群

python学习群

人工智能,爬虫

测试学习群

测试学习群

感受测试的魅力

Java帮帮生态承诺

Java帮帮生态承诺

一直坚守,不负重望

初心
勤俭
诚信
正义
分享
合作品牌 非盈利生态-优质内容分享传播者
关于我们
友链申请
友链交换:加帮主QQ2524138991 留言即可 24小时内答复  
全站内容非商业用途,内容来源于网友,并遵循 CC BY-NC 4.0 许可,如有异议请联系客服。
会员登录
获取验证码
登录
登录
我的资料
留言
回到顶部