一、介绍

  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.首页相关介绍

Pinpoint介绍及docker安装方式的更多相关文章

  1. Prometheus介绍及docker安装方式

    一.介绍 Prometheus是主要基于Go编写,最初在SoundCloud上构建的开源系统监视和警报工具包,它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 ...

  2. 调度系统Airflow1.10.4调研与介绍和docker安装

    Airflow1.10.4介绍与安装 现在是9102年,8月中旬.airflow当前版本是1.10.4. 随着公司调度任务增大,原有的,基于crontab和mysql的任务调度方案已经不太合适了,需要 ...

  3. windows docker安装方式的比较小结

    稍微小结一下使用InstallDocker 和dockertoolbox的两种方式安装的docker(名称说明可能不妥,仅代表安装方式) InstallDocker  使用的是Microsoft Hy ...

  4. ElasticSearch 介绍、Docker安装以及基本检索第三篇

    一.简介 1.1 什么是Elasticsearch? Elasticsearch是一个分布式的开源搜索和分析引擎, 适用于所有类型的数据,包括文本.数字.地理空间.结构化和啡结构化数据.Elastic ...

  5. 手动安装 saltshaker-plus 版本选择特别说明(后期重点讲解Docker安装方式)

    前后端都建议使用1.12版本

  6. 关于MYSQL数据库安装方式及相关设置简要说明

    网上关于MYSQL的教程非常多,但都不是最新的,我这里只是针对最新版本的MY SQL 的安装与设置进行一个简要的说明,大部份操作都相同. 以下是按照WINDOWS 64位操作系统+MY SQL 5.6 ...

  7. docker安装脚本

    此docker安装脚本为官方提供的,可以从网上下载,此处直接把脚本内容贴上. #!/bin/sh set -e # This script is meant for quick & easy ...

  8. 使用 Docker 安装 showdoc

    一.简介 ShowDoc 是一个非常适合IT团队在线共享文档的工具,在线访问地址为:https://www.showDoc.cc 本来也可以直接 pull showdoc 镜像到本地,使用 docke ...

  9. Linux平台达梦数据库V7单实例安装方式之图形方式

    一 前言 我们在学习任何一个应用时,了解它的最初步骤通常是学会如何进行安装配置,后序才去关心如何使用,学习达梦数据库也是如此,而达梦数据库的安装提供了多种方式,接下来会一一介绍每种安装方式,达梦数据库 ...

随机推荐

  1. (acwing蓝桥杯c++AB组)1.1 递归

    (acwing蓝桥杯c++AB组)1.课程介绍+递归 文章目录 (acwing蓝桥杯c++AB组)1.课程介绍+递归 课程介绍 第一讲 递归与递推 递归 引入 递归的底层调用顺序 例题与练习 课程介绍 ...

  2. mysql数据库-8.0安装及环境搭建

           1.MySQL8.0 For Windows zip包下载地址 https://dev.mysql.com/downloads/file/?id=476233,进入页面后点击底部&quo ...

  3. JavaWeb——基本概念

    1.1 web开发: web:网页 静态web: 普通的html,css 特点:数据内容不会变化 动态web: 百度等几乎所有的网站 提供:数据内容会变化 技术栈:Servlet/JSP(Java), ...

  4. Linux 中如何使用 Htop 监控工具?【网络安全】

    镜像下载.域名解析.时间同步请点击阿里云开源镜像站 一.Htop 界面展示 "Htop 是一个用于 Linux/Unix 系统的交互式实时进程监控应用程序,也是 top 命令的替代品,它是所 ...

  5. 『现学现忘』Docker基础 — 32、通过DockerFile的方式挂载数据卷

    目录 1.简单了解一下DockerFile 2.通过DockerFile的方式挂载数据卷 (1)创建DockerFile文件 (2)编辑Dockerfile文件 (3)构建Dokcer镜像 (4)启动 ...

  6. async-validator 源码学习笔记(六):validate 方法

    系列文章: 1.async-validator 源码学习(一):文档翻译 2.async-validator 源码学习笔记(二):目录结构 3.async-validator 源码学习笔记(三):ru ...

  7. windows 访问 CentOS 的防火墙及其 网关开放

    1.防火墙开放端口 firewall-cmd --zone=public --add-port=8848/tcp --permanent firewall-cmd --list-ports 开放cen ...

  8. spring-boot-learning-RabbitMQ

    为什么需要MQ??? 异步处理: 场景: 用户注册后,需要发注册邮件和注册短信,传统的做法有两种 1.串行的方式 2.并行的方式` 用户注册-发送注册邮箱-发送注册短信都完成之后才结束返回给客户端 邮 ...

  9. Effective Java —— 消除过期的对象引用

    本文参考 本篇文章参考自<Effective Java>第三版第七条"Eliminate obsolete object references" Memory leak ...

  10. Azure DevOps (八) 通过流水线编译Docker镜像

    上一篇文章我们完成了最简单的传统部署:上传应用到服务器上使用守护进程进行应用的部署. 本篇文章我们开始研究容器化和流水线的协作. 在开始操作之前,我们首先需要准备一下我们的dockerfile,这里我 ...