Pinpoint是一款开源的APM工具,用于分析大型分布式系统,提供解决方案来处理海量跟踪数据,主要面向基于tomcat的Java 应用。

一.Pinpoint的架构

pinpoint 由以下几部分组成
1.Web服务器
2.Collector收集器
3.Agent
4.HBase数据库

Pinpoint的工作原理是这样:在需要监控的应用主机上安装Pinpoint的agent,agent就是探针,主要功能是采集数据并将其传送到Collector收集器。可以在多台主机,多个应用部署探针,但是Pinpoint的探针只有一种,就是Java类型的agent。
Collector收集器在收到agent传送来的数据后,将监控数据写入HBase数据库中,它的主要功能就是接收数据,起到转发的作用。
HBase是一个分布式的、面向列的开源数据库,用于存储系统的监控数据。Pinpoint Web 服务器从中读取数据,Pinpoint的web UI与用户交互,接收来自用户的请求,根据请求将HBase中的数据进行处理,展示给用户

二.Pinpoint的安装部署

用户首先需要部署JDK1.8,HBase数据库,Pinpoint Collector,Pinpoint Web,Pinpoint Agent,在部署Agent时,需要在被监控的应用所在的主机下载agent,并修改agent文件pinpoint.config文件,修改配置文件profiler.collector.ip=xx.xx.xx.xx,这里填入collector的ip地址,确保指向该地址的9994端口与本机是连通的。
启动监控需要在tomcat的catalina.sh文件中添加三行参数:

CATALINA_OPTS="$ CATALINA_OPTS -javaagent:/xx/pinpoint-agent-1.6.1/pinpoint-bootstrap-1.6.1.jar"
CATALINA_OPTS="$ CATALINA_OPTS -Dpinpoint.applicationName=xxx"
CATALINA_OPTS="$ CATALINA_OPTS -Dpinpoint.agentId=xxx"

其中,第一个路径指向pinpoint-bootstrap的jar包位置(在下载的agent文件中),第二个pinpoint.applicationName表示监控的目标应用的名称,第三 个pinpoint.agentId表示监控目标应用的ID,其中pinpoint.applicationName可以不唯一,pinpoint.agentId要求唯一,如果 pinpoint.applicationName相同但pinpoint.agentId不同,则表示的是同一个应用的集群。

如果是Spring Boot的应用,那就不需要配置tomcat,在运行jar包时把这三行参数加入启动命令即可,例如:

nohup java -javaagent: /xx/pinpoint-agent-1.6.1/pinpoint-bootstrap-1.6.1.jar -Dpinpoint.applicationName=xxx -Dpinpoint.agentId=xxx –jar myapp.jar > log.log &

这样启动java进程后,pinpoint的agent就可以开始收集数据了

Collector收集器和Web服务器都是tomcat服务器,将原生的tomcat修改了部分配置,这两个组件的启动方法都是./startup.sh 。用户在安装时需要修改tomcat 文件conf路径下 server.xml的进程端口号以避免端口被占用

总结: Pinpoint的基础架构与Dynatrace以前的一款产品Appmon有不少共同点,整体架构简洁明了,缺点是只有java类型的agent,没有.NET和Web server的agent。在部署过程中,需要修改很多配置文件,安装难度要比Dynatrace难很多

三. Pinpoint的功能


这是Pinpoint的主页,中间是一个拓扑图,展示被监控的节点与访问用户的请求数。
顶部为一个时间轴,可以选择过去时间段进行数据筛选,展示在屏幕上,update按钮上有个勾,勾选上页面会自动刷新,可以选择时间频率,10s,20s,30s,1min刷新一次。


左上角的选择框是用于选择不同的应用group,如果要将多个监控节点放入同一个group中,就在部署agent时调整参数-Dpinpoint.applicationName=xxx。
链路的层级,Pinpoint前后最多支持4层,而Dynatrace没有层数的限制,可以从首到尾追踪一条完整的链路。


在首页的右侧,是三个图表。第一个图表是反映在选中的时间段内用户请求和响应时间的分布情况。第二个图表是总结所有的请求的响应时间分布。第三个图表是用户动作加载时间分布。用鼠标在图表上截取一段时间,就可以深入分析用户在此时间段的请求

例如:我们选取一个时间段进行深入分析


此页面显示此时间段内所有的用户请求,包括请求的时间,访问ip,URL,以及该web请求调用了哪些方法,以及所消耗的时间,点击每个请求的蓝色方块(mixed view),可以看到每笔请求消耗资源的状况(Heap,PermGen,cpuload)
Pinpoint的请求并不是用户实际操作的请求数,某个用户动作产生的所有请求,例如加载js,css文件,这些一个用户操作所产生的多个请求都会独立统计。所以pinpoint统计出的用户请求数远远大于用户真实操作数量

四.Agent的详细信息

Pinpoint无法监控主机的基础设施指标(例如CPU,内存,网络,磁盘使用率)Dynatrace只需要部署一个agent就可以监控该主机上的所有应用,并且实时监控主机的硬件指标,pinpoint只能监控被监控进程tomcat的资源使用情况,例如:Heap Usage,PermGen Usage,JVM/System Cpu Usage,Transactions Per Second,Active Thread,Data Source这几项



