pinpoint

Pinpoint 类加载器问题

淺唱寂寞╮ 提交于 2019-12-12 17:22:41
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> pinpoint的插件包中有依赖第三方jar的类,这样类加载器加载不会有问题? 这些插件是pinpoint的加载器加载的?还是应用程序加载器加载的? 答: 应用的类加载器中, boot是bootStrapClassLoader加载 lib是pinpoint自定义的类加载器加载, tools下的jar包pinpoint类加载器加载。 plugin下的jar包,这些只有某个插件被用到了, 才会被应用类加载器加载。如果没用用到这个插件的话,这个插件jar包不会被加载。 ClassFileTransformerDispatcher com.navercorp.pinpoint.profiler.plugin.MatchableClassFileTransformerGuardDelegate.transform(ClassLoader, String, Class<?>, ProtectionDomain, byte[]) 来源: oschina 链接: https://my.oschina.net/xiaominmin/blog/3142272

Pinpoint 源码分析(一)

我是研究僧i 提交于 2019-12-12 15:17:59
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 简单的说它可以用来追踪分布式系统的执行链路,记录执行时间、参数、异常等各种信息,可以作性能分析、监控预警、故障分析等用途。 假如读者已经对pinpoint有直观的认识,从githup download了相应源码,在本机编译运行quickstart应用,体验过了quickstart中pinpoint采集testApp接口调用数据,上报collect,在web中查看到了链路图,详细查看某个方法的执行链路。那么可以开始阅读本源码分析文章。 Interceptor 源码分析 如果已经阅读了pinpoint的介绍文章,那么就应该知道,pinpoint使用了java字节码增强技术ASM(ASM的详细信息可以自行google),配合java探针技术,可以在应用类装载前,改写类结构,比如增加字段、增加访问方法get/set、增加方法、改写方法。pinpoint就是通过这一系列技术达到对客户代码无侵入,用户使用pinpoint无需改写应用代码,无需增加锚点,pinpoint自动帮你完成一切。pinpoint的plugin就是完成对用户代码改写、增强的模块,pinpoint提供了很多内置插件,用户也可以按规范编写自己的插件。而我们马上要分析的Interceptor就是插件的基础,通过Interceptor来对方法做功能增强。

Pinpoint技术概述

和自甴很熟 提交于 2019-12-12 12:17:24
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Pinpoint是一个分析大型分布式系统的平台,提供解决方案来处理海量跟踪数据。2012年七月开始开发,2015年1月9日作为开源项目启动。 本文将介绍Pinpoint: 什么促使我们开始搭建它, 用了什么技术, 还有Pinpoint agent是如何优化的。 开始动机 & Pinpoint特点 和如今相比, 过去的因特网的用户数量相对较小,而因特网服务的架构也没那么复杂。web服务通常使用两层(web 服务器和数据库)或三层(web服务器,应用服务器和数据库)架构。然而在如今,随着互联网的成长,需要支持大量的并发连接,并且需要将功能和服务有机结合,导致更加复杂的软件栈组合。更确切地说,比三层层次更多的n层架构变得更加普遍。SOA或者微服务架构成为现实。 系统的复杂度因此提升。系统越复杂,越难解决问题,例如系统失败或者性能问题。在三层架构中找到解决方案还不是太难,仅仅需要分析3个组件比如web服务器,应用服务器和数据库,而服务器数量也不多。但是,如果问题发生在n层架构中,就需要调查大量的组件和服务器。另一个问题是仅仅分析单个组件很难看到大局;当发生一个低可见度的问题时,系统复杂度越高,就需要更长的时间来查找原因。最糟糕的是,某些情况下我们甚至可能无法查找出来。 这样的问题也发生在NAVER的系统中

pinpoint采样原理分析

