通过阿里云托管的Elasticsearch应用性能监控APM(Application Performance Monitoring)服务,结合阿里云Elasticsearch,您可以搭建应用性能监控系统,实现系统的可观测性。本文介绍阿里云Elasticseasrch APM服务的概念、架构及功能,以及如何快速接入并使用APM。
背景信息
可观测性的本质是度量您的基础设施、平台和应用程序,以了解它是如何运行的。与传统监控运维相比,目前主流的监控更加注重发现与预警问题,而可观测性的终极目标是为一个复杂分布式系统所发生的一切给出合理解释。监控更注重软件的交付过程中以及交付后的服务状态,而可观测性则要为全研发与运维的生命周期负责。
日志、基础架构指标以及APM应用程序性能监测构成了可观测性的三要素。其中,APM弥补了指标和日志之间的差距。虽然日志和指标往往更具交叉性,涉及基础架构和组件,但APM更侧重于应用程序,允许IT和开发人员监测其堆栈的应用层,包括最终的用户体验。将APM添加到系统监测中,您可以:
- 了解服务的时间花在什么上,以及它崩溃的原因。
- 了解服务如何相互交互,以及它的可视化瓶颈。
- 主动发现并修复性能瓶颈和错误。
- 提高开发团队的生产力。
- 在浏览器中跟踪终端用户体验。
APM通常被应用于以下场景:
- 用户体验监控:通过监控用户的行为提升用户体验。例如监控用户和Web界面或客户端的交互,并记录交互事件的时间。
- 运行时应用程序架构:理解服务间的依赖关系、架构中应用程序交互的网络拓扑。
- 业务事务(Business transaction):产生有意义的SLA报告,并从业务角度提供有关应用程序性能的趋势信息。
- 组件监控(Deep dive component monitoring):通常需要安装Agent并且主要针对中间层,包括Web服务器、应用和消息服务器等。健壮的监控应该能显示代码执行的清晰路径,因为这一维度和上述第二个维度紧密相关,APM产品通常会将这两个维度合并作为一个功能。
- 分析或报告(Analytics/Reporting):将从应用程序中收集的一系列指标数据,标准化地展现成应用性能数据的通用视图。
阿里云托管的Elastic APM和目前比较流行的开源APM系统Apache SkyWalking的能力对比情况请参见能力对比。
架构及数据模型
阿里云Elasticsearch应用性能监控分析服务,支持基于开源Elastic APM构建云上一键托管的APM Server服务,并灵活对接阿里云Elasticsearch服务,能够为您提供高效的应用程序性能优化与监控能力。整体功能模块架构如下。

Elastic APM由四个模块组成,详细信息请参见应用性能监控分析服务介绍。其中APM Agent采集器从其监测的应用程序中收集不同类型的信息和数据,这些被称为事件。采集器收集数据后将这些事件流式传输到APM Server,由Server验证并处理事件。事件支持的类型包括Spans、Transaction、Errors和Metrics:
- Spans:范围事件类型。包含有关已执行的特定代码路径的信息。它们从活动的开始到结束进行度量,可以与其他Span具有父或子关系。
- Transaction:事务事件类型。是一种特殊的Span(没有父Span,只能从中派生出子Span,可以理解为“树”这种数据结构的根节点),具有与之关联的额外元数据。你可以将Transactions视为您在服务中衡量的最高级别的工作,例如服务中的请求、提供的HTTP请求或运行的特定的后台作业等。
- Errors:错误事件类型。包含相关的原始异常信息,或发生异常时创建的日志信息。
- Metrics:指标事件类型。APM Agent自动获取基本的主机级别指标,包含系统和进程级别的CPU和内存指标。除此之外还可获取特定于代理的指标,例如Java Agent中的JVM指标和Go代理中的Go运行时指标。
前提条件
创建阿里云Elasticsearch 7.10版本实例,具体操作请参见创建阿里云Elasticsearch实例。购买时,建议您选择日志增强版,以满足应用性能监控场景下低成本海量数据写入及存储的需求,详细信息请参见购买页面参数(增强版)。
使用限制
阿里云APM Server仅支持与阿里云Elasticsearch 7.10版本集成。