支持的技术:
根据pinpoint的github给出来的资料,pinpoint支持以下技术
JDK 6+
Tomcat 6/7/8/9, Jetty 8/9, JBoss EAP 6/7, Resin 4, Websphere 6/7/8, Vertx 3.3/3.4/3.5, Weblogic 10/11g/12c, Undertow
Spring, Spring Boot (Embedded Tomcat, Jetty, Undertow), Spring asynchronous communication
Apache HTTP Client 3.x/4.x, JDK HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient, Akka-http, Apache CXF
Thrift Client, Thrift Service, DUBBO PROVIDER, DUBBO CONSUMER, GRPC
ActiveMQ, RabbitMQ, Kafka
MySQL, Oracle, MSSQL(jtds), CUBRID, POSTGRESQL, MARIA
Arcus, Memcached, Redis(Jedis, Lettuce), CASSANDRA, MongoDB, Hbase
iBATIS, MyBatis
DBCP, DBCP2, HIKARICP, DRUID
gson, Jackson, Json Lib, Fastjson
log4j, Logback

总结:Pinpont作为一款开源的APM工具,可以监控到用户的请求,并且有分析每笔请求的方法调用树,用于监控一些小规模,不太关键的项目还是不错的,但是它功能还是不够强大,没有自动检测问题功能,不支持移动端的监控,不支持前端web页面的监控,没有用户体验数据,安装配置也比较复杂,不适合大规模的微服务环境的监控。

APM工具 Pinpoint使用体验 以及与Dynatrace的对比相关推荐

  1. apm工具pinpoint

    一.APM由来? 微服务架构下,服务按照不同的维度进行拆分,一次请求 往往需要涉及到多个服务.互联网应用构建在不同的软件模 块上,这些软件模块,有可能是由不同的团队开发.可能使 用不同的编程语言来实现 ...

  2. 开源APM监控Pinpoint的快速部署和使用

    版权声明:本文为博主原创文章,未经博主允许不得转载.欢迎访问我的博客 https://blog.csdn.net/smooth00 Pinpoint是用于大规模分布式系统的APM工具.它是在Dappe ...

  3. ARMS在APM工具选型中的实践

    简介: 当前的系统在数字化转型需求以及互联网架构实施的影响下,越来越普遍地使用了微服务架构,我们在享受微服务带来的好处(开发效率高, 独立部署, 水平扩展, 故障与资源隔离等等)外,也带来测试,事务, ...

  4. 应用性能管理工具PinPoint介绍

    概述 下面给大家介绍一个开源的 APM (Application Performance Management/应用性能管理)工具 - Pinpoint.一个分布式事务跟踪系统的平台,思路基于goog ...

  5. OCR 工具tesseract初体验

    OCR 工具tesseract初体验 @(工具使用)[工具使用, python] OCR即图片上文字识别 安装tesseract github地址 tesseract是一个命令行程序,后面安装的pyt ...

  6. Linux环境下ARM开发工具TrueSTUDIO初体验

    Linux环境下ARM开发工具TrueSTUDIO初体验 TrueSTUDIO是Atollic公司出品的ARM开发工具,号称"The best FREE C/C++ IDE for ARM® ...

  7. 猿如意前端工具集使用体验

    猿如意前端工具集使用体验 CSDN最近发布了一款应用"猿如意",里面有很多开发相关的工具软件.今天正好把手里里工作忙完,于是准备下载体验一番. 打开猿如意,输入"前端&q ...

  8. mysql数据库对比工具、mysqldiff、数据库表结构变动对比

    mysql数据库对比工具.mysqldiff.数据库表结构变动对比 1.首先你要有 Navicat Premium 15,然后找到工具-结构同步 2.找到需要对比的数据库 3.点击比对 4.点击部署 ...

  9. APM应用性能管理工具Pinpoint测评

    2019独角兽企业重金招聘Python工程师标准>>> Pinpoint(应用程序性能管理)工具使用手册 Pinpoint是一个APM(应用程序性能管理)工具,适用于用Java /  ...

最新文章

  1. 设置VSCode代码编辑器右侧的Minimap代码缩略图滚动条切换显示、隐藏的快捷键Alt+M
  2. android事件分发笔记
  3. gateway oauth2 对称加密_SpringCloud(六) oauth2认证中心(单点登陆)
  4. 南京晓庄学院java实验五_讲座|城市文化与南京世界“文学之都”的建设
  5. sklearn自学指南(part30)--特征选择
  6. 单体多字系统以及多体并行系统
  7. linux系统中-E,-S,-c的区别和作用(怎么讲代码转化为机器识别的语言)
  8. 使用Atlas进行元数据管理之Glossary
  9. 视易收银系统怎样连接服务器,视易收银系统操作方法
  10. mac去除视频水印用什么软件?
  11. Office系列办公软件中的一款-Microsoft Excel提供下载
  12. 在linux中如何修改保存gun文件_Linux下文件重命名、创建、删除、修改及保存文件...
  13. C语言 入门到精通100题
  14. linux stat获取文件大小,Linux查看文件大小的几种方法示例 stat du ls awk (转)
  15. 上海滩生鲜电商战鼓敲响,店宝宝:未来谁主沉浮?
  16. 【数字信号去噪】基于matlab稀疏性BEADS色谱基线估计和去噪【含Matlab源码 1887期】
  17. PHPh5棋牌网站制作Extension的开发
  18. python --类中的方法
  19. C#毕业设计——基于C#+asp.net+Access的网上同学录系统设计与实现(毕业论文+程序源码)——网上同学录系统
  20. DIY蓝牙音箱与听音习惯的变化

热门文章

  1. java源码之 io 流源码解读(三)
  2. 死区补偿---学习笔记
  3. 交易猫源码跳转APP 独立后台管理
  4. Codeup墓地-2118
  5. 1709 ltsb 内存占用_有问有答:任务管理器里面的GPU占用率到底是怎么算的?
  6. Ls-dyna L型截面梁的定义及截面偏移(通过APDL命令流的方法)
  7. CC2640R2F_蓝牙5.0_通信协议之控LED
  8. java swing 阴影边框
  9. 区块链-Linux下USDT测试节点搭建
  10. macOS Monterey 12新功能