Datadog 是一个基于云的可观测性平台,将基础设施监控、APM、日志记录和数字体验统一在一个界面中。该平台实时从服务器、容器和移动设备收集指标、追踪和日志,使团队能够快速找到问题的根源。根据 Datadog,2025,该平台每天处理来自全球数千客户的超过 2.5 PB 数据。对于移动开发者,Datadog 为 Android 和 iOS 提供原生 SDK,并自动收集性能指标。
要点
Datadog 是一个基于云的监控和可观测性平台,由 Olivier Pomel 和 Alexis Le-Quioc 于 2010 年推出。该平台提供了一个统一的面板,用于从基础设施、应用程序和用户设备收集指标、日志和追踪。与单点解决方案不同,Datadog 将 APM、日志、基础设施监控、合成监控和 RUM 整合在一个产品中。
Datadog 的架构基于代理(agent)——安装在服务器上或嵌入到应用程序中的轻量级程序。代理收集数据并通过加密连接将其发送到 Datadog 的云基础设施。对于移动平台,Datadog 提供在 Android(Kotlin,Java)和 iOS(Swift,Objective-C)上运行的原生 SDK。
根据 Gartner Magic Quadrant for APM and Observability(2024)报告,Datadog 被公认为可观测性领域的领导者,拥有最广泛的集成功能集。该平台被 Samsung、Adidas 和 Peloton 等公司用于每天监控数百万台设备。
对于移动团队来说,Datadog 尤其有价值,因为它可以将后端性能与设备上的用户体验联系起来。如果 API 开始响应变慢,Datadog 不仅会显示服务器的响应时间,还会显示这如何影响特定手机型号的启动时间或屏幕渲染。
基础设施监控 跟踪服务器、容器和 Kubernetes 集群的 CPU、内存、磁盘和网络指标。APM(应用程序性能监控)为通过分布式系统的每个请求收集追踪,并显示每个阶段的延迟。日志管理将所有日志(从系统到应用程序)集中管理,支持全文搜索和基于日志创建指标。合成监控从不同的地理位置模拟用户场景。真实用户监控(RUM)从真实用户设备(包括手机和平板)收集数据。
Datadog 采用 按需付费 模式,按产品划分:基础设施主机、APM 主机、日志(以 GB 计)、RUM 会话和合成测试。每个产品单独计费,使您只需为使用的功能付费。基础设施监控的价格从每台主机每月 15 美元起,10,000 次 RUM 会话从 1 美元起。对于初创公司,有 Datadog for Startups 计划,提供高达 100,000 美元的信用额度。
应用程序性能监控 (APM) 在 Datadog 中是一个分布式追踪系统,跟踪每个请求从进入系统到完成所有嵌套操作的过程。APM 自动检测流行的框架和库:Spring Boot、Django、Express.js、ASP.NET Core 等。对于每个请求,APM 构建一个火焰图(flame graph)——代码所有部分执行时间的可视化表示。
火焰图显示每个函数调用或对外部服务的请求花费了多少时间。如果数据库方法执行了 2 秒而不是预期的 200 毫秒,这在图表上立即可见。Datadog APM 支持 OpenTelemetry——一个开放的遥测收集标准,允许连接来自任何兼容提供商的检测工具。
根据 Benchling Engineering Blog(2024),迁移到 Datadog APM 使团队能够将事件诊断时间从 45 分钟减少到 8 分钟,这得益于追踪与日志和指标的自动关联。关键场景是 trace-to-log 关联:通过一个 trace ID,可以找到与特定请求相关的所有日志,无需手动搜索。
服务地图 是系统所有服务及其相互连接的自动构建图形图。每个服务显示为一个节点,节点之间的连接显示了服务之间发生的调用。节点的颜色反映健康状态:绿色——正常运行,黄色——延迟增加,红色——错误。服务地图有助于快速识别哪个服务是瓶颈,即使没有预先研究架构。
import datadog.trace.api.Trace;
import io.opentelemetry.api.trace.Span;
public class PaymentService {
@Trace(resourceName = "PaymentService.processPayment")
public PaymentResult processPayment(Order order) {
Span span = Tracer.buildSpan("validate.payment").start();
try {
PaymentGateway gateway = new PaymentGateway();
PaymentResult result = gateway.charge(order.getAmount());
span.setTag("payment.provider", "stripe");
return result;
} finally {
span.close();
}
}
}
真实用户监控 (RUM) 在 Datadog 中从真实用户设备收集数据——屏幕加载时间、触摸响应、内存消耗、ANR(应用程序无响应)频率和崩溃率。适用于 Android 和 iOS 的 RUM SDK 嵌入到应用程序中,并自动创建会话,将所有事件分组到一次用户交互中。
每个 RUM 会话包含一系列事件:打开屏幕、按下按钮、网络请求、滚动。对于每个事件,Datadog 记录时间戳、持续时间和设备的技术特性:型号、操作系统、应用版本、连接类型。这允许按特定版本和设备过滤指标。例如,可以看到在使用特定 Samsung 型号的 Android 14 上启动时间增加了。
RUM 与 APM 紧密集成:如果用户会话在支付屏幕上以错误结束,Datadog 会自动显示来自后端的相应追踪。与手动匹配前端和后端日志相比,这使诊断速度提高了 5-7 倍。对于移动团队,RUM 还提供监视列表报告——关键指标恶化的每周摘要。
Datadog RUM 自动收集包含完整堆栈跟踪(包括源代码行号)的 崩溃报告。对于 Android,这通过与 ACRA 或 Firebase Crashlytics 的集成来实现;对于 iOS,通过 PLCrashReporter 实现。每次崩溃都与用户会话相关联,从而可以重现导致崩溃的操作序列。RUM 还跟踪 ANR——Android 应用程序最关键的事件之一。如果应用程序超过 5 秒没有响应,Datadog 会记录 ANR 并在 UI 阻塞时显示完整的线程转储。
日志管理 在 Datadog 中将所有应用程序和基础设施日志集中在一个具有全文搜索功能的存储库中。移动日志(分析事件、API 错误、遥测数据)通过 SDK 从设备发送,并通过通用标识符与服务器日志合并。Datadog 自动将日志解析为结构化字段:级别(INFO、WARN、ERROR)、服务、主机、时间戳、消息。
用于过滤日志的是一种支持 通配符、正则表达式和方面的自有查询语言。日志可以按模板分组——Datadog 自动检测重复模式并将其显示为一个集群。这在分析来自移动设备的数千条日志时特别有用:相同的错误被分组,开发者看到的不是 10,000 行,而是 10 个具有出现频率的集群。
指标 是以 1 秒为间隔收集的数值时间序列。Datadog 支持三种类型的指标:gauge(当前值)、count(间隔总和)和 rate(变化率)。对于移动应用程序,自定义指标可以跟踪屏幕打开次数、关键业务场景的执行时间或特定功能的使用频率。自定义指标通过 DogStatsD(一个与 StatsD 兼容的协议,带有 Datadog 扩展)发送。
import com.datadog.android.Datadog
import com.datadog.android.log.Logger
class PaymentAnalytics {
private val logger = Logger.Builder()
.setDatadogLogsEnabled(true)
.setNetworkInfoEnabled(true)
.setBundleWithTraceEnabled(true)
.build()
fun trackCheckout(orderId: String, amount: Double) {
logger.info(
"Checkout initiated for order {orderId}",
mapOf(
"order.id" to orderId,
"order.amount" to amount,
"payment.method" to "credit_card"
)
)
}
}
Datadog SDK 为 Android 和 iOS 提供了一组统一的模块:Core(初始化)、RUM(用户体验监控)、Logs(发送日志)、Trace(请求追踪)。对于 Android,SDK 通过 Gradle 添加;对于 iOS,通过 CocoaPods 或 Swift Package Manager 添加。安装后,SDK 在 Application.onCreate(Android)或 AppDelegate(iOS)中初始化,传递 client token、环境变量和应用程序名称。
对于 Android 上的网络请求自动追踪,使用 OkHttp Interceptor;对于 iOS,使用 NSURLProtocol 或 URLSession delegate。Datadog 还支持与流行的 HTTP 客户端集成:Retrofit、Apollo GraphQL、Ktor、Alamofire。连接拦截器后,每个 HTTP 请求都会自动附加到 RUM 会话和 APM 追踪,形成从客户端到服务器的统一链。
dependencies {
// 主 SDK 和 RUM 模块
implementation "com.datadoghq:dd-sdk-android-core:2.15.0"
implementation "com.datadoghq:dd-sdk-android-rum:2.15.0"
// 与 OkHttp 集成进行自动追踪
implementation "com.datadoghq:dd-sdk-android-okhttp:2.15.0"
// NDK crash reporting
implementation "com.datadoghq:dd-sdk-android-ndk:2.15.0"
}
import DatadogCore
import DatadogRUM
import DatadogLogs
@main class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
Datadog.initialize(
with: DatadogConfiguration.builder(
clientToken: "your_client_token",
environment: "production"
).build()
)
RUM.enable(
with: RUMConfiguration(applicationID: "your_rum_app_id")
)
return true
}
}
Datadog 提供 图形化仪表板编辑器,可以在其中组合指标图表、日志表、错误分布树图和 SLO 小部件。仪表板支持模板变量——例如,可以为所有服务创建一个仪表板,并通过带有服务名称的下拉列表切换上下文。每个仪表板可以通过公共链接以只读模式发布给外部利益相关方。
监视器(告警)系统允许为任何指标设置阈值条件:如果延迟超过 500 毫秒超过 5 分钟——发送告警到 Slack、PagerDuty 或电子邮件。Datadog 支持复合条件:“如果 5xx 错误 > 1% 且请求数 > 1000/分钟,将优先级提升为严重”。对于移动团队,回归检测监视器特别有用——Datadog 自动将当前指标与历史基线进行比较,并在统计显著恶化时发出告警。
根据 Gartner Peer Insights(2024),使用具有自动关联的 Datadog 监视器的团队的平均告警解决时间(MTTR)在实施后的第一个月下降了 35%。这是因为每个告警不仅包含触发条件,还包含指向相关仪表板、日志和追踪的链接——开发者无需在工具之间切换。
常见问题
Datadog 的独特之处在于其统一的平台,在一个界面中结合了 指标、日志、追踪和 RUM。与 Grafana + Prometheus(仅指标)或 ELK(仅日志)不同,Datadog 在所有数据类型之间提供内置关联,无需手动配置集成。
价格从每月 10,000 次 RUM 会话 1 美元 起。对于每月 50,000 次会话的小型项目,费用约为 5 美元。APM 和日志单独计费。对于初创公司,有 Datadog for Startups 计划,第一年提供高达 100,000 美元的信用额度。
Datadog SDK 支持 Android(API 21+,Kotlin 和 Java)、iOS(iOS 13+,Swift 和 Objective-C)和 React Native。对于 Flutter 和 Xamarin,有社区集成可用。SDK 通过 Maven Central、CocoaPods 和 Swift Package Manager 分发。
Datadog 提供 数据清理——自动从日志和 RUM 数据中删除 PII。可以配置掩码规则:用哈希或星号替换电子邮件、电话和信用卡。数据在传输(TLS 1.3)和存储(AES-256)期间加密。
是的,可以仅连接 日志 模块而无需 APM 和 RUM。在这种情况下,您只需为日志量付费。Datadog 对每个产品单独计费,允许从一个模块开始,并根据需要添加其他模块,而无需重新集成。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。