Pinpoint介绍及docker安装方式

一、介绍

  Pinpoint是用Java编写的大型分布式系统的APM(Application Performance Management应用程序性能管理)工具,受Dapper论文的启发,Pinpoint 通过跟踪分布式应用之间的调用来提供解决方案,以帮助分析系统的总体结构和内部模块之间如何相互联系,2012年7月开始开发,在2015年1月作为一个开源项目启动, 是一个为大型分布式系统服务的n层架构跟踪平台。

  Pinpoint的特点如下:

  • 分布式事务跟踪,跟踪跨分布式应用的消息
  • 自动检测应用拓扑,帮助你搞清楚应用的架构
  • 水平扩展以便支持大规模服务器集群
  • 提供代码级别的可见性以便轻松定位失败点和瓶颈
  • 使用字节码检测技术添加无需修改代码的新功能

  Pinpoint主要由四部分组成:

  • Agent:用于收集应用端监控数据,无侵入式,向收集器发送跟踪数据
  • Collector:收集器,处理agent端发送过来的数据,并持久化
  • Web:展示系统调用关系、调用详情、应用状态等,并支持报警等功能
  • HBase:持久化层

  Agent的采集原理:

  配置Pinpoint主要的点就是安装配置Agent,通过字节码增强技术(有的叫动态探针技术)来实现无侵入式的调用链采集。其核心实现还是基于JVM的javaAgent机制来实现,Agent附加到应用程序采样,也叫做埋点,主要实现是在agent配置文件pinpoint.config中修改配置profiler.collector.ip为collector所在服务器ip,这样才能将采集到的数据发送给collector收集器,然后就是为需要采集的应用程序埋点,在tomcat启动脚本catalina.sh中配置javaagent:pinpoint-bootstrap-$VERSION.jar的jar包,然后配置下id和应用程序名称就ok了,windows和linux系统的tomcat稍有不同,windows系统下tomcat的bin目录下是catalina.bat,是以bat结尾的dos批处理文件,linux系统下是catalina.sh,是以sh结尾的利用shell进行解释的脚本文件。配置好后启动就会按配置的agent路径加载,在启动的时候agent将在加载应用class文件之前做拦截并修改字节码,在class方法调用的前后加上链路采集逻辑,从而实现链路采集功能。所以叫字节码增强技术,非侵入式是说不需要修改应用的代码,就可以完成agent的部署。javaAgent的底层机制主要依赖JVMTI ,JVMTI全称JVM Tool Interface,是JVM暴露出来的一些供用户扩展的接口集合。JVMTI是基于事件驱动的,JVM每执行到一定的逻辑就会调用一些事件的回调接口(如果有的话),这些接口可以供开发者扩展自己的逻辑。但JVMTI都是一些接口合集,需要有接口的实现,这就用到了java的instrument,可以理解instrument是JVMTI的一种实现,为JVM提供外挂支持。instrument支持启动时加载和运行时加载两种方式,分别实现JVMTI的Agent_OnLoad和Agent_OnAttach方法;pinpoint目前采用的是启动时加载方式。

二、安装

  安装分为docker方式安装和手动编译源码的方式安装,也可以通过QuickStart快速安装,QuickStart是使用的mvn 自带的tomcat插件来启动的webUI和collector。随着部署的服务增多,数据量上来之后,难免需要进行一些参数设置,这个时候麻烦就来了。因此如果最终目的是生产的话,直接按照Installation进行,由于使用docker方式进行安装较为方便以及学习运用下docker,所以我采用docker的方式进行安装。

  安装步骤:

  1.首先在已经安装git的条件下执行如下命令,如果没有安装git,可以使用yum方式进行安装,克隆该项目。

  git clone https://github.com/naver/pinpoint-docker.git

  克隆较慢,时间太长,所以我在windows环境下下载了项目然后传到了linux服务器上,由于传的是zip形式的压缩包所以通过yum安装了unzip然后对压缩包解压。

  2.安装docker-compose

  sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

  3.将可执行权限应用于二进制文件

  sudo chmod +x /usr/local/bin/docker-compose

  4.查看是否安装成功

  docker-compose –version

  5.进入该目录

  cd pinpoint-docker

  6.拉取镜像并创建运行容器

  docker-compose pull && docker-compose up -d

  我是分步进行,首先先进行pull操作拉取镜像,这个过程非常慢,甚至出现了几次错误,然后就重新进行拉取,已经下载好的镜像不会重新下载。

  下载好的镜像如下:

Pinpoint介绍及docker安装方式

Pinpoint介绍及docker安装方式  启动的容器如下:

 Pinpoint介绍及docker安装方式

Pinpoint介绍及docker安装方式

 三、使用

   我自己装的Linux服务器IP为192.168.0.125,所以下文IP就写该地址。

     1.浏览器访问Pinpoint的web页面: http://192.168.0.125:8079/,出现页面如下:

Pinpoint介绍及docker安装方式

  2.浏览器访问HBase页面:http://192.168.0.125:16010/,出现页面如下:

Pinpoint介绍及docker安装方式

    3.如果上面两个页面都能正常访问,那么docker方式部署Pinpoint成功。

    4.flink是可选项,Pinpoint使用flink预统计数据来优化查询性能,flink作为目前最先进的流式处理框架,性能优秀,一致性保证,轻量级容错。浏览器访问flink页面:http://192.168.0.125:8081/,出现页面如下:

Pinpoint介绍及docker安装方式

      5.访问http://192.168.0.125:8000/页面的任意接口,就可以在web界面查看到访问信息。

Pinpoint介绍及docker安装方式

      6.首页相关介绍

 Pinpoint介绍及docker安装方式

Pinpoint介绍及docker安装方式