一、背景
痛点
某⼀天产品: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法则进行分析这句话,可以发现有几项需要我们关注。
- What,发⽣了什么错误:逻辑错误、数据错误、⽹络错误、语法错误等。
- When,出现的时间段,如时间戳。
- Who,影响了多少用户,包括报错事件数、IP、设备信息。
- Where,出现的页面是哪些,包括页面、广告位(我司)、媒体(我司)。
- Why,错误的原因是为什么,包括错误堆栈、⾏列、SourceMap。
- How,怎么定位解决问题,我们还需要收集系统等信息。
架构层次
首先我们需要梳理下,我们需要一些哪些功能。
那我们怎么得到上面的信息进行最终错误的定位呢。
首先我们肯定需要对错误进行搜集,然后用户设备页面端的错误我们怎么才能感知到呢,这就需要进行上报。那么第一层就展现出来了,我们需要一个搜集上报端。
那怎么才能进行上报呢,和后端协作那么久,肯定知道的吧