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

应用程序性能监控的含义

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 技术能力的一些示例包括

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

端到端可见性

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

由于单独的跟踪仅显示了故事的一部分,因此您的 APM 工具应该更进一步,并在整个过程中监控事务。然后,可以将跟踪链接在一起,从鸟瞰图深入到代码级问题。

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

集成

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

易用性

您组织内有各种人员需要访问 APM 功能。通过直观的 UI 满足他们的需求。此外,验证部署、管理和扩展 APM 解决方案的难易程度。

部署选项

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

支持开放标准/开放数据

可观测性领域正在不断发展。随着新工具和标准的进入市场,您需要一个能够适应的灵活平台。使用 OpenTelemetry 等开放标准和技术还可以帮助您面向未来地使用工具集。

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

安全

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

使用 Elastic 进行应用程序性能监控

2024 年,Elastic 被评为 Gartner® 可观测性平台魔力象限中的领导者。Elastic 为公司提供具有内置 APM 监控的全栈可观测性方法。团队无需使用多个工具即可获得其产品的 360 度视图。Elastic 为团队提供

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

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

APM 词汇表

分布式跟踪

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

Distributed tracing visualization

跨度

跨度是工作流程的每个部分。它们测量从活动开始到结束的时间,并包含执行信息。常见的跨度属性是

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

APM transactions and spans diagram

事务

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

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

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

跟踪

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

服务

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

OpenTelemetry

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

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