Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

代码银月使
• 阅读 1899

概述

pinpoint简介

  • 何为pinpoint: pinpoint是一个分析大型分布式系统的平台,提供解决方案来处理海量跟踪数据,主要面向基于tomcat的Java 应用。
  • 为何使用它:和如今相比, 过去的因特网的用户数量相对较小,而因特网服务的架构也没那么复杂。web服务通常使用两层(web 服务器和数据库)或三层(web服务器,应用服务器和数据库)架构。然而在如今,随着互联网的成长,需要支持大量的并发连接,并且需要将功能和服务有机结合,导致更加复杂的软件栈组合。更确切地说,比三层层次更多的n层架构变得更加普遍。系统的复杂度因此提升。系统越复杂,越难解决问题,例如系统失败或者性能问题。在三层架构中找到解决方案还不是太难,仅仅需要分析3个组件比如web服务器,应用服务器和数据库,而服务器数量也不多。但是,如果问题发生在n层架构中,就需要调查大量的组件和服务器。另一个问题是仅仅分析单个组件很难看到大局;当发生一个低可见度的问题时,系统复杂度越高,就需要更长的时间来查找原因。最糟糕的是,某些情况下我们甚至可能无法查找出来。为了解决复杂架构下的拓扑解析与性能分析,pinpoint应运而生。

功能、优势与架构

  • 功能

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

    • 非入侵式:不需要修改应用的代码,即可完成agent的部署。
    • 资源消耗:总体资源消耗只提高了3%左右。
  • 架构

    • HBase (用于存储数据)
    • Pinpoint Collector (信息的收集者,部署在tomcat中)
    • Pinpoint Web (提供WEB_UI界面,部署在tomcat中)
    • Pinpoint Agent (附加到 java 应用来做采样)

Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

相关资料

如果想要进一步了解这款强大的APM软件,请访问以下链接:

云帮最佳实践

出发点

  • 化繁为简: 如果您通读了pinpoint安装部署的官方文档,会发现在传统架构下部署可用的pinpoint实例是一件很繁琐的事情。无论是部署它的四个组件(HBASE、Collector、Web-UI、Agent),还是部署完成后进行相应的配置,都需要操作人员具备一定的技术水平。为此,云帮平台在云市中发布了pinpoint应用,由此可以实现一键部署pinpoint应用。通过这种方式,极大的简化了部署流程的同时,也降低了操作门槛。
  • 微服务化: 云帮平台是一款无服务器PaaS平台,它通过容器化的方式发布了pinpoint应用,这可以抹去传统架构下扩容难、升级难等缺陷。通过在云帮平台上应用管理界面中进行一些简单的操作,可以根据业务量的大小轻松实现pinpoint的扩容伸缩;K8S+Docker的容器化技术,确保了升级只需升镜像的简单途径。从此,对于企业与个人的IT系统的运维开销将降低很多。
  • 归根结底: 云帮平台已经发布了成熟的应用,可以轻松构建一套基于openJDK的java环境/Tomcat。加之目前发布的pinpoint应用,归根结底,云帮可以为企业或者个人,打造简单易用,基于openJDK的java程序开发与调试环境。而在云市中发布pinpoint,正是其中重要的一环。

云市安装

  • 从云市安装 :是在云帮平台上部署应用非常简单的一种方式。这种部署方式对于像pinpoint这种多组件的复杂应用来说,最大程度的降低了部署难度与工作量。
  • 进入云帮,选择 从云市安装

Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

  • 在搜索栏中搜索 pinpoint

Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

  • 选择 应用分组

Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

  • 点击 确定 ,等待一小段时间后,应用就部署完成了

Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

访问WEB-UI

  • 我们可以通过访问 pinpoint-web 应用,来进入到pinpoint的UI界面。

<center><img src="https://static.goodrain.com/i...; style="border:1px solid #eee;max-width:100%"/></center>

  • 在我们的默认设置中,pinpoint应用 已经监控了它自身的 collectorweb组件。在进入UI界面后,就可以发现二者已经存在于应用列表中了。

Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

添加被监控的对象

  • 传统架构下的pinpoint,需要在被监控的对象里附加Agent,并通过修改配置文件使之生效。在云帮平台上,我们将这两个步骤也做了相应的简化。

    • 好雨官方OpenJDK镜像 为基础制作的应用,都默认集成了Pinpoint-Agent,不需要二次安装。
    • 云帮平台利用设置 环境变量 的方式,代替了配置文件,键值对形式的环境变量非常简单易用。
  • 下面以Tomcat为例,介绍添加被监控对象的方法:选择 好雨官方tomcat镜像 部署

Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

  • 点击 高级设置

Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

  • 添加 环境变量 如下:

Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

  • 通过 添加依赖 关联Pinpoint-Collector

Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

  • 对于已部署的应用,也可以通过 应用管理界面 中的 依赖设置 选项卡,来配置相应的服务依赖和环境变量。
  • 环境变量 详解:
