简介

image.png


pinpoint是开源在github上的一款全链路APM监控工具,提供了无侵入式的调用链监控、方法执行详情查看、应用状态信息监控等功能。基于GoogleDapper论文进行的实现,与另一款开源的全链路分析工具Zipkin类似,但相比Zipkin提供了无侵入式、代码维度的监控等更多的特性。 Pinpoint支持的功能比较丰富,可以支持如下几种功能:

  • 服务拓扑图:
    :::info 对整个系统中应用的调用关系进行了可视化的展示,单击某个服务节点,可以显示该节点的 详细信息,比如当前节点状态、请求数量等 :::

  • 实时活跃线程图:
    :::info 监控应用内活跃线程的执行情况,对应用的线程执行性能可以有比较直观的了解 :::

  • 请求响应散点图:
    :::info 以时间维度进行请求计数和响应时间的展示,拖过拖动图表可以选择对应的请求查看执行的详细情况 :::

  • 请求调用栈查看:
    :::info 对分布式环境中每个请求提供了代码维度的可见性,可以在页面中查看请求针对到代码维度的执行详情,帮助查找请求的瓶颈和故障原因。 :::

  • 应用状态、机器状态检查:
    :::info 通过这个功能可以查看相关应用程序的其他的一些详细信息,比如CPU使用情况,内存状态、垃圾收集状态,TPS和JVM信息等参数。 :::

总体来说,使用pinpoint的一些优点:

  • 可以掌握系统的整体响应速度情况,对系统运行情况能比较清晰
  • 可以掌握各节点的响应速度情况,比如第三方服务接口,redis,mysql等
  • 可以掌握单次请求的具体服务链路耗时情况,定位性能瓶颈
  • 单次请求的具体服务链路请求信息,对于排查问题能提供帮助
  • 监控各服务的JVM、线程池、数据库连接池使用情况,尤其是对分布式服务系统来说


github地址:

项目地址:https://github.com/pinpoint-apm/pinpoint
官方docker部署地址:https://github.com/pinpoint-apm/pinpoint-docker

架构组成


Pinpoint 主要由 3 个组件外加 Hbase 数据库组成,三个组件分别为:Agent、Collector 和 Web UI

  • Agent组件:
    :::info 用于收集应用端监控数据,无侵入式,只需要在启动命令中加入部分参数即可 :::

  • Collector组件:
    :::info 数据收集模块,接收Agent发送过来的监控数据,并存储到HBase :::

  • WebUI:
    :::info 监控展示模块,展示系统调用关系、调用详情、应用状态等,并支持报警等功能 :::

image.png

安装Collector组件


使用docker-compose安装最新版本:

  1. # 克隆官方的docker部署git
  2. git clone https://github.com/naver/pinpoint-docker.git
  3. # 进入clone的目录
  4. cd pinpoint-docker
  5. # 使用docker-compose拉取镜像和运行服务。注意docker-compose是需要单独安装的
  6. docker-compose pull && docker-compose up -d

如果想安装历史或指定版本,可以直接指定git tags:

  1. # 克隆官方的docker部署git
  2. git clone https://github.com/naver/pinpoint-docker.git
  3. # 进入clone的目录
  4. cd pinpoint-docker
  5. # 使用git命令切换到指定版本的tag
  6. git checkout {tag}
  7. # 使用docker-compose拉取镜像和运行服务。注意docker-compose是需要单独安装的
  8. docker-compose pull && docker-compose up -d


如果部署的时候想使用一些自定义配置,例如指定的端口,可以通过修改 docker-compose.yml.env 中对应的配置来实现,建议优先通过修改.env文件来做自定义配置

:::info 修改端口可以直接修改.env文件,默认端口是Pinpoint-Web:8079,QuickStart:8000和Flink:8081 :::

image.png

部署完成之后,使用docker-compose ps命令即可查看所有容器:

pinpoint安装配置(Docker) - 图4

访问 http://xx.xx.xx.xx:8079/ 即可浏览pinpoint页面
pinpoint安装配置(Docker) - 图5

安装配置Agent组件

githubpinpointRelease发布页面中下载和Collector组件版本一致的Agent程序包

pinpoint安装配置(Docker) - 图6

将Agent程序包上传到需要监控的服务器上,解压压缩包,修改pinpoint.config配置文件,一般只需修改文件中的profiler.collector.ip=127.0.0.1为前面所部署的Collector组件所在IP地址

pinpoint安装配置(Docker) - 图7

pinpoint安装配置(Docker) - 图8

:::info

  • 配置文件分为localRelease版本,选择任一一个修改即可,但是需要在pinpoint-root.config文件中指定对应的配置版本
    pinpoint安装配置(Docker) - 图9
  • 如果在多台服务器上部署了应用,那么就需要在多台机器上部署Agent组件 :::

配置监听应用

pinpoint的监控完全是无侵入式的,配置起来也很简单,只需要在java应用的启动命令增加几个参数即可:

  1. # ${pinpointPath}是agent组件存放的路径,类似于JAVA_HOME
  2. -javaagent:${pinpointPath}/pinpoint-bootstrap-2.3.1.jar
  3. #'dpccb'可自定义命名,在pinpoint页面上显示的名称
  4. -Dpinpoint.applicationName=dpccb
  5. #id可自定义命名,可以和Name一样
  6. -Dpinpoint.agentId=dpccb

启动应用程序,打开应用页面访问一下,然后登陆pinpoint的Web页面即可看到相关的监控内容了

:::info 如果应用是通过容器方式运行的,也可以通过修改启动脚本和Dockerfile的方式来配置agent的监听
//修改启动命令
pinpoint安装配置(Docker) - 图10
//把agent的存放目录挂载到应用的容器内
pinpoint安装配置(Docker) - 图11 :::

pinpoint功能介绍

首页

选择一个需要查看的应用,即可在首页中以图形化的方式展示用户请求、服务间的调用关系等信息。另外还有响应时间分析图、调用散点图、响应时长分布、等待时长分布等。在右侧的调用统计图中用鼠标左键框选(如图上红框)即可查看选中部分的调用详情

pinpoint安装配置(Docker) - 图12

调用详细信息

详情页,选择一个请求后下方会显示其详细信息,包含响应时间,请求过程中涉及的代码方法,sql语句等

pinpoint安装配置(Docker) - 图13

选择混合视图后还可以同时查看调用树、服务器性能占用、server map等信息
pinpoint安装配置(Docker) - 图14

应用检查工具

查看应用的其他细节,如CPU使用、内存/垃圾收集、TPS和JVM参数
pinpoint安装配置(Docker) - 图15
pinpoint安装配置(Docker) - 图16
pinpoint安装配置(Docker) - 图17