什么是应用程序性能监测?

应用程序性能监测含义

APM(应用程序性能监测)是组织快速识别和解决应用程序和代码中任何性能问题的过程。

APM 解决方案可收集和监测来自各种网站、软件应用程序和服务的遥测数据,并对数据进行分析。团队借此能够获得对应用程序的端到端可见性,进而理解应用程序和服务的依赖关系,并解决任何错误或速度变慢的问题。此外,APM 解决方案还会存储并利用历史数据来揭示趋势,并根据关键性能指标(如延迟和吞吐量以及各项业务 KPI)检测异常值。

应用程序性能监测有何作用?

应用程序性能监测提供有关应用程序运行情况的持续且详细的见解。团队可以利用这些见解,更加积极主动地解决问题,而不是等到客户投诉了才有所行动。APM 有多种用途。例如,团队可以针对用户体验过程中的性能下降设置告警,衡量最新版本的影响,并就哪些地方需要改进做出明智的决策。它还可用于帮助进行根本原因分析并缩短平均检测时间 (MTTD) 和平均解决时间 (MTTR)

为什么 APM 如此重要?

应用程序是现代组织的命脉。它们是人们日常使用的产品、服务和工具的门户,而且也变得越来越复杂。随着分布式应用程序(云原生技术微服务)的兴起,团队根本无法跟上大量遥测数据涌入的速度。他们需要一种方法来监测所有信息,从而提供卓越的用户体验。

APM 可确保应用程序按预期运行。为了保持客户的信心,APM 工具可以提醒团队注意潜在问题,以便快速解决这些问题。

APM 的发展历程

自 1990 年代问世以来,APM 便为 IT 团队提供了全方位了解应用程序的能力。多年来,已有多家公司尝试过分布式追踪。但直到 2010 年代,市场上才出现功能更强大的 APM 解决方案。这些平台解决方案提供更高级的跟踪和端到端监测功能。

APM 与 Observability

从表面上看,可观测性和 APM 有相似之处。两者都使用遥测技术来收集数据,并提供有关性能的见解。尽管 APM 更侧重于应用程序(跟踪和监测事务),但可观测性兼顾了应用程序和基础架构性能。可观测性能够深入挖掘技术细节,从而提高对系统的了解。它可以通过关联日志、指标和跟踪来帮助团队了解性能问题背后的背景和根本原因。

应用程序性能监测如何工作?

APM 会使用一套工具和方法来监测和管理软件应用程序的性能。APM 工具通常包括监测响应时间、吞吐量和错误率等关键指标,以识别和诊断性能瓶颈和问题。

APM 工具还可以提供详细的跟踪和调试信息,以帮助开发人员了解和修复代码中的问题。这通常包括告警和报告功能,以让利益相关方始终了解应用程序的性能。

APM 代理

代理是指通常装载于应用程序的软件。它负责监测痕迹和遥测数据,并将数据传输到 APM 服务器和/或其他监测工具。代理可用来监测各种系统和应用程序。您可以对代理进行配置,以收集有关性能特定方面的数据。

APM 检测

检测是向应用程序添加监测代码以收集性能数据的过程。它可用于收集响应时间、错误率、资源利用率、日志等指标,以及应用程序在运行状况和性能方面的其他关键指标。

可以使用特定于供应商的 APM SDK(软件开发工具包)或开放标准(如 OpenTelemetry )手动进行检测,其中会使用跨度来启动和停止跟踪。

另外,也可以使用自动检测代码的代理来完成该操作。安装代理后,团队可以对应用程序或事务的特定部分进行检测,然后将数据发送到终端(通常是 APM 平台)。通常在工具的 UI 中或通过 API 进行检测。配置示例包括环境名称、采样率和其他指标。

APM 分析和告警

一旦收集到性能数据,就可以进行分析。选择工具时,请务必确保工具包含各种仪表板和视图,以便轻松跟踪用户体验,并快速发现错误和问题。大多数团队都会围绕报告的问题开始调查,然后努力找出其根本原因。采用平台方法执行 APM 可以避免在此阶段进行工具切换。还可以设置警报以避免将来出现问题。

APM 可测量哪些指标?

APM 工具可衡量:

  • 服务器健康状况:监测服务器 CPU 使用情况、内存需求和读写速度
  • 错误率:跟踪性能下降并识别问题
  • 响应时间:确定应用性能是否受到影响
  • 实例:了解有多少服务器或应用实例正在运行,以便高效扩展和管理总体成本。该指标对于基于云的应用程序至关重要。
  • 请求率:评估用户流量,以了解出现峰值或用户不活跃的原因
  • 可用性:跟踪应用程序的运行时间

APM 有哪些优势?

当应用程序停止工作时,最好能做到提前了解情况,以免给用户带来负面体验。借助 APM,团队可以快速识别和解决问题,甚至防止将来出现问题。借助全面的 APM 工具,团队可以:

  • 提高稳定性和增加运行时间
  • 减少事件发生
  • 更快地解决问题
  • 发布高质量软件
  • 确定基础架构改进
  • 提高工作效率
  • 创建更好的用户体验
  • 增加收入

APM 面临哪些挑战?

APM 工具并非没有挑战。各团队需要处理的实时数据流规模庞大。复杂的分布式应用程序(尤其是使用云原生技术的应用程序)可能会使 APM 检测成为一项挑战。如果环境中存在问题或复杂的根本原因分析案例,则许多工具可能会难以应对。

