引言:为什么监控对Swift应用至关重要
现代基于Swift的iOS和macOS应用在高度竞争的环境中运行。用户期望即时响应、稳定运行且无故障。如果没有监控系统,您可能只有在客户投诉后才知道服务器宕机或出现严重错误。本文将介绍如何组织有效的Swift应用监控:收集哪些指标、如何配置警报以及自动化流程。
1. Swift应用的关键指标
监控始于选择正确的指标。对于iOS和macOS应用,需要跟踪三组指标。
1.1. 性能与UI
- FPS(每秒帧数) — 帧率。低于30 FPS表明动画或渲染存在问题。
- 启动时间 — 冷启动和热启动。从加载开始到第一帧出现进行测量。
- 内存消耗 — 通过Instruments或Xcode内置指标跟踪内存泄漏。
import MetricKit
class PerformanceMonitor: NSObject, MXMetricManagerSubscriber {
override init() {
super.init()
MXMetricManager.shared.add(self)
}
func didReceive(_ payloads: [MXMetricPayload]) {
for payload in payloads {
if let fpsData = payload.applicationLaunchMetrics {
print("平均FPS: \(fpsData.histogrammedApplicationResumeTime)")
}
}
}
}
1.2. 网络请求与API
- 服务器响应时间(延迟)。
- 错误代码(4xx, 5xx)。
- 成功/失败请求数量。
import Foundation
class NetworkMonitor {
static func trackRequest(_ url: URL, duration: TimeInterval, statusCode: Int) {
let metrics: [String: Any] = [
"url": url.absoluteString,
"duration_ms": duration * 1000,
"status": statusCode
]
// 发送到分析系统
AnalyticsService.sendEvent("network_request", parameters: metrics)
}
}
1.3. 崩溃与错误
使用Crashlytics(Firebase)或自定义处理器。不仅要记录致命错误,还要记录可恢复错误。
import Crashlytics
class CrashHandler {
static func logError(_ error: Error, context: String) {
Crashlytics.crashlytics().record(error: error, userInfo: ["context": context])
}
}
2. 指标收集工具
工具的选择取决于项目规模。我们来看三个流行的选项。
2.1. Firebase Crashlytics + Performance
Google提供的免费工具。可以跟踪崩溃、网络请求和自定义指标。通过Swift Package Manager集成。
// 通过SPM安装: firebase-ios-sdk
import FirebasePerformance
class PerformanceTracer {
static func startTrace(name: String) -> Trace {
let trace = Performance.startTrace(name: name)
return trace
}
static func stopTrace(_ trace: Trace) {
trace.stop()
}
}
2.2. Sentry
支持分布式追踪的高级系统。适用于企业级解决方案。
import Sentry
SentrySDK.start { options in
options.dsn = "https://examplePublicKey@o0.ingest.sentry.io/0"
options.tracesSampleRate = 1.0 // 100%追踪
}
// 手动捕获错误
SentrySDK.capture(error: NSError(domain: "com.example", code: 404))
2.3. New Relic
强大的实时性能监控工具。支持SwiftUI和UIKit。
// 通过CocoaPods集成: pod 'NewRelicAgent'
import NewRelic
NewRelic.start(w