陌路散爱 提交于 2019-12-12 11:58:31
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 使用 pinpoint 进行全链路监控时,支持对请求的采样,某条请求是否被采样,取决于整个链路开始的机器。该机器使用特定的采样算法。采样的标志会一直在链路中透传。比如在http里面,会在header里面增加 Pinpoint-Sampled 字段,使用不同的值表示是否采样。 s0 :此条请求不采样 s1 :此条请求采样 下面分为接收端和发送端,分别看下采样的处理。另外在记录 span 或者 spanEvent 时,需要注意对是否采样的判断。 接收端采样处理 接收端接收到请求之后,会去查看请求里面是否有 Pinpoint-Sampled 字段和 Pinpoint-TraceID 等字段。分为下面几种情况: 有 Pinpoint-Sampled 字段,并且值为 s0 ,表示此条请求不采样。 没有 Pinpoint-Sampled 字段,但是有 Pinpoint-TraceID 等字段,表示此条请求被采样。 没有 Pinpoint-Sampled 字段,也没有 Pinpoint-TraceID 等字段,认为接收该请求的机器,是整条链路的第一个机器,或者链路信息在前面有丢失。 第一种情况,处理比较简单,调用下面的方法,创建 DisableTrace ,表示此 Trace 不被采样,并绑定到线程上下文中。 final

Spring cloud微服务安全实战-7-11PinPoint+SpringBoot环境搭建

杀马特。学长 韩版系。学妹 提交于 2019-12-10 12:50:05
微服务的最后一个组件, 调用链监控,一个请求进来以后,经过N多个微服务,例如a调用了b。b又调用了c,那么在这个过程中看到,整个的调用的链路,然后每一段调用所耗费的时间,帮你去分析你的系统如果出现瓶颈以后,瓶颈到底在什么地方。 pinpoint 点击看一下在线的demo 提供的一些应用的列表 选择order。这张图就是order这个服务的调用图。 出去调用的一层,分别调用了product和payment还有mysql数据库 outbound选择两层的话 图就会刷新。每一个箭头上都有数字,数字就是调用的次数。 请求的分布,绿点是请求成功的 鼠标框选这些时间比较长的请求 跳转到页面,把你选择的请求列出来。 选中一条记录,下面就列出来,详细点的调用链。 当前这次请求,也就是选中的这条记录 的,调用情况 timeline每一步请求,所占用的时间 混合视图 所有看到的信息整合到一起。可以很清楚的借助这样一个工具来分析你的链路。 inspector 服务器内存的使用情况 整合pinpoint 找到官方提供的docker的环境 docker的compose配置文件。 把这个项目克隆到本地 克隆到本地 需要的所有组件都装好了 启动docker环境。 访问端口8079 接入应用 不需要写代码就可以接入pinpoint,其他的方案都需要代码侵入。 下载解压出来。有个pinpoint.config文件。

微服务-技术专区-监控专区(Skywalking与Pinpoint) - 监控对比分析-阶段1

夙愿已清 提交于 2019-12-06 16:20:18
   由于公司目前有200多微服务,微服务之间的调用关系错综复杂,调用关系人工维护基本不可能实现,需要调研一套全链路追踪方案,初步调研之后选取了skywalking和pinpoint进行对比; 选取skywalking和pinpoint对比的原因是:两者都使用探针(agent)技术进行信息采集,集成到项目内时不用修改业务代码,避免造成后期难以推进的问题; 以下是进行的一些维度的对比,主要从功能性需求和非功能性需求方面做参考: 功能性需求对比 支持协议语言有 Skywalking: Java、C#, PHP, Node pinpoint:java,php UI的对比比较 两种ui相类似,sw服务信息加载速度会快一些 定制化与扩展性比较 都可自定义plugin,使用探针,都可以进行扩展,据说sk扩展性更好 存储 Skywalking:支持各种类型存储,es,mysql,h2 pinpoint:只支持hbase 警告 Skywalking: config/alarm-settings.xml设置警告规则 pinpoint:需要额外引入mysql发送警告 jvm监控 都包含,pinpoint相对更全面一些,从页面查看比较类似    跟踪粒度 需要使用对应的插件,可以到方法级,展示sql,每个方法调用的时间 服务监控 skywalking支持的维度有:CPU使用率,SLA,RT,CPM

【APM】Pinpoint 安装部署(一)

