腾讯云可观测平台 流量

这篇说说腾讯云终端性能监控Pro的流量监控功能,覆盖Android与iOS平台,包含功能背景、SDK接入配置、自定义上报接口及指标/异常分析等使用说明。该功能可实时监控应用流量消耗、下钻域名级归因,并支持设置异常阈值。 Android接入:需在后台开启配置并调用addMonitor(TRAFFIC)等接口。 异常分析:基于10分钟流量统计,超阈值即判定异常并展示连接明细。

相关产品
腾讯云可观测平台 产品页,含版本规格、价格与购买入口。

这篇说说了 Android 和 iOS 平台流量监控模块的简介、配置以及功能的使用。

一、功能背景

流量监控的核心功能在于它能够实时监控应用程序的数据使用情况。通过实时监控,可以随时了解应用的数据消耗情况,及时发现流量使用异常等问题。这有助于用户避免超出数据计划或产生额外费用。此外,流量监控还能帮助用户优化应用程序的功耗,减少不必要的数据请求,提供更高效的用户体验,并延长设备的电池寿命。流量监控还具备下钻到域名级别的能力,用户可以了解哪些域名或服务消耗了大量的流量,从而采取相应的措施来优化数据传输。

二、打开配置

在 应用配置 > SDK 配置 中,开启流量监控。

·traffic:指单次进程流量,可以配置设备采样率。

·traffic_detail:指十分钟流量,可以配置设备采样率,以及异常流量的阈值。

·这些流量阈值的单位是 MB 。

·建议在接入阶段,两项的设备采样率( sample_ratio )都设置为1.0 ,即全采样。

配置 配置字段名 意义
总流量过大 total_limit_in_megabyte 10分钟消耗的流量超过配置的流量异常阈值。
后台流量过大 backend_limit_in_megabyte 在后台场景10分钟消耗的流量超过配置的后台异常流量阈值。
移动流量过大 mobile_limit_in_megabyte 10分钟消耗的移动流量超过配置的移动异常流量阈值。
自定义场景流量过大 custom_limit_in_megabyte 业务定义的自定义场景,流量消耗是否超过定义的阈值。

三、SDK 接入

流量监控的接入的方式与其他例如卡顿、Java 内存泄漏等功能没有太大的差异,SDK 的各项监控功能一般采用客户端和后台配置共同控制的方式,也就是说客户端必须要在初始化的时候执行以下语句,同时在后台配置开启流量监控功能,才会真正开启。

RumProBuilder.addMonitor(RumProMonitorName.TRAFFIC); RumProBuilder.addMonitor(RumProMonitorName.TRAFFIC_DETAIL); RumPro.init(application, RumProBuilder);

四、开启成功日志

12-20 16:13:27.470 21408 21449 I TrafficMonitor: traffic monitor start

五、上报日志

1、10分钟流量上报日志(每10分钟上报一次)04-22 01:04:26.665 17704 17758 D RMonitor_report_Json: url: ********************** eventName: traffic_detail, client_identify: ****6415c412a9ed43cd0f43d601****2、进程流量指标上报日志(重启进程5分钟后上报)04-22 01:04:26.665 17704 17758 D RMonitor_report_Json: url: ********************* eventName: traffic, client_identify: *****415c412a9ed43cd0f43*****

六、自定义场景流量上报接口

CustomTrafficStatistic.getInstance().addHttpToQueue(SocketInfo socketInfo);

socketInfo 还有很多其他字段,统计流量只需要给以下字段来赋值,其他成员变量可以暂时忽略。

