APM监控系统简介
APM,全称是Application Performance Management,是一种用于监测、分析、以及优化应用程序性能的工具。
APM监控系统特点
APM功能和特点,主要包含如下:
- 性能监测: APM系统能够监测应用程序的各种性能指标,比如:响应时间、吞吐量、延迟、错误率等。
- 事务追踪: APM系统能够跟踪和分析应用程序的事务,从请求的起始点到结束点,以展示请求路径和每个组件的性能情况。
- 错误和异常追踪: APM系统可以捕获应用程序中的错误和异常,并提供详细的堆栈跟踪和错误信息,帮助用户定位和解决问题。
- 性能优化: APM系统能够识别性能瓶颈和热点,帮助用户发现影响性能的因素,并提供建议和指导以进行优化。
- 自动化告警: APM系统可以设置阈值和规则,一旦性能达到预定的警戒水平,系统会自动发送警报通知,使团队能够及时采取行动。
- 分布式追踪: APM系统支持分布式追踪,用于监测跨多个服务和组件的请求流程,以便识别整个分布式系统中的性能问题。
- 可视化界面: APM系统通常提供交互式的可视化界面,以图表、图形和仪表板的形式展示性能数据,使用户能够更容易地理解和分析。
APM监控系统原理
目前大部分的APM系统都是基于Google的Dapper原理实现,我们简单来看看Dapper中的概念和实现原理。
如下图所示:
Dapper的原理是基于概率采样、跨度记录和上下文传递,通过将跨度信息传递并集中存储,实现了对分布式系统中请求路径的监测和分析。
1. 采样策略
APM系统会在应用程序中插入代理或使用特定的集成方式,来收集应用性能数据,包括请求路径、跨度信息、性能指标等
每个请求都有一个唯一的Trace ID,而采样策略基于Trace ID的一部分。
2. 跨度(Span)
在Dapper中每个跟踪的操作或事件被称为一个跨度(Span)。
跨度记录了:操作的开始时间、结束时间、操作名称、标签等信息。
多个跨度可以组成一个请求的完整追踪路径:一个追踪通常由多个分布式跨度(Span)组成。
3. 上下文传递
Dapper使用一个上下文传递机制,确保在分布式系统中,跨度信息能够正确地传递和关联。
每个跨度都包含一个Span ID和一个Parent ID,用于建立跨度之间的关系。
4. 本地追踪
在每个节点(服务)上,Dapper会在请求处理过程中生成跨度,并将跨度信息传递到远程服务,以建立整个分布式系统的请求追踪路径。
5.数据存储
收集到的性能数据会被存储在后端的存储系统中,通常是数据库或分布式存储。这些数据将被用于分析、查询和报告。
6. 可视化界面
Dapper提供了一个简单的可视化界面,可以用于查询和展示跨度数据。用户可以使用界面查看请求的追踪路径、跨度信息和性能指标。
一次调用流程,大致分为如下:
- 请求进入系统: 当一个请求进入系统时,例如通过HTTP请求,Dapper开始跟踪该请求的路径和性能。
- 根跨度生成: 在请求的入口点,一个根跨度(Root Span)被创建。根跨度代表整个请求的起始点。
- Trace ID生成: 生成一个全局唯一的Trace ID,用于标识整个请求的跨度链。
- 采样决策: 根据采样策略,Dapper决定是否采样这个请求。如果通过采样,将进行跟踪,否则将不会记录跨度。
APM监控系统工具
主流的APM系统主要包含如下4款:
1.SkyWalking
SkyWalking是一个开源的应用性能监控和分析系统,SkyWalking专注于链路和性能监控,是我们国人开发的,在国内使用较多。
2.Zipkin
Zipkin是另一个开源的分布式追踪系统,用于监测分布式系统中的请求路径和性能,是Twitter开发的。
3.Seluth
Sleuth是Spring Cloud的链路追踪组件,与Spring Boot和Spring Cloud的紧密集成。
4.Pinpoint
Pinpoint 是韩国Naver研发团队开源的,专专注于链路分析和应用性能监控系统,采用Java语言编写,埋点无侵入,稳定且易用。
APM监控系统总结
总之,APM监控系统主要用于监测、分析和优化应用程序性能,可以帮助用户实时了解应用的性能情况,识别问题并优化性能。
mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获知最新一线技术干货!
