admin管理员组文章数量:1794759
JAVA探针
一、需求
Tomcat: (1)模块启动时间 (2)模块交互耗时
二、现状现代APM体系,基本都是参考Google的Dapper(大规模分布式系统的跟踪系统)的体系来做的。通过跟踪请求的处理过程,来对应用系统在前后端处理、服务端调用的性能消耗进行跟踪,关于Dapper的介绍可以看这个链接:bigbully.github.io/Dapper-translation/ 下面重点选5个比较有名的server端探针进行简单介绍:
2.1 Pinpoint(开源)github地址:github/naver/pinpoint JAVA领域的性能分析的开源项目,这个是一个韩国团队开源出来的,通过JavaAgent的机制来做字节码代码植入,实现加入traceid和抓取性能数据的目的。 NewRelic、Oneapm之类的工具在java平台上的性能分析也是类似的机制。
2.2 Zipkin(开源)官网:OpenZipkin · zipkin.io/ github地址:github/openzipkin/zipkin 这个是twitter开源出来的,也是参考Dapper的体系来做的。 Zipkin的java应用端是通过一个叫Brave的组件来实现对应用内部的性能分析数据采集。 Brave的github地址:github/openzipkin/brave 这个组件通过实现一系列的java拦截器,来做到对http/servlet请求、数据库访问的调用过程跟踪。 然后通过在spring之类的配置文件里加入这些拦截器,完成对java应用的性能数据采集。
2.3 CAT(开源)github地址:github/dianping/cat 这个是大众点评开源出来的,实现的功能也还是蛮丰富的,国内也有一些公司在用了。 不过他实现跟踪的手段,是要在代码里硬编码写一些“埋点”,也就是侵入式的。 这样做有利有弊,好处是可以在自己需要的地方加埋点,比较有针对性;坏处是必须改动现有系统,很多开发团队不愿意。
2.4 NewRelic(闭源,代码不混淆)newrelic/java
2.5 听云(闭源,代码混淆)www.tingyun/tingyun_server.html 探针能力介绍:doc.tingyun/server/html/phpzhichiliebiao.html
三、探针能力汇总 3.1 支持(1)应用运行环境:PHP, Java, .NET,Node.js, Python,Ruby等 (2)云:阿里云、腾讯云、AWS、金山云、青云、华为云等 (3)Database:MySQL, Oracle, MS SQL Server, PostgreSQL等 (4)Framework:Spring, Yii,Django,Tomcat,JBoss,WebLogic等 (5)NoSQL:Memcached,MongoDB,Redis等非关系型数据库服务 (6)API:监控HTTP、Dubbo、Thrift协议下当前应用调用的外部服务,如微博、微信第三方API接口等,并支持跨应用分析
3.2 核心功能(1)web应用过程:分析url调用过程中性能消耗原因,抓取超过阈值url的详细数据 (2)数据库性能:支持多种数据库类型的监测,定位并追踪慢SQL语句问题 (3)错误分析:记录错误发生时的详细信,统计应用错误率,定位问题具体至代码行 (4)外部API调用:可以监测所有服务端应用外部调用API的耗时,并进行汇总统计 (5)线程剖析:可以实现生产环境下实时在线的线程剖析,可在运行时了解代码性能 (6)NoSQL分析:实时监控Memcache, MongoDB,Redis等NoSQL数据库的性能问题 (7)JVM性能:实时监控 JVM 运行状态,通过图表展示 JVM 内存分配情况、内存使用情况、垃圾收集信、类加载数量、JVM 线程信以及会话信。 (8)HTTP 会话:分析每个应用程序的 HTTP 会话数,包括:活跃、过期、拒绝的会话。
3.3 基于javaAgent和Java字节码注入技术的java探针(1)springCloud自带了这些功能 (2)asm、javassist之类的 (3)springboot的Actuator扩展下也可以
《参考:www.jianshu/p/f74d0065d3bf》
版权声明:本文标题:JAVA探针 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686916977a118010.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论