管理平台监控调研
管理平台监控调研
一、背景
对于管理平台未提供前端监控,无法主动发现报错、页面首屏加载时长、用户浏览器环境等影响用户体验的问题。因此,有必要实现一套前端监控体系方案,旨在提升平台质量和降低排查问题成本。
二、目标
针对目前各管理平台项目没有提供监控体系功能,将制定一套前端监控体系 SDK,帮助平台开发者快速接入前端监控功能而无需手动实现。
结合目前技术选型和业务情况,前端监控 SDK 需要支持的能力包括以下几点:
异常监控
- API 请求异常监控
- JS 异常监控
- 静态资源加载异常监控
- Promise 未捕获异常监控
性能监控
- 页面加载性能
- TTFE:首包响应时间
- First Paint:首屏渲染时间
- DOM Ready:DOM 就位时间
- First Interactive:首次可交互时间
埋点上报
- 支持自动采集异常信息
- 支持自动采集性能信息
- 支持数据埋点
- 浏览器环境
- 页面访问 pv、uv
- 手动埋点定制化数据
报警响应
- 支持报警规则配置
- 支持 sea talk 通知
- 支持邮件通知业务 owner
三、方案
这里我们主要讨论三个方案
- 开源方案 — sentry
- 自研 SDK
开源方案 — sentry
Sentry 是第三方前端监控开源方案
优点
- 免费
- Sentry 可直接使用也可自行搭建
- 兼容性强,基本不受语言限制,搭建一套系统可用于多个项目
缺点
- 定制化程度低,普遍靠使用已有 api
- 后期维护报警很麻烦
异常监控
Sentry 只需要注册后,就可以自动采集异常信息
1 | Sentry.init({ |
性能监控
Sentry 除了异常监控之外,还集成了强大的性能监控。通过监视应用程序的性能,可以准确定位线上服务问题。
1 | new` `TracingIntegrations.BrowserTracing(), ``// 性能监控 |
埋点上报
Sentry 可以配置上报规则,由 SDK 自行上报
1 |
|
报警响应
Sentry 可以为每个项目创建各种警报规则,并让 Sentry 知道应用程序中发生错误时通知的时间(when)、方式(how)和对象(whom)。 警报规则(Alert rules)由条件(Conditions)和操作(Actions)组成,它们在满足相关条件时执行。
自研 SDK
自研 SDK 是通过自主研发前端监控 SDK 的一种方案
优点
其定制化程度很高
缺点
但是耗费研发资源
异常监控
主要通过拦截器、全局注册 onerror 监听事件、自定义 handler 以及手动 try-catch 实现异常采集
性能监控
主要通过 W3C 提供的 performance api 采集性能相关数据
埋点上报
主要通过 Navigator.sendBeacon() 进行数据上报,降级方案采用 new Img() 以及 http post 方案
报警响应
对接告警平台进行告警设置,主要有普罗米修斯、Grafana 平台等