APM监控系统详解(定义原理及4款监控工具)

APM监控系统详解(定义原理及4款监控工具)-mikechen

APM监控系统简介

APM,全称是Application Performance Management,是一种用于监测、分析、以及优化应用程序性能的工具。

 

APM监控系统特点

APM功能和特点,主要包含如下:

  1. 性能监测: APM系统能够监测应用程序的各种性能指标,比如:响应时间、吞吐量、延迟、错误率等。
  2. 事务追踪: APM系统能够跟踪和分析应用程序的事务,从请求的起始点到结束点,以展示请求路径和每个组件的性能情况。
  3. 错误和异常追踪: APM系统可以捕获应用程序中的错误和异常,并提供详细的堆栈跟踪和错误信息,帮助用户定位和解决问题。
  4. 性能优化: APM系统能够识别性能瓶颈和热点,帮助用户发现影响性能的因素,并提供建议和指导以进行优化。
  5. 自动化告警: APM系统可以设置阈值和规则,一旦性能达到预定的警戒水平,系统会自动发送警报通知,使团队能够及时采取行动。
  6. 分布式追踪: APM系统支持分布式追踪,用于监测跨多个服务和组件的请求流程,以便识别整个分布式系统中的性能问题。
  7. 可视化界面: APM系统通常提供交互式的可视化界面,以图表、图形和仪表板的形式展示性能数据,使用户能够更容易地理解和分析。

 

APM监控系统原理

目前大部分的APM系统都是基于Google的Dapper原理实现,我们简单来看看Dapper中的概念和实现原理。

如下图所示:

APM监控系统详解(定义原理及4款监控工具)-mikechen

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专注于链路和性能监控,是我们国人开发的,在国内使用较多。

APM监控系统详解(定义原理及4款监控工具)-mikechen

 

2.Zipkin

Zipkin是另一个开源的分布式追踪系统,用于监测分布式系统中的请求路径和性能,是Twitter开发的。

APM监控系统详解(定义原理及4款监控工具)-mikechen

 

3.Seluth

SleuthSpring Cloud的链路追踪组件,与Spring Boot和Spring Cloud的紧密集成。

 

4.Pinpoint

Pinpoint 是韩国Naver研发团队开源的,专专注于链路分析和应用性能监控系统,采用Java语言编写,埋点无侵入,稳定且易用。

 

APM监控系统总结

总之,APM监控系统主要用于监测、分析和优化应用程序性能,可以帮助用户实时了解应用的性能情况,识别问题并优化性能。

评论交流
    说说你的看法