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

应用程序性能监测 (APM) 含义

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

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

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

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

为什么 APM 很重要?

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

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

APM 的发展历程

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

APM 与可观测性

从表面上看,可观测性和 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 技术能力的部分示例:

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

端到端可见性

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

由于痕迹展示的只是这个过程的一部分,因此 APM 工具应该更进一步,实现对事务整个过程的监测。然后,再将痕迹联系起来,即可从鸟瞰图转入代码级别的问题。

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

集成

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

简单易用

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

部署选项

如果您希望降低运营和管理成本,则可以考虑基于云的 SaaS 选项。但是,还有其他部署选项需要考虑。虽然有些 APM 工具支持多云或混合云部署策略,但有些工具可能会因您偏好的云提供商而存在局限性。

支持开放标准/开放数据

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

进一步了解遥测数据构建块

安全性

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

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

2023 年,Elastic 连续第三年在 Gartner® APM 和可观测性 Magic Quadrant™ 中被评为有远见者。Elastic 通过内置 APM 监测功能,为公司打造全堆栈可观测性。团队不需要使用多种工具,即可全方位查看自己负责的产品。借助 Elastic,团队能够:

  • 在混合云和多云环境中实现可见性:通过提供对云原生技术(如 Kubernetes无服务器技术)的可观测性,加快数字化转型的步伐。Elastic 还提供对 OpenTelemetry 的原生支持。
  • 加大故障排查力度并提高效率:打破整个组织中的孤岛,并将指标、日志和痕迹信息整合在一个视图中,以便了解环境内部的情况。
  • 强大的 Machine Learning 和分析:使用创新的 AIOps 功能(例如 APM 关联和异常检测),为团队自动执行根本原因分析
  • 用户体验监测:通过真实用户监测 (RUM),详细了解用户与网站的互动情况。秉持主动原则,利用合成监测,先于客户发现网络性能问题。

深入了解 Elastic 和 APM

APM 术语表

分布式跟踪

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

Distributed tracing visualization

跨度

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

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

APM transactions and spans diagram

事务

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

  • 对服务器的请求
  • 批量作业
  • 后台作业

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

痕迹

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

服务

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

OpenTelemetry

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

OpenTelemetry 是一个对供应商中立的框架,并且可扩展。它被认为是收集和导出遥测数据的标准。