-
什么是APM系统 APM–Application Performance Managment(Monitor)。 系统可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这就是APM系统, -
常见的单机产品,推荐xrebel。 XRebel官方简明教程: http://zeroturnaround.com/software/xrebel/quick-start/ 官方下载地址:https://zeroturnaround.com/software/xrebel/download/#!/have-license -
分布式跟踪分布式的产品比较多 1、Pinpoint github地址:GitHub - naver/pinpoint: Pinpoint is an open source APM (Application Performance Management) tool for large-scale distributed systems written in Java. 对java领域的性能分析有兴趣的朋友都应该看看这个开源项目,这个是一个韩国团队开源出来的,通过JavaAgent的机制来做字节码代码植入,实现加入traceid和抓取性能数据的目的。 NewRelic、Oneapm之类的工具在java平台上的性能分析也是类似的机制。 2、SkyWalking github地址:wu-sheng/sky-walking 这是国内一位叫吴晟的兄弟开源的,也是一个对JAVA分布式应用程序集群的业务运行情况进行追踪、告警和分析的系统,在github上也有400多颗星了。 功能相对pinpoint还是稍弱一些,插件还没那么丰富,不过也很难得了。 3、Zipkin 官网:OpenZipkin · A distributed tracing system github地址:GitHub - openzipkin/zipkin: Zipkin is a distributed tracing system 这个是twitter开源出来的,也是参考Dapper的体系来做的。 Zipkin的java应用端是通过一个叫Brave的组件来实现对应用内部的性能分析数据采集。 Brave的github地址:https://github.com/openzipkin/brave 这个组件通过实现一系列的java拦截器,来做到对http/servlet请求、数据库访问的调用过程跟踪。 然后通过在spring之类的配置文件里加入这些拦截器,完成对java应用的性能数据采集。 4、CAT github地址:GitHub - dianping/cat: Central Application Tracking 这个是大众点评开源出来的,实现的功能也还是蛮丰富的,国内也有一些公司在用了。 不过他实现跟踪的手段,是要在代码里硬编码写一些“埋点”,也就是侵入式的。 这样做有利有弊,好处是可以在自己需要的地方加埋点,比较有针对性;坏处是必须改动现有系统,很多开发团队不愿意。 5、Xhprof/Xhgui 这两个工具的组合,是针对PHP应用提供APM能力的工具,也是非侵入式的。 Xhprof github地址:GitHub - preinheimer/xhprof: XHGUI is a GUI for the XHProf PHP extension, using a database backend, and pretty graphs to make it easy to use and interpret. Xhgui github地址:GitHub - perftools/xhgui: A graphical interface for XHProf data built on MongoDB -
Apache Skywalking skywalaking总体架构分为三部分
skywalking-collector:链路数据归集器,数据可以落地ElasticSearch,单机也可以落地H2,不推荐,H2仅作为临时演示用
skywalking-web:web可视化平台,用来展示落地的数据
skywalking-agent:探针,用来收集和发送数据到归集器 安装部署 官方网站 http://skywalking.apache.org/ 分别下载skywalking-collector.zip,skywalking-web.zip,skywalking-agent.zip
下载 http://skywalking.apache.org/downloads/
Global全局维度 Services load:服务每分钟请求数 Slow Services:慢响应服务,单位ms Un-Health services(Apdex):Apdex性能指标,1为满分。 ○ Apdex 一个由众多网络分析技术公司和测量工业组成的联盟组织,它们联合起来开发了“应用性能指数”即“Apdex”(Application Performance Index),用一句话来概括,Apdex是用户对应用性能满意度的量化值 ○ http://www.apdex.org/ Slow Endpoints: 慢响应端点,单位ms Global Response Latency:百分比响应延时,不同百分比的延时时间,单位ms Global Heatmap:服务响应时间热力分布图,根据时间段内不同响应时间的数量显示颜色深度 Service服务维度 Service Apdex(数字):当前服务的评分 Service Avg Response Times:平均响应延时,单位ms Successful Rate(数字):请求成功率 Servce Load(数字):每分钟请求数 Service Apdex(折线图):不同时间的Apdex评分 Service Response Time Percentile:百分比响应延时 Successful Rate(折线图):不同时间的请求成功率 Servce Load(折线图):不同时间的每分钟请求数 Servce Instances Load:每个服务实例的每分钟请求数 Slow Service Instance:每个服务实例的最大延时 Service Instance Successful Rate:每个服务实例的请求成功率 Instance Service Instance Load:当前实例的每分钟请求数 Service Instance Successful Rate:当前实例的请求成功率 Service Instance Latency:当前实例的响应延时 JVM CPU:jvm占用CPU的百分比 JVM Memory:JVM内存占用大小,单位m JVM GC Time:JVM垃圾回收时间,包含YGC和OGC JVM GC Count:JVM垃圾回收次数,包含YGC和OGC Endpoint Endpoint Load in Current Service:每个端点的每分钟请求数 Slow Endpoints in Current Service:每个端点的最慢请求时间,单位ms Successful Rate in Current Service:每个端点的请求成功率 Endpoint Load:当前端点每个时间段的请求数据 Endpoint Avg Response Time:当前端点每个时间段的请求行响应时间 Endpoint Response Time Percentile:当前端点每个时间段的响应时间占比 Endpoint Successful Rate:当前端点每个时间段的请求成功率
|