APM(Application Performance Monitoring)是一种全面的软件性能观察方法,包括实时收集指标、跟踪请求和诊断错误。根据Gartner IT Glossary, 2024的数据,APM结合了三个关键方向:用户体验监控、应用程序架构故障检测以及执行数据分析以深入诊断事件。
要点
APM(Application Performance Monitoring)是应用程序性能管理的学科,涵盖收集、可视化和分析软件运行数据。与单独指标(CPU、内存)的点状监控不同,APM提供整体视图:应用程序从用户角度如何表现,其组件如何交互以及瓶颈出现在哪里。
APM的概念形成于2010年代,随着从单体应用程序向微服务架构的过渡。当服务数量超过10-15个时,传统的监控方法已无法工作——无法确定哪个服务导致了整个请求的延迟。APM解决方案通过分布式跟踪和自动构建服务地图解决了这个问题。
根据Grand View Research(2024)的数据,APM市场估值达82亿美元,年增长11.5%。主要驱动力——向云端迁移、微服务数量增加以及移动应用程序和网络服务中用户体验质量要求的提高。
现代APM建立在三种数据类型之上,它们共同构成应用程序状态的完整图景。指标是数值聚合:响应时间、请求数量、错误百分比。它们回答"发生了什么"的问题,并允许基于阈值设置警报。
跟踪(分布式跟踪)回答"为什么会发生"的问题。每个传入请求都会通过所有微服务、数据库和外部调用进行跟踪。APM系统结合指标和跟踪:如果响应时间指标增加,开发人员转到跟踪仪表板,查看导致延迟的确切请求,并按每个服务进行细分。
日志提供上下文——具体的错误消息、变量值、调用堆栈。现代APM平台(Datadog、New Relic、Grafana)通过共同的trace_id将日志与跟踪关联起来,允许从指标图表转到特定请求的日志。根据Datadog(2025)的数据,日志与跟踪的关联将事件诊断平均时间从45分钟减少到12分钟。
| 信号 | 问题 | 单位 |
|---|---|---|
| 指标 | 发生了什么? | 数值聚合 |
| 跟踪 | 为什么会发生? | Span和跟踪 |
| 日志 | 具体出了什么问题? | 文本记录 |
经典APM架构由三个层次组成:代理、收集器和后端。代理是嵌入到应用程序中或在其旁边运行(sidecar)的库。代理拦截传入和传出的调用,收集运行时数据,并通过安全通道将其发送到收集器。
Java的APM代理可以通过javaagent在JVM级别连接,自动检测所有HTTP请求、数据库调用、消息队列和外部API。对于移动平台,代理作为SDK连接并从设备收集指标。New Relic Agent(适用于Android)例如,通过OkHttp、HTTP客户端和WebView自动跟踪所有网络请求。
import com.newrelic.agent.android.NewRelic;
public class MainApplication extends Application {
public void onCreate() {
super.onCreate();
NewRelic.withApplicationToken("YOUR_TOKEN")
.start(this);
}
}
该代码在Android应用程序中初始化New Relic Agent。启动后,代理自动收集网络请求指标、错误、ANR和UI性能数据,无需额外检测每个屏幕。代理在后台线程中工作,不影响应用程序主界面的性能。
收集器从数千个代理接收数据,聚合指标,进行跟踪采样,并将数据存储在具有热存储和冷存储功能的长期存储中。APM后端提供仪表板、警报、服务地图和用于与外部系统(Slack、PagerDuty、Jira、ServiceNow)集成的API。Datadog每秒通过其分布在20多个全球区域的收集器处理超过1000万个数据点,以实现最小的传输延迟。
Apdex(Application Performance Index)是一个用于衡量用户对应用程序响应时间满意度的开放标准。Apdex值的计算公式为:(满意用户数 + 容忍用户数 / 2)/ 用户总数。结果是从0到1的数字,其中1表示所有用户都满意。
Apdex阈值为每个应用程序单独设置。对于移动应用程序,典型的满意度阈值是响应时间不超过1.5秒,容忍阈值不超过4.5秒。任何超过4.5秒的都被认为是不可接受的。Apdex评分0.94及以上被认为是生产环境的优秀指标。
Apdex不仅用作质量指标,还用作警报的阈值。如果Apdex在10分钟内降至0.85以下,APM系统会向值班团队发送通知。这是一种比依赖于响应时间绝对值更平衡的方法,响应时间可能因一天中的时间和负载而波动。
移动APM有其特殊性:应用程序在用户设备上运行,该设备可能处于不同的网络条件,具有不同数量的可用内存和操作系统版本。Mobile APM必须考虑所有这些因素,并提供按设备型号、操作系统版本、地区和通信运营商划分的指标细分。
移动APM代理在设备上收集指标,并以1-5分钟的间隔分批(batch)发送到服务器。这将对用户流量的影响降至最低。如果连接丢失,数据将保存在本地缓存中,并在下次连接时发送。Firebase Performance和Dynatrace Mobile支持在网络丢失时自动重传。
在移动开发中,除了标准APM指标外,还会添加特定指标:冷启动时间、滚动时的FPS、消耗的内存量、ANR频率(Android)和看门狗终止次数(iOS)。New Relic Mobile额外跟踪地图视图、缓存使用百分比和特定ViewController的渲染时间。
import NewRelic
class ProfileViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NewRelic.startInteraction(withName: "ProfileView")
}
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
NewRelic.stopCurrentInteraction()
}
}
Swift代码为用户个人资料屏幕创建交互跟踪。New Relic将自动测量数据加载时间、UI渲染以及在此屏幕显示期间执行的所有网络请求。
APM市场由数十种解决方案代表,它们在监控深度、成本和受支持的平台上各不相同。Datadog APM在统一界面中集成指标、跟踪和日志方面处于领先地位。New Relic为移动平台提供最详细的跟踪。Dynatrace使用Davis AI引擎自动检测问题的根本原因。
| 平台 | 移动代理 | 分布式跟踪 | 免费套餐 |
|---|---|---|---|
| Datadog | iOS、Android | 是 | 否 |
| New Relic | iOS、Android | 是 | 100 GB/月 |
| Dynatrace | iOS、Android | 是 | 15天 |
| Grafana | 通过OpenTelemetry | 是 | 是(开源) |
APM平台的选择取决于团队规模、技术栈和预算。对于初创企业,Firebase Performance结合Grafana用于后端是最佳选择。对于具有高SLA要求的企业项目——Datadog或Dynatrace,配备完整的可观测性工具集和对事件根本原因的AI分析支持。
常见问题
普通监控跟踪基础设施指标:CPU、内存、磁盘。APM关注应用程序层面:特定事务的执行时间、SQL查询、微服务之间的HTTP调用。APM可以显示CPU正常,但应用程序因数据库查询缓慢而变慢。
单个服务,标准监控+日志记录即可满足基本覆盖。APM在服务数量达到5个或更多,且请求在单个用户场景中通过多个服务时变得必要。APM可以回答哪个服务拖慢了整个请求流程以及瓶颈在哪里。
APM代理在服务器上消耗1-3%的CPU和50-200 MB的内存。许可成本每台主机每月从15到80美元不等。遥测流量根据跟踪强度,每台主机每天1-10 GB。OpenTelemetry + Grafana是商业APM的免费替代方案。
是的,移动APM代理可以自主工作。即使应用程序没有服务器部分,它们也会在设备上收集指标:启动时间、FPS、崩溃、对外部API的网络请求。数据在设备连接到互联网后发送到APM平台。
基本APM配置(阈值、仪表板、警报)设置一次,并在架构变化或性能基准测试后进行修正。代理配置通过APM平台的管理面板自动更新,无需重新发布应用程序或更改代码。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。