前端异常监控实践

背景

之前写了一篇年终总结的文章,有些朋友对我们在做的监控比较感兴趣,特此写一篇文章来梳理我们的整体的一套思路给大家参考。

前端异常监控系统的开发其实并不复杂,开源实现方案也颇多,技术实现成本并不难,痛点有但是并不是都不能解决,根据我们的情况总结了一下:

  • 前端SDK,主要是用户行为追踪,错误拦截,上报策略,API设计。
  • 上报的日志实现实时查询。
  • 分级分层预警。
  • 日志分析策略。

前端SDK

用户行为追踪

捕获用户的操作路径,根据操作路径我们去还原用户的使用场景,来帮助我们快速定位问题的所在。

操作路径分为以下几个点:

  • 事件触发。根据业务场景,只截取了用户的点击(click/change)和拉动滚动条。
  • 浏览路径。这块分为2种情况,spa和多页面应用,多页面应用我们可以通过 referrer 来确认上一个页面的url。spa的页面我们是对路由进行函数进行监听来做到。

当然这块整体的数据我们会基于cookie和localstorage来存取数据。

异常

脚本通过window.onerror以及拦截angular和vue的handleError来获取。 ajax这块除了ajax报错信息之外,也会根据业务层面的需求拦截返回的错误(栗子:我们请求返回除200外都是错误,所以整体都会上报)。

异常这块其实坑还是蛮多的,不过市面上各位大大总结的够好了,大家可以看看各位大大的总结。

操作系统

这块就是整个系统的信息,以及浏览器的信息、ua等。

总结

sdk这块其实2个难点,一个是用户行为如何定义?另一个异常收集这块会有蛮多的坑要踩。 另一部分整体的上报策略,目前我们是对异常进行了分级,低级别的错误延迟并且合并上报,同一个点同一种错误去重上报。

日志收集

所有日志都打到nginx,并且nginx备份日志,请求代理到后面的node服务,node服务清洗数据后进行入库,这块有一个要注意的点,如果node服务被打死,整个数据就断掉了,所以这块我们有一个定时任务从nginx备份的日志里清洗出由于服务挂掉没有处理的请求。

为什么没有用到大家都比较爱使用的elk呢? 答:通过调研目前我们的量级其实还没有完全要上升到需要elk的层面,我们更倾向于一种可控的状态。

预警

预警服务采用分级策略,按照组织架构,高级别的异常上来后,一段时间没有处理,预警系统会触发向上汇总的策略,直到部门负责人。

展示分析

目前这块会相对薄弱一些,基本只分析了一个周期的项目情况。整个重心还是在错误的解决层面。

总结

前端sdk更偏重于前端的异常收集。整体的后端服务,其实是面向于所有的异常来做的,我们更倾向于给公司提供一套完善的日志系统(ps:目前我们团队的后端监控的数据也逐渐的上到该系统)。

最后希望感兴趣的同学加入我们团队email:liuqing@liluo.me(除前端外,我们也招python,爬虫,大数据), 也希望各位能给我们提些意见和建议,毕竟组内的同学们也是通过业余时间来把整体的方案完善,并且开发完成,还有很多需要提升的地方。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值