目录
前言
在一个项目中,我们除了满足基本的业务诉求之外,还应该创建一个全面、精细、深度的前端监控体系。包括:
1. 收集什么
- 页面异常和错误。如资源加载异常(JavaScript 加载异常、CSS 加载异常、图片加载异常、音视频加载异常等)、JavaScript 错误(含 JavaScript 执行错误、Promise 错误等)。
- 用户行为日志。session 跟踪、点击上报、曝光上报、自定义日志上报(开发调试类型、业务模块错误)。
- 页面性能。首屏耗时(自定义策略)、阶段耗时(DNS 查询耗时、TCP 连接耗时、SSL 建立连接耗时、请求响应耗时、内容传输耗时、DOM 解析耗时、资源加载耗时)、Long Task、Memory 页面内存。进一步基于统计生成各种指标值,如 FCP、CLS、LCP、TTFB、FID
- 页面接口。接口请求/失败总次数、接口请求成功/失败次数、接口请求成功率/失败率、接口请求平均耗时、5xx数量、4xx数量、业务错误码异常统计
- 白屏监控。HOW - 移动端白屏问题优化和监控
2. 如何收集
本系列的主题。
3. 日志上报管理
在实际应用中,日志上报过程中可能会遇到诸多问题,包括日志数据不规范
、数量过多
、大小超限
、丢失
等。为了有效管理和处理这些问题,可以采取以下措施:
-
日志数据规范化:确保日志数据的格式和内容符合规范,包括字段命名、数据类型、数据结构等。可以定义统一的日志格式和字段规范,并在客户端和服务器端进行数据验证和转换,以确保日志数据的一致性和可解析性。
-
日志级别和分类:根据日志的重要程度和类型,设置不同的日志级别和分类。例如,将日志分为
信息日志
、警告日志
、错误日志
等级别,并根据实际情况记录相应的日志内容。可以根据不同级别的日志采取不同的处理策略,如及时上报
、存储
、过滤
等。 -
日志采样和聚合:对于大规模的系统和高流量的应用,可以采用
日志采样
和日志聚合
的方式来减少日志数量和大小,如此可以减轻日志服务器的压力,也可以减轻本地的性能开销。例如,可以按时间窗口
、用户会话
或随机抽样
的方式收集部分日志数据,并进行聚合统计,以降低数据量和压力。 -
日志压缩和分片:对于单条日志过大的情况,可以考虑对日志数据进行
压缩
和分片
处理。可以使用压缩算法(如 gzip、deflate)对日志数据进行压缩,减小数据大小;同时,可以将大型日志数据分成多个小片段进行传输和存储,以降低单条日志的大小和传输成本。 -
日志丢失:网络环境不稳定可能导致日志丢失,为了应对日志丢失的情况,可以考虑以下策略:
本地缓存
,在客户端实现本地日志缓存机制。当网络连接不稳定或不可用时(可通过dns探测机制判断),将日志数据暂时存储在本地缓存中,待网络恢复后再进行重试或批量上传。也可以更进一步,提供确认机制
,