01 背景
企业为了能够提升线上服务的可靠性和竞争力,需要从代码端的视角来监控自己线上应用的质量和性能,因此,APM系统(应用性能监控系统)应运而生。APM系统是互联网公司最重要的基础设施之一,它可以帮助发现并解决生产环境中遇到的各种问题。
APM系统为了能够实现帮助企业确保自身的IT支撑系统高效地运行,它需要建立一个强大的IT运维管理体系,用来时刻监控IT环境各组件的性能和质量,并且通过多维度实时分析监控指标的异常,快速定位并解决线上应用的问题。其中,网络环境质量是线上服务最基本的性能指标之一,网络耗时,网络请求错误率等指标极大地影响着线上应用的服务质量,APM系统应系统地建立起网络性能的监控。
在爱奇艺移动端APM系统上线之前,网络监控只是针对后端服务,因用户手机性能和网络环境复杂性相关,用户的真实使用体验和后台服务监控之间存在很大差异。因此,我们建立了一套基于用户层面的、实时、多维度的网络监控系统,并建立了针对端上的错误率、劫持率和网络性能的评估标准。经过多年的积累,爱奇艺移动端APM系统已经建立包括崩溃、网络、卡顿、日志、内存、图片等多项监控功能。
本文主要介绍移动端网络监控系统的建立及优化。
02 系统设计
根据移动端网络错误的特点,计算错误率时,将其划分为三类:
网络层错误
(错误发生在三次握手,SSL校验,数据传输过程中,如ConnectException)
HTTP响应错误
(服务端已明确返回错误码,如404)
解析错误
(服务端返回200,但数据格式有问题,导致前端无法正确解析)
由于重试机制的存在,我们只按照一组数据中的最后一次请求的结果,评判该次用户网络行为成功或者失败。
维度信息设计:
在后端存储的字段里,除了上述网络字段,还包括APM平台和用户设备的基础字段信息,这里就不一一赘述。
2.1 SDK设计
因端上网络请求频繁,数据采样需要考虑对手机性能影响的同时,也要保证数据的准确可分析,采样有如下措施可参考:
· 云控采样:云控下发采样指令,动态控制数据量