为特定网络请求添加自定义监控功能(Apple 和 Android 应用)

Performance Monitoring 会收集跟踪记录,帮助您监控应用的性能。跟踪记录是两个时间点之间在应用中捕获的性能数据的报告。

Performance Monitoring 自动收集的网络请求跟踪记录包括应用的大多数网络请求。但是,该跟踪记录可能不会报告某些请求,或者您可能会使用其他库来发出网络请求。在这些情况下,您可以使用 Performance Monitoring API 手动对自定义网络请求跟踪记录进行插桩。只有 Apple 和 Android 应用支持自定义网络请求跟踪记录。

自定义网络请求跟踪记录的默认指标与 Performance Monitoring 自动收集的网络请求跟踪记录的默认指标相同,具体而言,这些指标包括响应时间、响应和请求载荷大小及成功率。自定义网络请求跟踪记录不支持添加自定义指标。

在代码中,您可以使用 Performance Monitoring SDK 提供的 API 指定自定义网络请求跟踪记录的开始和结束。

自定义网络请求跟踪记录与 Performance Monitoring 自动捕获的网络请求一起显示在 Firebase 控制台中(在跟踪记录表的“网络请求”子标签页中)。

添加自定义网络请求跟踪记录

使用 Performance Monitoring HttpMetric API 添加自定义网络请求跟踪记录以监控特定网络请求。

如需在 Performance Monitoring 中手动对自定义网络请求进行插桩,请添加类似于以下内容的代码:

Kotlin+KTX

val url = URL("https://www.google.com")
val metric = Firebase.performance.newHttpMetric(
    "https://www.google.com",
    FirebasePerformance.HttpMethod.GET,
)
metric.trace {
    val conn = url.openConnection() as HttpURLConnection
    conn.doOutput = true
    conn.setRequestProperty("Content-Type", "application/json")
    try {
        val outputStream = DataOutputStream(conn.outputStream)
        outputStream.write(data)
    } catch (ignored: IOException) {
    }

    // Set HttpMetric attributes
    setRequestPayloadSize(data.size.toLong())
    setHttpResponseCode(conn.responseCode)

    printStreamContent(conn.inputStream)

    conn.disconnect()
}

Java

HttpMetric metric =
        FirebasePerformance.getInstance().newHttpMetric("https://www.google.com",
                FirebasePerformance.HttpMethod.GET);
final URL url = new URL("https://www.google.com");
metric.start();
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/json");
try {
    DataOutputStream outputStream = new DataOutputStream(conn.getOutputStream());
    outputStream.write(data);
} catch (IOException ignored) {
}
metric.setRequestPayloadSize(data.length);
metric.setHttpResponseCode(conn.getResponseCode());
printStreamContent(conn.getInputStream());

conn.disconnect();
metric.stop();

自定义网络请求跟踪记录还支持添加自定义属性,但不支持添加自定义指标。

后续步骤

  • 针对会降低应用性能的网络请求设置提醒。例如,您可以为您的团队配置电子邮件提醒,在特定网址格式的响应时间超过您设置的阈值时收到提醒。