zoukankan      html  css  js  c++  java
  • 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操作拉取镜像,这个过程非常慢,甚至出现了几次错误,然后就重新进行拉取,已经下载好的镜像不会重新下载。

      下载好的镜像如下:

      启动的容器如下:

     

     三、使用

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

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

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

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

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

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

          6.首页相关介绍

     

  • 相关阅读:
    【phpmailer】类Could not instantiate mail function / IXWebHosting空间
    Delphi通过机器码获得注册码的完整方案
    月末使用期间损益结转
    如何停用已启用模块
    DevExpress安装
    用Delphi实现WinSocket高级应用
    如何用delphi读取网卡物理号
    Delphi制作带图标的弹出式选单
    Register Delphi ,Delphi 不能运行
    远程通:系统管理不可以使用
  • 原文地址:https://www.cnblogs.com/coderxiaobai/p/13431639.html
Copyright © 2011-2022 走看看