变量名 含义 默认值
ENABLE_APM 激活/关闭Agent的开关 false
APP_NAME pinpoint中应用的名称 SERVICE_ID

DEMO实例:监控分析b3log-solo应用

solo简介

  • solo 是一款由java编写的开源博客软件,云帮在对其进行整合之后,将与pinpoint一道,同期在云市中发布。

Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

效果展示

  • 在按上文中的说明配置了Pinpoint-Collector的服务依赖、打开ENABLE_APM开关后,就可以在pinpoint的UI界面中发现它了。solo后端对接的MySQL数据库也被pinpoint自动发现了。

Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

  • 清晰的代码级输出,让DEBUG工作事半功倍。

Pinpoint-java性能分析最佳实践_开源PaaS Rainbond

-END-

进一步了解Rainbond v3.5.1

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Stella981 Stella981
3年前
Skywalking是什么
Skywalking是一个分布式追踪(Trace)系统。除了Skywalking之外,比较出名的分布式追踪系统还有Dapper、鹰眼、Pinpoint、Zipkin等等。要是大家不了解Trace系统,可以先Google,基本上都是根据Google的论文(http://bigbully.github.io/Dappertransl
Stella981 Stella981
3年前
SkyWalking链路监控(一):SkyWalking快速搭建
简介当分布式系统服务比较多,特别是微服务,出现故障就很难排查。所以需要借助APM系统进行排查(ApplicationPerformanceManagement,即应用性能管理),SkyWalking是APM系统的一种,类似的产品还有CAT、Zipkin、Pinpoint。SkyWalking和Pinpoint相比其他系统,做到了无侵入性
Stella981 Stella981
3年前
PinPoint安装部署
1.前期准备1.1准备三台服务器,分别用来安装pinpoint和pinpointagent和hbase、zookeeper我安装它用到的3台服务器,一台主要部署pinpoint的主程序,一台主要部署pinpointagent1.jdk8Java运行环境2.hbase1.2数据库,用来存储监控信息
Easter79 Easter79
3年前
SpringCloud系列:利用SpringCloud Sleuth和Zipkin实现分布式服务调用链跟踪(一)
一、概述在单体应用时代,接口缓慢能够被迅速定位和发现,而随着分布式微服务的流行,服务之间的调用关系越来越复杂,错中复杂的调用关系使得我们想找到某一个接口的效率缓慢变得非常困难,而分布式服务调用跟踪组件就解决了这个问题。Sleuth是SprinCloud在分布式系统中提供追踪解决方案,zipkin是基于GoogleDapper的分布式链路调用监
Stella981 Stella981
3年前
Dubbo 整合 Pinpoint 做分布式服务请求跟踪
在使用Dubbo进行服务化或者整合应用后,假设某个服务后台日志显示有异常,这个服务又被多个应用调用的情况下,我们通常很难判断是哪个应用调用的,问题的起因是什么,因此我们需要一套分布式跟踪系统来快速定位问题,Pinpoint可以帮助我们快速定位问题(当然,解决方案也不止这一种)。什么是Pinpoint摘自Pinpoint学习笔记
Stella981 Stella981
3年前
RabbitMQ 消息中间件搭建详解
1.RabbitMQ简介消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包
Stella981 Stella981
3年前
Mycat 分布式事务的实现
Mycat分布式事务的实现博客分类:java数据库引言:Mycat已经成为了一个强大的开源分布式数据库中间件产品。面对企业应用的海量数据事务处理,是目前最好的开源解决方案。但是如果想让多台机器中的数据保存一致,比较常规的解决方法是引入“协调者”来统一调度所有节点的执行。 本文选自《分布式数据库架构及企业实践——基于Mycat中间件》
3A网络 3A网络
2年前
5 步教你将 MRS 数据导入 DWS
5步教你将MRS数据导入DWSMapReduce服务(MapReduceService,简称MRS)是一个基于开源Hadoop生态环境而运行的大数据集群,对外提供大容量数据的存储和分析能力,可解决用户的数据存储和处理需求。用户可以将海量业务数据,存储在MRS的分析集群,即使用Hive/Spark组件保存。Hive/Spark的数据
javalover123 javalover123
2年前
轻量级分布式日志追踪-Tlog快速入门
公司目前还没有上SkyWalking、Pinpoint等分布式追踪系统,所以先用个轻量级的吧。Tlog只生成TraceId写入日志文件,没有收集、存储、查询,所以轻量
从ClickHouse通往MySQL的几条道路 | 京东物流技术团队
一、应用背景简介ClickHouse是Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快1001000倍。ClickHouse的性能超过了目前市场上可比的面向列的DBMS,每秒钟每台服务器每秒处