KKMonitor

网络监控

通过状态码、延迟和端点指标,监控 Android 和 iOS 中的 HTTP 请求、响应和失败。

概述

Measure 会捕获应用的网络请求、响应和失败,帮助您了解 API 的表现。

每个请求都会记录 URL、HTTP 方法、状态码、延迟和失败原因。为了展示聚合指标,URL 会自动归组为端点模式

请求和响应的 Header/body 只会针对您主动选择的 URL 采集,因此默认不会收集敏感数据。可以在 Dashboard 的 HTTP 活动设置中选择这些 URL。

除了 HTTP 事件,Measure 还会记录连接变化,便于判断问题是否来自网络本身。

自动追踪

来自以下客户端的请求会被自动捕获。

Android

添加 Measure Android Gradle 插件启用自动采集。来自 OkHttp(版本 4.7.05.3.2)和 HttpURLConnection(SDK 0.18.0 及更高版本)的请求会被自动采集。

iOS

来自 URLSession 的请求会被自动采集,包括使用它的第三方库发出的请求。

添加拦截器

一些客户端需要一次性设置,才能采集它们发出的请求。

Retrofit (Android)

Retrofit 在 OkHttp 上运行,但将其作为传递依赖项拉入,并且自动检测无法达到传递依赖项。如果您的项目仅依赖于 Retrofit,请使用以下方法之一来跟踪请求。

将 OkHttp 声明为直接依赖项。 将 OkHttp 版本固定在您的 build.gradle.kts 中。之后自动采集无需更改代码即可工作:

dependencies {
    implementation("com.squareup.retrofit2:retrofit:<version>")
    implementation("com.squareup.okhttp3:okhttp:<version>")
}

手动添加拦截器。 构建供 Retrofit 使用的 OkHttpClient,并添加 Measure 的拦截器和事件监听器工厂:

val client = OkHttpClient.Builder()
    .addInterceptor(MeasureOkHttpApplicationInterceptor())
    .eventListenerFactory(MeasureEventListenerFactory(null))
    .build()

val retrofit = Retrofit.Builder()
    .baseUrl("https://api.example.com")
    .client(client)
    .build()

手动跟踪请求

对于任何未自动采集的 HTTP 客户端,请使用 trackHttpEvent 自行记录每个请求。使用 getCurrentTime 记录开始和结束时间,这样即使设备时钟发生变化,duration 也能保持正确。

import sh.measure.android.Measure

val startTime = Measure.getCurrentTime()
// make the request
val endTime = Measure.getCurrentTime()

Measure.trackHttpEvent(
    url = "https://api.example.com/users",
    method = "GET",
    startTime = startTime,
    endTime = endTime,
    statusCode = 200,
)
import Measure

let startTime = UInt64(Measure.getCurrentTime())
// make the request
let endTime = UInt64(Measure.getCurrentTime())

Measure.trackHttpEvent(
    url: "https://api.example.com/users",
    method: "GET",
    startTime: startTime,
    endTime: endTime,
    statusCode: 200
)

配置选项

使用 Dashboard 中的 Adaptive Capture 控制采集哪些网络数据。这样无需发布应用,就可以修改配置。

  • 采样率:收集的 HTTP 事件的比例。默认收集所有这些。
  • 收集或忽略 URL:打开或关闭特定 URL 的收集。
  • 请求 body 采集:记录请求 body 和请求 Header 的 URL。默认关闭。
  • 响应 body 采集:记录响应 body 和响应 Header 的 URL。默认关闭。
  • 屏蔽的 Header:永远不会采集的 Header。AuthorizationCookie 和其他敏感 Header 始终会被屏蔽。

HTTP 活动有关每个设置的详细信息。