class SocketInfo { receivedBytes; // 收到多少字节 sendBytes; // 发送了多少字节 networkType; // 网络类型,WiFi流量填1, 5G流量填2, 无网络情况填3 frontState; // 前后台状态,前台填1,后台填2 host; // 域名,例如www.baidu.com startTimeStamp; // 网络请求开始时间戳,精确到ms ……}

七、功能背景

流量监控的核心功能在于它能够实时监控应用程序的数据使用情况。通过实时监控,可以随时了解应用的数据消耗情况,及时发现流量使用异常等问题。这有助于用户避免超出数据计划或产生额外费用。此外,流量监控还能帮助用户优化应用程序的功耗,减少不必要的数据请求,提供更高效的用户体验,并延长设备的电池寿命。流量监控还具备下钻到域名级别的能力,用户可以了解哪些域名或服务消耗了大量的流量,从而采取相应的措施来优化数据传输。

八、打开配置

·若要启用流量监控,还需要确保 SDK 配置中开启了流量监控模块。关于 SDK 配置的内容,可以参考 SDK 配置。

·关于流量监控的配置内容,与 Android 端一致,可以参考 Android 流量监控打开配置 进行查看。

九、SDK 接入

流量监控属于 SDK 的子模块,不需要业务单独接入,只需要升级到支持的 SDK 版本即可包含对应的模块。因此在初始化 SDK 时,确保启用的模块中包含了 RumPro_MODULE_NETWORK 或使用 RM_MODULE_ALL 类型,具体可参考 SDK 初始化。

注意:流量监控需要2.7.53及以后的版本支持。

十、流量监控开启验证

成功开始流量监控功能后,出现以下日志则表明成功开启流量监控功能:

[RumPro][Event][RumProNetworkMonitor.mm:281]RumPro_MODULE_NETWORK start network monitor: 1048576, 1048576, 1048576

流量监控会在进程启动时和每10min 上报进程流量情况或10min 流量情况,当触发上报时,会有如下日志:

[RumPro][Event][RMReportQueue.m:601][Report] [resource.traffic] report id:xxxx error:(null)// or[RumPro][Event][RMReportQueue.m:601][Report] [resource.traffic_detail] report id:xxxx error:(null)

十一、自定义接口

·默认情况下,SDK 会监控 App 中的所有流量,包括使用 NSURLSession 进行的 HTTP 网络请求,及使用 BSD Socket 进行的 TCP 网络请求。

·但限于 BSD Socket 的限制,监控信息仅能提供 IP 和端口的信息。为了让业务能够更自由的实现网络流量监控,终端性能监控 Pro 提供了自定义网络监控的接口。

·在 RumProNetworkTracer+Public.h 和 RumPro_network_tracer.hpp 中,定义了用户自定义网络流量监控的接口,分别用于在 OC 层或 C++ 层进行调用,实现自定义网络流量监控。

·其中调用 tracer 对象的 traceConnectComplete 接口,会自动将此 tracer 记录到的流量监控信息记录到 SDK 并上报。

注意:因 iOS 12.0及以前的系统上发现网络监控存在一定的问题,故在2.8.1.5版本后,网络监控不再支持 iOS 12.0及以前的设备,而是仅支持 iOS 13.0及以上系统。

例如 :

NSString *peerName = @"…"; // 连接 URL 等信息RumProNetworkTracer *tracer = [RumProNetworkTracer tracerWithPeerName:peerName type:RumProNetworkConnectHTTP|RumProNetworkConnectCustom];// 此方法将会将 tracer 对象注入到 _self 对象中,在一些异步处理中,将其注入到上下文对象中,便于后期找回来[tracer injectToObj:_self];// 连接开始[tracer traceConnectStart];// 记录连接发送数据[tracer traceConnectSend:request.HTTPBody.length];// … 其他逻辑// 通过上下文对象,从注册的对象中取回 tracer 对象RumProNetworkTracer *tracer = [RumProNetworkTracer tracerFromObj:_self];// tracer 完成,将其记录到 SDK 中[tracer traceConnectComplete];

·其他接口的使用类似,具体可以参考文件中的定义信息。

十二、功能使用

以下内容以 Android 平台流量监控模块为例进行说明,iOS 可参考如下内容 。

十三、指标分析

·指标分析包含三个 Tab ,单次进程流量、10分钟流量以及自定义场景流量。

·单次进程流量:描述的是一个进程在一次运行中所消耗的所有流量。

·10分钟流量:描述的是命中采样的设备,在 10 分钟的监控周期内所消耗的所有流量。

·自定义场景流量:描述的是业务关注的场景下,单次进程流量或者 10 分钟流量。

·三个 Tab 的指标都包含趋势分析、统计分布和流量归因。

·无论单次进程流量,还是十分钟流量,一次上报算作一次样本。

·上报量表示的就是样本量。如下所示,上报量为10.6857万,表示共有10.6857万个上报。平均值和 P25等分位值是基于这些上报样本计算。

·统计分布展示了这些样本在指定维度的分布情况。

·按 App 版本分布,可以看到2.30.0.56版本上报的样本最多,占比64.43%。

·单击查看更多,可以看到上报明细。

·流量归因当前支持域名,URL 以及网络库。

十四、异常分析

·在统计周期内,如果流量消耗超出配置的阈值,即判定会发生异常。

检测到异常后,会采集详细的连接明细,上报后台。用户可以配置自己的异常检测阈值。

配置 配置字段名 意义
总流量过大 total_limit_in_megabyte 10分钟消耗的流量超过配置的流量异常阈值。
后台流量过大 backend_limit_in_megabyte 在后台场景10分钟消耗的流量超过配置的后台异常流量阈值。
移动流量过大 mobile_limit_in_megabyte 10分钟消耗的移动流量超过配置的移动异常流量阈值。
自定义场景流量过大 custom_limit_in_megabyte 业务定义的自定义场景,流量消耗是否超过定义的阈值。

·异常分析页,展示异常的指标及趋势。

·异常指标中,分子即异常的上报个例。分母则是,十分钟流量的上报样本量。

·当前定义的异常都是基于10分钟流量统计的结果。

指标 说明
异常次数 筛选条件下的流量异常的上报量。
异常率 筛选条件下的流量异常的上报量/筛选条件下采样总的上报量 (10min, 只支持时间范围 + App 版本)。
影响用户数 筛选条件下的流量异常影响用户数。
影响用户率 筛选条件下的流量异常影响用户数/筛选条件下采样总的上报用户数(10min)。
影响设备数 筛选条件下的流量异常影响设备数。
影响设备率 筛选条件下的流量异常影响设备数/筛选条件下采样总的上报设备数(10min)。

·选择筛选条件后,用户可以查看满足条件的异常个例。

·用户可以根据异常流量,或者采集时间等维度对异常个例进行排序,以找到期望的个例进行分析。

·点击异常个例,即可进入异常个例详情,查看连接明细。

·个例详情的连接明细,详细展示这次统计周期内,所监控到的每一个连接的流量消耗明细。

十五、流量归因

无论是指标分析,还是异常分析都包含流量归因。

·指标分析:

·异常分析:

流量归因目标是针对消耗的流量进行归因分析。目前只支持根据域名、URL 以及网络库进行归因。

·当前对于 URL 的归因,除自定义场景外,也暂时只支持到域名级别。

·异常个例的流量归因中,还可以点击某种归因,查看所有满足归因条件的异常个例。

赞 (0)
上一篇 5天前
下一篇 5天前