可紊 提交于 2019-12-05 22:28:10
  本例介绍Pinpoint告警的相关内容,Pinpoint参考 【APM】Pinpoint 安装部署(一)   Pinpoint Web会定期检查应用程序的状态,并在满足某些预配置条件(规则)的情况下触发警报。   这些条件(默认情况下)由Web模块中的后台批处理过程每3分钟检查一次(默认情况下),使用的是最后5分钟的数据。 一旦满足条件,批处理过程就会向注册到用户组的用户发送短信/电子邮件。   本例Pinpoint版本是:1.8.5,下载地址: https://github.com/naver/pinpoint/releases/tag/1.8.5   参考git文档: https://naver.github.io/pinpoint/alarm.html   参考博客: https://skyao.gitbooks.io/learning-pinpoint/content/alarm/code_implementation.html Pinpoint告警原理   1、下载 源码,通过源码解析:     Pinpoint中有一个匹处理类,BatchConfiguration.java,此类会进行批任务处理 1 @Configuration 2 @Conditional(BatchConfiguration.Condition.class) 3 @ImportResource(

【APM】Pinpoint 使用教程(二)

别来无恙 提交于 2019-12-05 14:12:09
  本例介绍Pinpoint使用教程   Pinpoint安装部署参考: 【APM】Pinpoint 安装部署(一) 查看应用调用关系拓扑图 进入pintpoint-》选择应用-〉选择查看的时间周期,即可查看应用调用关系拓扑图,图文说明如下:        通过上图,可以在左边看到应用的调用关系及调用次数,方便分析部署情况   可以通过右边的响应时间分布图,可以分析用户每次访问时长,出现超时响应时及时处理。 查看应用服务器单个节点情况   点击右侧View Servers-》弹出框左侧选择对应节点-》中间部分显示此节点的调用情况        通过上图,可以有针对性的对单节点的访问情况进行分析 分析部分调用请求情况   在响应时间分布图中-》左键选择需求分析的请求-》弹出选择请求的列表页面-》在列表中选择一个请求-》下半部分显示此请求调用树信息        弹出选中请求的列表页面        通过此部分,可以对单个请求进行分析,查看请求在各个环节中的好事,以及出现异常的信息,方便开发及时定位问题点。 2、查看调用情况 来源: https://www.cnblogs.com/h--d/p/11926907.html

【Java】Pinpoint 安装部署

懵懂的女人 提交于 2019-12-05 11:21:24
Pinpoint简介   Pinpoint是用Java / PHP编写的大规模分布式系统的APM(应用程序性能管理)工具。受Dapper的启发,Pinpoint提供了一种解决方案,可通过跟踪跨分布式应用程序的事务来帮助分析系统的整体结构以及其中的组件如何互连。   特点: 一目了然地了解您的应用程序拓扑 监控应用程序的实时 获得每笔交易的代码级可见性 安装APM代理而无需更改任何代码 对性能的影响最小(资源使用量增加约3%)   参考git地址: https://github.com/naver/pinpoint Pinpoint安装部署   前期准备      本例在ContenOS 7.4 下安装,本次需要安装pinpoint和pinpoint-agent和hbase、zookeeper,先在git上将需要用到的安装包都下载好      hbase下载地址: https://hbase.apache.org/downloads.html ,pinpoint下载地址: https://github.com/naver/pinpoint/releases      安装它用到的2台服务器,一台主要部署pinpoint和pinpoint-agent,一台主要部署hbase、zookeeper jdk8 --- Java运行环境 hbase-1.2.7 --- 数据库

Centos6.X安装Pinpoint

江枫思渺然 提交于 2019-12-05 02:23:40
环境准备: JDK   jdk1.8.0_121 zookeeper    zookeeper-3.4.9 hbase    hbase-1.2.4-bin tomcat    apache-tomcat-8.5.14.zip Pinpoint Collector     pinpoint-collector-1.6.2.war Pinpoint Web   pinpoint-web-1.6.2.war Pinpoint Agent    pinpoint-agent-1.6.2.tar.gz JDK下载与安装 从oracle官网下载、安装jdk-1.8.0 $ cd /data/pin $ wget http://files.saas.hand-china.com/hitoa/1.0.0/jdk-8u121-linux-x64.tar.gz $ tar -xzvf jdk-8u121-linux-x64.tar.gz 配置 在/etc/profile文件配置环境变量 export JAVA_HOME=/data/u01/jdk1.8.0_121 export JRE_HOME=$JAVA_HOME/jre export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib