APM(应用性能管理)系统概述
APM是一种对应用程序性能和可用性进行监控管理的系统。其核心内容包括Logs(日志)、Traces(链路追踪)和Metrics(报表统计)。简单来说,APM通过各类探针收集并上报数据,进而收集关键指标,并结合数据展示功能实现对应用程序性能和故障管理的系统化解决方案。
APM系统的核心特性
1. 低侵入性:监控系统应尽可能减少对业务系统的干扰,保持对使用方的透明性,以减轻开发人员的负担并降低接入门槛。
2. 低性能影响:全链路监控系统常需对各种应用中间件进行日志数据采集,通常在核心业务流程中“埋点”或放置agent。系统应将CPU和内存耗用控制在参考阈值内,并确保APM系统的故障不会影响业务系统的正常使用。
3. 实时性:APM系统需提供实时有效的监控数据展示功能,帮助相关人员理解系统行为,为流程、架构、代码优化以及扩容缩容、服务限流降级提供客观的数据参考。
主流监控系统介绍
CAT:由国内美团点评开源的监控系统,支持多种语言,包括Java、C/C++、Node.js等。使用CAT时需在应用程序中埋点,对代码具有一定侵入性。
Zipkin:由公司开发并开源的监控系统,使用Java语言实现。其侵入性相对CAT较低,但仍然需要对配置文件进行修改。
Pinpoint:一个由韩国团队开源的产品,运用字节码增强技术实现代码无侵控。它支持Java和PHP语言,数据存储采用HBase,探针收集的数据粒度细致。
SkyWalking:国人开源的APM系统,主要开发人员来自华为。SkyWalking支持多种语言探针,数据存储支持Mysql、Elasticsearch等。其采用字节码注入的方式实现无侵入代码监控。
SkyWalking详细介绍与使用教程
1. SkyWalking地址
2. SkyWalking架构概述
SkyWalking逻辑上分为四部分:探针、平台后端、存储和用户界面。
3. SkyWalking的启动与整合
以Windows版本为例,进入下载的SkyWalking目录,双击startup.bat启动。成功后访问管理台地址,默认端口为8080。在Spring Boot项目中整合SkyWalking时,需引入相关jar包,并配置相关参数以启用agent包进行数据采集。
4. 探针数据采集与日志整合
以Logback为例,通过配置占位符%tid实现与SkyWalking链路的整合。还需注意agent包的启动方式和相关配置参数的设置。
5. 全局链路ID获取与异步线程链路打点
异步线程链路监控需手工打点,可通过使用SkyWalking提供的包装类或注解来实现。对于中间件的链路监控,可使用SkyWalking提供的注解@Trace来间接实现。
SkyWalking的使用效果与常用用户界面
1)链路监控:通过打印的traceId或请求路径、方法名快速定位链路。
2)其他监控项:如CPU、内存、JVM等的监控。
3)全链路拓扑图:可展示服务之间的调用关系。