一篇讲透自研的前端错误监控

2021-10-19 13:15:32 浏览数 (1)

一、背景

痛点

某⼀天产品:xxx⼴告主反馈我们的⻚⾯注册不了!⼜⼀天运营:这个活动在xxx媒体上挂掉了!

在我司线上运行的是近亿级别的广告页面,这样线上如果裸奔,出现了什么问题不知道,后置在业务端发现,被业务方询问,这种场景很尴尬。

选择

公司存在四个事业部,而每个事业部不下于3个项目,这里至少12个项目,这里作为伏笔,业务线多。

我们是选择自己做呢,还是选第三方的呢。我们比较一下几款常见第三方。

  • Fundebug:付费版 159元/月起,数据存在第三方,而数据自我保存需要 30 万/年。还是很贵的。
  • FrontJS,FrontJS 高级版 899/月,专业版是 2999/月。
  • Sentry,80 美金/月。

以Sentry为计费,对这12个项目计算一下。12个项目一年将近10万。而大致估算过需要2人1.5月即90人日,能完成MVP版本,按每人1.5万工资/月计算,总共花费4.5万,而且是一劳永逸的。

因此从成本角度我们会选择自研,但除了成本外,还有其他原因。例如我们会基于这套系统做一些自定义功能,与公司权限用户系统打通,再针对用户进行Todo管理,对用户进行错误排行等。

还有基于业务数据的安全,我们希望自我搭建一个系统。

所以从成本、安全、扩展性角度,我们选择了自己研发。

二、产品设计

我们要什么样的一个产品呢,根据第一性原理,解决关键问题“怎么定位问题”。通过5W1H法我们来分析,我们想要知道些什么信息呢?

错误信息

其实错误监控说简单就一句话可以描述,搜集页面错误,进行上报,然后对症分析。

按照5W1H法则进行分析这句话,可以发现有几项需要我们关注。

  1. What,发⽣了什么错误:逻辑错误、数据错误、⽹络错误、语法错误等。
  2. When,出现的时间段,如时间戳。
  3. Who,影响了多少用户,包括报错事件数、IP、设备信息。
  4. Where,出现的页面是哪些,包括页面、广告位(我司)、媒体(我司)。
  5. Why,错误的原因是为什么,包括错误堆栈、⾏列、SourceMap。
  6. How,怎么定位解决问题,我们还需要收集系统等信息。

架构层次

首先我们需要梳理下,我们需要一些哪些功能。

那我们怎么得到上面的信息进行最终错误的定位呢。

首先我们肯定需要对错误进行搜集,然后用户设备页面端的错误我们怎么才能感知到呢,这就需要进行上报。那么第一层就展现出来了,我们需要一个搜集上报端。

那怎么才能进行上报呢,和后端协作那么久,肯定知道的吧

0 人点赞