APM 解决方案需要监测端到端事务、应用程序和代码级别的性能,以帮助组织实现全方位覆盖。只需一个单一平台就能做到全面监测,并能简化工作流和加快问题解决速度。选择能够结合使用多种监测方法来实现业务目标的正确 APM 解决方案非常重要。

APM 工具的关键功能

在选择合适的 APM 工具时应注意什么?虽然有几种不同的 APM 解决方案可以监测端到端事务、应用程序和代码级性能,但选择一个能够满足您现在和将来技术需求的解决方案非常重要。

技术能力

为组织创建检查清单。然后,您可以根据需要比较工具的各项功能。APM 技术功能的部分示例包括:

  • 跟踪网站和/或应用程序的性能
  • 映射和管理应用程序和服务依赖关系
  • 收集分布式跟踪以实现端到端可见性
  • 提供实时用户监测(客户端和服务器)
  • 将应用性能与业务目标联系起来
  • 利用机器学习和基于 AI 的分析
  • 支持多种数据类型、数据源和语言

端到端可见性

APM 数据能够让组织了解其应用程序中实际发生的情况。但是,您需要能够有效地监测所有内容,才能清楚地了解应用程序的工作方式。

由于单个跟踪仅显示了该过程的一部分,因此 APM 工具应该更进一步,实现对整个事务过程的监测。然后,再将这些跟踪链接在一起,即可从鸟瞰图转入代码级别的问题。

端到端可见性也是 AIOps 的一个关键要素。

集成

通过与第三方服务和应用程序集成,可让您的 APM 工具无缝融入组织的更大的生态系统中。从身份验证到 CI/CD 框架,事先调查这些集成非常重要。

易于使用

您的组织中会有许多人需要访问 APM 功能。请提供直观的 UI 来满足他们的需求。此外,还要验证部署、管理和扩展 APM 解决方案的难易程度。

部署选项

如果您希望降低运营和管理成本,则可以考虑基于云的 SaaS 选项。但是,还有其他部署选项需要考虑。虽然一些 APM 工具可以支持多云或混合策略,但其他工具可能会根据您首选的云服务提供商而受到限制。

支持开放标准/开放数据

可观测性空间正在不断发展。随着众多新工具和标准进入市场,您需要一个能够灵活适应的平台。使用 OpenTelemetry 等开放标准和技术也有助于确保您的工具集适应未来的发展。

了解有关遥测数据构建块的更多信息

安全性

在评估您的工具时,请考虑供应商对安全的承诺。APM 工具的构建和交付方式可能会增强或削弱您现有的安全框架。各组件之间的流量应该加密。第三方扩展也可能带来安全问题。此外,请确保您的 APM 工具支持具有细粒度权限的现有身份访问管理解决方案。

借助 Elastic 进行应用程序性能监测

2025 年,Elastic 在 Gartner® 可观测性平台 Magic Quadrant™ 中获评“领导者”。Elastic 通过内置 APM 监测功能,为公司打造全栈可观测性。团队不需要使用多种工具,即可全方位查看自己负责的产品。借助 Elastic,团队能够:

  • 跨混合云和多云的可见性:利用对云原生技术(如 Kubernetes无服务器)的可观测性,加速您的数字转型。Elastic 还提供对 OpenTelemetry 的原生支持。
  • 改进的故障排除和效率:打破整个组织中的孤岛,并通过单一视图将指标、日志和跟踪整合到您的环境中。
  • 强大的机器学习和分析:利用创新的 AIOps 功能(例如 APM 关联和异常检测)为您的团队自动进行根本原因分析
  • 用户体验监测:通过真实用户监测 (RUM) 详细了解用户如何与您的网站互动。通过综合监测,先于客户主动发现网络性能问题。

了解有关 Elastic 和 APM 的更多信息

APM 术语表

分布式追踪

分布式跟踪是一种跟踪和分析请求与响应在应用程序中从前端到后端服务的流动情况的方法。它有助于团队了解应用程序不同部分之间的交互方式,并识别潜在的瓶颈或问题。

分布式追踪可视化

跨度

跨度是工作流中的每个环节。它们衡量的是从活动开始到结束的全过程,并包含相关执行信息。常见的跨度属性包括:

  • 开始和完成时间
  • 名称
  • 类型

APM 事务和跨度图

事务

事务是对应于一个逻辑工作单元的事件。它们通常与受监测服务的传入请求或类似任务相关联。事务可以包含多个跨度,以及其他属性信息,例如记录该事件时所处环境的相关数据。事务的一些示例包括:

  • 向服务器发出请求
  • 批量作业
  • 后台作业

在 APM 解决方案中,事务通常是指 Web 事务,包括从提交请求到收到响应的所有活动。

跟踪

跟踪是应用程序执行的操作的详细代码级记录。它们测量与应用程序请求相关的的方法或函数调用的状态和持续时间。

服务

服务是一种独立的软件,用于执行特定任务或一组任务。它们被设计为松散耦合且高度可重用,并且经常用于微服务架构中。服务通常使用容器技术(如 Docker 和 Kubernetes)进行部署。

OpenTelemetry

OpenTelemetry 是一个开源框架,用于从应用程序、服务和库中收集和导出遥测数据。它提供了用于检测代码和收集数据的库和 API,以及用于分析、可视化和存储数据的工具和集成。

OpenTelemetry 不受供应商限制且可扩展。它被认为是收集和导出遥测数据的标准。