美文网首页
pinpoint详解及使用

pinpoint详解及使用

作者: wzx2019 | 来源:发表于2019-01-20 23:13 被阅读0次

    概述

    一、pinpoint简介

    何为pinpoint: pinpoint是一个分析大型分布式系统的平台,提供解决方案来处理海量跟踪数据,主要面向基于tomcat的Java 应用。

    为何使用它:和如今相比, 过去的因特网的用户数量相对较小,而因特网服务的架构也没那么复杂。web服务通常使用两层(web 服务器和数据库)或三层(web服务器,应用服务器和数据库)架构。然而在如今,随着互联网的成长,需要支持大量的并发连接,并且需要将功能和服务有机结合,导致更加复杂的软件栈组合。更确切地说,比三层层次更多的n层架构变得更加普遍。系统的复杂度因此提升。系统越复杂,越难解决问题,例如系统失败或者性能问题。在三层架构中找到解决方案还不是太难,仅仅需要分析3个组件比如web服务器,应用服务器和数据库,而服务器数量也不多。但是,如果问题发生在n层架构中,就需要调查大量的组件和服务器。另一个问题是仅仅分析单个组件很难看到大局;当发生一个低可见度的问题时,系统复杂度越高,就需要更长的时间来查找原因。最糟糕的是,某些情况下我们甚至可能无法查找出来。为了解决复杂架构下的拓扑解析与性能分析,pinpoint应运而生。

    二、功能、优势与架构

    功能

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

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

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

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

    使用字节码增强技术,添加新功能而无需修改代码

    优势

    非入侵式:不需要修改应用的代码,即可完成agent的部署。

    资源消耗:总体资源消耗只提高了3%左右。

    架构

    HBase (用于存储数据)

    Pinpoint Collector (信息的收集者,部署在tomcat中)

    Pinpoint Web (提供WEB_UI界面,部署在tomcat中)

    Pinpoint Agent (附加到 java 应用来做采样)

    三、安装

    1、配置jdk

    2.、安装Hbase

            pinpoint收集来的测试数据,主要是存在Hbase数据库的。所以它可以收集大量的数据,可以进行更加详细的分析。 

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

            HbaseWeb : http://10.100.19.203:16010/master-status

    3、安装pinpoint-collector

    4、安装pinpoint-web

    5.、部署pp-agent采集监控数据

            vi catalina.sh

            # 在20行增加如下字段

            # 第一行是pp-agent的jar包位置

            # 第二行是agent的ID,这个ID是唯一的,我是用pp + 今天的日期命名的,只要与其他的项目的ID不重复就好了

            # 第三行是采集项目的名字,这个名字可以随便取,只要各个项目不重复就好了

            CATALINA_OPTS="$CATALINA_OPTS -javaagent:/data/pp-agent/pinpoint-bootstrap-1.5.2.jar"

            CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=pp20161122"

            CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=MyTestPP

    四、pinpoint字节码增强技术原理

    inpoint通过字节码增加技术(有的叫动态探针技术)来实现无侵入式的调用链采集。其核心实现原来还是基于JVM的javaagent机制来实现。pinpoint在启动时通过设置

    -javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar

    来指定pinpoint agent加载路径,在启动的时候agent将在加载应用class文件之前做拦截并修改字节码,在class方法调用的前后加上链路采集逻辑,从而实现链路采集功能。

    javaAgent的底层机制主要依赖JVMTI ,JVMTI全称JVM Tool Interface,是JVM暴露出来的一些供用户扩展的接口集合。JVMTI是基于事件驱动的,JVM每执行到一定的逻辑就会调用一些事件的回调接口(如果有的话),这些接口可以供开发者扩展自己的逻辑。但JVMTI都是一些接口合集,需要有接口的实现,这就用到了java的instrument,可以理解instrument是JVMTI的一种实现,为JVM提供外挂支持。

    instrument支持启动时加载和运行时加载两种方式,分别实现JVMTI的Agent_OnLoad和Agent_OnAttach方法;pinpoint目前采用的是启动时加载方式。

    http://10.100.19.203:48080/test

    http://10.100.19.204:28080

    http://10.100.19.204:16010/master-status

    参考文章:

            https://blog.csdn.net/wang_wpw/article/details/80917012【原理】

            https://www.cnblogs.com/yyhh/p/6106472.html【安装】

            https://blog.csdn.net/ZYQDuron/article/details/80238326    【简介】

    版权声明:本文为博主原创文章,转载请附上博文链接!

    相关文章

      网友评论

          本文标题:pinpoint详解及使用

          本文链接:https://www.haomeiwen.com/subject/begfjqtx.html