Skip to main content

网络监控使用教程(Android)

重要提醒

Android的网络监控功能还在灰度验证中,请接入业务先尝试小范围灰度试用,质量验证符合预期后,再正式上线。

SDK版本为:com.tencent.bugly:bugly-pro:4.4.2-beta.3

功能简介

网络监控是通过okhttp3的EventListener来监控Http请求的质量,包含请求耗时,成功率,传输数据量,以及请求过程中重要阶段的耗时。

网络监控

当前通过无插桩的方案实现以下能力:

  1. 业务按SDK接入指引,使用BuglyListenerFactory创建的OkHttpClient,支持监控http/https请求的质量。

  2. 提供BuglyURLStreamHandlerFactory,代理系统原生的HttpURLConnection,从而支持监控使用系统原生接口实现的http/https请求。

当前暂不支持:

  1. 不使用原生接口,或者okhttp3实现的http请求。

  2. 组件使用了okhttp3库实现http请求,但是没有调整OkHttpClient过程,即没有使用BuglyListenerFactory作为OkHttpClient的EventListener.Factory。

打开配置

  1. 网络监控本地配置默认是关闭的,需要业务在Portal上开启配置。

  2. 设置/SDK配置/功能配置,添加net_quality的配置项。

SDK配置

  1. 调整采样率及其他配置项。

网络监控配置

  • sample_ratio :设备采样率,表示允许多少设备开启网络监控。

  • daily_report_limit:表示网络监控的数据上报,每天最多允许上报多少次。网络监控的数据是合并上报的,具体合并的情况由max_batch_count, min_batch_cout 来决定。

  • max_batch_count:表示一条网络监控的数据上报中,最多包含多少条HTTP请求质量的明细数据,默认是100。

  • min_batch_count: 表示一条网络监控的数据上报中,最少包含多少条HTTP请求质量的明细数据,默认是50 。

网络监控配置

重要提醒
  1. 在自测阶段,推荐修改sample_ratio为1,自测结束后,根据实际情况调整设备采样率。
  2. 在自测阶段,推荐修改min_batch_count为5或者10,这样可以将数据尽快上报到后台。自测结束后,推荐根据业务的实际情况来调整,或者还原为默认值。

SDK接入

升级SDK

implementation "com.tencent.bugly:bugly-pro:4.4.2-beta.3"

接口使用

  1. 代理系统原生的HttpURLConnection。

如果不想代理「使用系统原生接口」的Http请求,则无需执行这一步。

如果想代理「使用系统原生接口」的Http请求,推荐在Application#onCreate 时尽早开启代理。

// 开启代理
BuglyURLStreamHandlerFactory.init();

开启代理后,也可以通过以下代码关闭。

// 关闭代理
BuglyURLStreamHandlerFactory.reset();
  1. 修改OkHttpClient创建过程。
  • 创建OkHttpClient时,使用BuglyListenerFactory。
OkHttpClient client = new OkHttpClient.Builder()
.eventListenerFactory(BuglyListenerFactory.getInstance())
.build();
  • 如果是异步执行,使用BuglyCallbackProxy封装Callback。
call.enqueue(new BuglyCallbackProxy(callback));
  • 如果业务本身也有自己的EventListener.Factory,通过以下代码添加Factory。
BuglyListenerFactory.getInstance().addFactory(myFactory)
  • 不需要时,通过以下代码移除Factory。
BuglyListenerFactory.getInstance().removeFactory(myFactory)
  1. 可参考演示代码,构建测试数据。
  • 构建异步请求。
OkHttpClient client = new OkHttpClient.Builder().eventListenerFactory(BuglyListenerFactory.getInstance()).build();

Request request = new Request.Builder().url(url).build();

Call call = client.newCall(request);

call.enqueue(new BuglyCallbackProxy(callback));

  • 构建同步请求。
OkHttpClient client = new OkHttpClient.Builder().eventListenerFactory(BuglyListenerFactory.getInstance()).build();

Request request = new Request.Builder().url(url).build();

try (Response response = call.execute()) {
if (response.isSuccessful()) {
InputStream inputStream = response.body().byteStream();
...
}
} catch (IOException exception) {
//
}

检查开启

  1. 检查配置拉取,确认网络监控允许开启。
  • 日志标签:RMonitor_config: dump for onConfigLoad,
  • 如果监控项是允许开启的,会有 net_quality:true 类似的日志
  • 如果监控项不允许开启,则有 net_quality:false 类似的日志
2024-08-07 13:08:37.143 4707-4777/com.tencent.demo.buglyprodemo I/RMonitor_config: dump for onConfigLoad, {battery_metric:false, memory_quantile:true, io:false, list_metric:false, work_thread_lag:false, sub_memory_quantile:false, fd_leak:false, looper_metric:true, activity_leak:true, battery_element:false, battery:false, launch_metric:true, battery_ele_metric:false, looper_stack:true, java_memory_ceiling_hprof:false, native_memory:true, http:false, traffic_detail:false, net_quality:true, device:false, db:false, big_bitmap:true, traffic:false}
  1. 检查网络监控是否正常开启。
2024-08-07 13:09:03.768 4939-4939/com.tencent.demo.buglyprodemo I/RMonitor_net_quality: getFactory, ret: true, factory: null, errorMsg: null
2024-08-07 13:09:03.786 4939-4939/com.tencent.demo.buglyprodemo I/RMonitor_net_quality: setURLStreamHandlerFactory success.
2024-08-07 13:09:03.786 4939-4939/com.tencent.demo.buglyprodemo I/RMonitor_net_quality: init, true
2024-08-07 13:09:03.807 4939-4997/com.tencent.demo.buglyprodemo I/RMonitor_net_quality: start
  1. 检查数据上报。
2024-08-07 13:10:56.226 4939-5009/com.tencent.demo.buglyprodemo D/RMonitor_report: reportInternal-onSuccess, pluginName: net_quality, dbId: 7

数据分析

功能入口

网络监控入口

HTTP

HTTP模块包含所监控到的所有HTTP请求的质量数据,如成功率,请求耗时,重要阶段耗时,传输数据大小等。

  • HTTP模块默认展示最近7天的数据,包含按上报量排序的Top 域名和接口,整体趋势,统计分布情况,以及按URL聚合列表。

HTTP

  • 趋势分析中,包含丰富的指标。

HTTP

  • 统计分布支持针对丰富的字段进行分析。

HTTP

HTTP

  • URL列表当前根据域名和接口进行聚合。

HTTP

  • 除了整体趋势外,我们可能比较关注,部分域名和接口的数据。此时,可以使用多维下钻来完成。点击期望分析的域名,或者接口,即可在右侧查看指定域名/接口的数据。

HTTP

网络错误

网络错误包含所有HTTP请求错误的数据,通过错误率指标来衡量HTTP请求的成功率。

网络错误

  • 趋势分析

网络错误

  • 错误列表

错误列表当前通过HTTP 方法 + 域名 + 接口 + 错误码 进行聚类

网络错误

  • 错误分布

与HTTP类似,网络错误也提供丰富的下钻字段,方便用户分析各维度的上报占比。

网络错误