即使API在过去几个月内拥有超过30k的样本,我也无法在Firebase性能监控中查看详细的网址格式。
它只显示如下的根API域:
api.myAppName.in/**
而不是
api.myAppName.in/app/v3/user/*/profile/
如果您将鼠标悬停在控制台上,控制台只会在API上显示“未分类”标签
api.myAppName.in中的详细网址格式将在我们收集时显示 更多的样本。收集后最多允许24小时。
但如前所述,它已经过了几个月,超过30万个样本。
如果有帮助,我正在使用改造。
答案 0 :(得分:7)
我已经联系了Firebase支持人员,他们的答案是:
...
如here所述,虽然Performance Monitoring报告了针对您应用的大多数网络请求,但可能未报告某些网络请求。因此,建议添加对应用程序中特定请求的监视。
为了将请求报告给Performance Monitoring控制台,使用trace.start()开始的任何跟踪也必须是 通过调用trace.stop()方法停止。永远不会的痕迹
停止,从不报告。- 通配符仅基于路径段,而不基于查询字符串。查询字符串将被忽略,以便在仪表板中进行汇总。
- 对于域a.b.c,应该从几十个唯一的设备中请求路径a.b.c / d /,以便将路径a.b.c / d / 在您选择的时间范围内分别显示在仪表板中 过滤器。
- Known Issues with Performance Monitoring。
对于我上面提到的第四点,还有一件事情要 记住。假设N是表示 我前面提到的“几打”门槛。而且,我们是 监视以下3个不同的路径段: 1. www.something.com/a/ 2. www.something.com/b/ 3. www.something.com/c /
在给定的时间范围内,如果以上所有3条路径均收到N-1 命中。即不满足阈值要求。虽然数量 的点击量似乎是N的近3倍 集体www.something.com(因为这就是仪表板 显示),则每个路径的单个匹配均未达到 给定的时间范围,因此,只有合计的数量统计信息 显示。
...
我用来拦截改造请求并监视请求时间的代码是:(为了安全起见,我删除了查询参数数据)
val builder = OkHttpClient.Builder()
.addInterceptor(FirebasePerformanceInterceptor(FirebasePerformance.getInstance()))
.build()
// Adapted from: http://qaru.site/questions/15007824/how-can-i-get-the-url-and-method-of-retrofit-request-on-onsubscribe-of-rxjava-2-custom-operator
class FirebasePerformanceInterceptor(private val performanceInstance: FirebasePerformance) : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request()
//Get request values
val url = request.url().url()
val urlPath = getUrlWithoutQuery(url)
val requestPayloadSize = request.body()?.contentLength() ?: 0L
val httpMethod = request.method()
//Initialize http trace
val trace = performanceInstance.newHttpMetric(urlPath, httpMethod)
trace.setRequestPayloadSize(requestPayloadSize)
trace.start()
//Proceed
val response = chain.proceed(chain.request())
//Get response values
val responseCode = response.code()
//Add response values to trace and close it
trace.setHttpResponseCode(responseCode)
trace.stop()
return response
}
}
private fun getUrlWithoutQuery(url: URL): URL {
val uri = URI(url.protocol, url.host, url.path, null)
return uri.toURL()
}
要测试是否正确记录日志,请执行以下操作:Debugging tutorial: 您会看到类似:
10-24 19:48:21.162 23037 24411 I FirebasePerformance: Logging NetworkRequestMetric - https://your-api-domain.com/cart 0b 147809ms,
答案 1 :(得分:4)
Firebase Performance Monitoring现在支持创建自定义URL模式,使您可以定位更特定的URL。从文档中:
您可以创建自定义URL模式,以监视Firebase通过其派生的自动URL模式匹配未捕获的特定URL模式。例如,您可以使用自定义URL模式对特定URL进行故障排除或监视一段时间内的一组特定URL。
因此,如果您确实想捕获类似api.myAppName.in/app/v3/user/*/profile/**
之类的东西,现在就可以?
有关更多详细信息,请参见the docs。