最新公告
  • 欢迎您光临极客文库,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 前言

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

    架构图

    优点

    • 分布式事务跟踪,跟踪跨分布式应用的消息
    • 自动检测应用拓扑,帮助你搞清楚应用的架构
    • 水平扩展以便支持大规模服务器集群
    • 提供代码级别的可见性以便轻松定位失败点和瓶颈
    • 代码零侵入,运用JavaAgent字节码增强技术,只需要加启动参数即可

    Why

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

    搭建环境

    机器 安装 功能
    192.168.1.180(8080,9994,9995,9996) pinpoint+hbase pinpointweb面板、控制器以及hbase数据库
    192.168.1.190 pinpoint-agent+分布式项目 采集分布式项目数据,发送给collector
    由于下面使用了Docker环境,相关软件已经上传至映射目录。
    工具说明
    Pinpoint-Web 将收集到的数据显示成WEB网页形式
    Pinpoint-Collector 收集各种性能数据
    Pinpoint-Agent 和自己运行的应用关联起来的探针
    HBase Storage 收集到的数据存到HBase中
    hbase_scripts Pinpoint初始化数据库
    jdk-1.8 Java运行环境
    apache-tomcat-8.0 Tomcat运行容器
    HBase脚本介绍
    • hbase-create.hbase – 创建pinpoint必须的表。
    • hbase-drop.hbase – 删除pinpoint必须的所有表
    • hbase-flush-table.hbase – 刷新所有表
    • hbase-major-compact-htable.hbase- 压缩主要的所有表

    Docker环境

    这里,我们使用Docker进行测试,下载一个纯净版的centos:
    1. docker pull docker.io/centos
    创建测试环境:
    1. docker run -it --name pinpoint -v /home/software/:/mnt/app  -p 9901:8080-p 9994:9994-p 9995:9995-p  9996:9996  -p 16010:16010  docker.io/centos

    安装JDK

    由于oracle官网设置了必须认证才可以下载JDK,这里我们使用事先下载好的JDK8进行安装。
    1. # 解压
    2. tar -xvf jdk-8u131-linux-x64.tar.gz
    3. # 移动路径
    4. mv jdk1.8.0_131/ /usr/java/jdk1.8
    5. # 配置环境变量
    6. vi /etc/profile
    7. export JAVA_HOME=/usr/java/jdk1.8
    8. export PATH=$PATH:$JAVA_HOME/bin
    9. # 使生效
    10. source /etc/profile

    安装Hbase

    解压,并放入指定目录:
    1. tar -zxvf hbase-1.2.6-bin.tar.gz
    2. mv hbase-1.2.6/ /usr/local/hbase
    配置JDK环境变量位置:
    1. cd /usr/local/hbase/conf/
    2. vi hbase-env.sh
    导入以下配置:
    1. export JAVA_HOME=/usr/java/jdk1.8/
    修改Hbase的配置信息:
    1. vi hbase-site.xml
    指定Hbase存储数据路径,建议为宿机目录:
    1. <configuration>
    2.    <property>
    3.      <name>hbase.rootdir</name>
    4.      <value>file:///mnt/app/hbase_data</value>
    5.   </property>
    6. </configuration>
    最后,启动hbase:
    1. cd /usr/local/hbase/bin/
    2. ./start-hbase.sh
    查看Hbase是否启动成功,如果启动成功的会看到”HMaster”的进程:
    1. [root@c0931ce16a8a bin]# jps
    2. 489Jps
    3. 172HMaster
    启动成功以后,我们可以通过以下网址访问:
    http://192.168.1.180:16010/master-status
    不出意外,应该是这个样子:
    初始化Hbase的pinpoint库:
    1. ./hbase shell /mnt/app/hbase_scripts/hbase-create.hbase
    1. [root@c0931ce16a8a bin]#./hbase shell /mnt/app/hbase_scripts/hbase-create.hbase
    2. 2018-05-0908:48:25,931 WARN  [main] util.NativeCodeLoader:Unable to load native-hadoop library for your platform...using builtin-java classes where applicable
    3. 0 row(s)in1.5670 seconds
    4. 0 row(s)in4.2500 seconds
    5. 0 row(s)in4.2440 seconds
    6. 0 row(s)in1.2200 seconds
    7. 0 row(s)in1.2210 seconds
    8. 0 row(s)in1.2220 seconds
    9. 0 row(s)in1.2220 seconds
    10. 0 row(s)in1.2210 seconds
    11. 0 row(s)in1.2260 seconds
    12. 0 row(s)in8.2590 seconds
    13. 0 row(s)in1.2260 seconds
    14. 0 row(s)in2.2270 seconds
    15. 0 row(s)in1.2290 seconds
    16. 0 row(s)in1.2240 seconds
    17. 0 row(s)in2.2340 seconds
    18. TABLE
    19. AgentEvent
    20. AgentInfo
    21. AgentLifeCycle
    22. AgentStatV2
    23. ApiMetaData
    24. ApplicationIndex
    25. ApplicationMapStatisticsCallee_Ver2
    26. ApplicationMapStatisticsCaller_Ver2
    27. ApplicationMapStatisticsSelf_Ver2
    28. ApplicationStatAggre
    29. ApplicationTraceIndex
    30. HostApplicationMap_Ver2
    31. SqlMetaData_Ver2
    32. StringMetaData
    33. TraceV2
    34. 15 row(s)in0.0430 seconds
    登录web,来查看HBase的数据是否初始化成功:

    安装pinpoint

    解压Tomcat8,将Tomcat8移动到指定位置:
    1. tar -xvf apache-tomcat-8.0.36.tar.gz
    2. mv apache-tomcat-8.0.36/usr/local/tomcat8
    为了方便省事,我们把pinpoint-web 和 pinpoint-collector 都撸进一个Tomcat中:
    1. mv pinpoint-collector-1.7.2.war  /usr/local/tomcat8/webapps/
    2. mv pinpoint-web-1.7.2.war  /usr/local/tomcat8/webapps/
    3. # 把web重命名以下
    4. mv pinpoint-web-1.7.2.war  pinpoint
    启动Tomcat:
    1. ./startup.sh
    前面的步骤ok,基本不会出现问题,你也可以查看日志是否启动成功:
    1. tail -f catalina.out
    最后,访问以下地址:
    http://192.168.1.180:9901/pinpoint

    测试收集

    配置Pinpoint-agent

    解压Pinpoint-agent:
    1. tar - xvf pinpoint-agent-1.7.2.tar.gz
    配置pinpoint.config:
    1. # 这是指pinpoint-collector的地址,默认为127.0.0.1,这里修改为以下
    2. profiler.collector.ip=192.168.1.180
    这里需要特别注意的是collector的端口一共有3个。 9994是tcp端口9995,9996是udp端口,要保证这些是通的。初始化创建Docker的时候我们已经做了映射。

    普通项目部署

    修改应用所在tomcat的/bin/catalina.sh:
    1. # 修改为自己的目录
    2. CATALINA_OPTS="$CATALINA_OPTS -javaagent:/home/software/pinpoint-agent-1.7.2/pinpoint-bootstrap-1.7.2.jar"
    3. # 这里的agentId必须唯一,标志一个jvm
    4. CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=myapp"
    5. # applicationName表示同一种应用:同一个应用的不同实例应该使用不同的agentId,相同的applicationName
    6. CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=MyTestPP"
    保存以后,启动项目即可。

    springboot项目部署

    1. 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 &

    效果演示

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

    总结

    至此,整个环境已经搭建完毕,当然了还有一些大家需要注意的地方
    • 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
      本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
      极客文库 » 分布式跟踪工具Pinpoint初探

      常见问题FAQ

      如果资源链接失效了怎么办?
      本站用户分享的所有资源都有自动备份机制,如果资源链接失效,请联系本站客服QQ:2580505920更新资源地址。
      如果用户分享的资源与描述不符怎么办?
      可以联系客服QQ:2580505920,如果要求合理可以安排退款或者退赞助积分。
      如何分享个人资源获取赞助积分或其他奖励?
      本站用户可以分享自己的资源,但是必须保证资源没有侵权行为。点击个人中心,根据操作填写并上传即可。资源所获收益完全归属上传者,每周可申请提现一次。
      如果您发现了本资源有侵权行为怎么办?
      及时联系客服QQ:2580505920,核实予以删除。

      Leave a Reply

      Hi, 如果你对这款资源有疑问,可以跟我联系哦!

      联系发布者

      Leave a Reply

      Hi, 如果你对这款资源有疑问,可以跟我联系哦!

      联系发布者
      • 101会员总数(位)
      • 3672资源总数(个)
      • 0本周发布(个)
      • 0 今日发布(个)
      • 125稳定运行(天)

      欢迎加入「极客文库」,成为原创作者从这里开始!

      立即加入 了解更多
      成为赞助用户享有更多特权立即升级