前端异常监控解决方案研究

广告位招租
扫码页面底部二维码联系

前端监控包括行为监控、【作者:唐霜】异常监控转载请注明出处:www.tangshuang.net、性能监控等,本文主要讨论异常监控。对于【作者:唐霜】未经授权,禁止复制转载。前端而言,和后端处于同一个监控系统中,前【原创不易,请尊重版权】【原创不易,请尊重版权】端有自己的监控方案,后端也有自己等监控方【版权所有】唐霜 www.tangshuang.net【本文受版权保护】案,但两者并不分离,因为一个用户在操作应本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。用过程中如果出现异常,有可能是前端引起,【本文受版权保护】【访问 www.tangshuang.net 获取更多精彩内容】也有可能是后端引起,需要有一个机制,将前著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】后端串联起来,使监控本身统一于监控系统。【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。因此,即使只讨论前端异常监控,其实也不能【原创不易,请尊重版权】【关注微信公众号:wwwtangshuangnet】严格区分前后端界限,而要根据实际系统的设【作者:唐霜】原创内容,盗版必究。计,在最终的报表中体现出监控对开发和业务【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。的帮助。

【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。【原创不易,请尊重版权】

一般而言,一个监控系统,大致可以分为四个原创内容,盗版必究。【未经授权禁止转载】阶段:日志采集、日志存储、统计与分析、报【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。告和警告。

【本文受版权保护】【本文受版权保护】【转载请注明来源】本文作者:唐霜,转载请注明出处。

转载请注明出处:www.tangshuang.net【作者:唐霜】【未经授权禁止转载】原创内容,盗版必究。

采集阶段:收集异常日志,先在本地做一定的【本文首发于唐霜的博客】【原创不易,请尊重版权】处理,采取一定的方案上报到服务器。

【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net【本文受版权保护】

存储阶段:后端接收前端上报的异常日志,经【版权所有,侵权必究】【原创不易,请尊重版权】过一定处理,按照一定的存储方案存储。

【访问 www.tangshuang.net 获取更多精彩内容】【关注微信公众号:wwwtangshuangnet】本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。

分析阶段:分为机器自动分析和人工分析。机【版权所有,侵权必究】【关注微信公众号:wwwtangshuangnet】器自动分析,通过预设的条件和算法,对存储本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】的日志信息进行统计和筛选,发现问题,触发【本文受版权保护】【作者:唐霜】报警。人工分析,通过提供一个可视化的数据未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net面板,让系统用户可以看到具体的日志数据,本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】根据信息,发现异常问题根源。

【作者:唐霜】转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】

报警阶段:分为告警和预警。告警按照一定的转载请注明出处:www.tangshuang.net原创内容,盗版必究。级别自动报警,通过设定的渠道,按照一定的【访问 www.tangshuang.net 获取更多精彩内容】【版权所有】唐霜 www.tangshuang.net触发规则进行。预警则在异常发生前,提前预未经授权,禁止复制转载。【原创不易,请尊重版权】判,给出警告。

【访问 www.tangshuang.net 获取更多精彩内容】【版权所有,侵权必究】【本文受版权保护】【版权所有,侵权必究】【未经授权禁止转载】

1 前端异常【本文受版权保护】

【原创不易,请尊重版权】【关注微信公众号:wwwtangshuangnet】转载请注明出处:www.tangshuang.net【版权所有,侵权必究】【未经授权禁止转载】

前端异常是指在用户使用Web应用时无法快原创内容,盗版必究。未经授权,禁止复制转载。速得到符合预期结果的情况,不同的异常带来未经授权,禁止复制转载。【原创内容,转载请注明出处】的后果程度不同,轻则引起用户使用不悦,重【关注微信公众号:wwwtangshuangnet】转载请注明出处:www.tangshuang.net则导致产品无法使用,使用户丧失对产品的认【作者:唐霜】著作权归作者所有,禁止商业用途转载。可。

【本文首发于唐霜的博客】【转载请注明来源】【作者:唐霜】【转载请注明来源】

1.1 前端异常分类本文作者:唐霜,转载请注明出处。

【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net【版权所有,侵权必究】著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net

根据异常代码的后果的程度,对前端异常的表原创内容,盗版必究。【转载请注明来源】现分为如下几类

【未经授权禁止转载】【作者:唐霜】【未经授权禁止转载】【原创内容,转载请注明出处】【版权所有,侵权必究】

【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】【转载请注明来源】

a. 出错【关注微信公众号:wwwtangshuangnet】

【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。

界面呈现的内容与用户预期的内容不符,例如【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。点击进入非目标界面,数据不准确,出现的错本文作者:唐霜,转载请注明出处。【转载请注明来源】误提示不可理解,界面错位,提交后跳转到错【原创内容,转载请注明出处】原创内容,盗版必究。误界面等情况。这类异常出现时,虽然产品本未经授权,禁止复制转载。【版权所有,侵权必究】身功能还能正常使用,但用户无法达成自己目【原创内容,转载请注明出处】【版权所有,侵权必究】标。

【访问 www.tangshuang.net 获取更多精彩内容】【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。【原创内容,转载请注明出处】

b. 呆滞【原创不易,请尊重版权】

【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。【作者:唐霜】【本文受版权保护】【版权所有,侵权必究】

界面出现操作后没有反应的现象,例如点击按未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net钮无法提交,提示成功后无法继续操作。这类【本文受版权保护】【版权所有】唐霜 www.tangshuang.net异常出现时,产品已经存在界面级局部不可用转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。现象。

【原创不易,请尊重版权】【未经授权禁止转载】本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】

c. 损坏【本文受版权保护】

【转载请注明来源】本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。

界面出现无法实现操作目的的现象,例如点击【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net无法进入目标界面,点击无法查看详情内容等【版权所有】唐霜 www.tangshuang.net【本文受版权保护】。这类异常出现时,应用部分功能无法被正常【关注微信公众号:wwwtangshuangnet】【作者:唐霜】使用。

【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。【未经授权禁止转载】【原创内容,转载请注明出处】【作者:唐霜】

d. 假死【本文受版权保护】

【本文受版权保护】本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。

界面出现卡顿,无法对任何功能进行使用的现【原创不易,请尊重版权】未经授权,禁止复制转载。象。例如用户无法登陆导致无法使用应用内功未经授权,禁止复制转载。【转载请注明来源】能,由于某个遮罩层阻挡且不可关闭导致无法转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。进行任何后续操作。这类异常出现时,用户很转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。可能杀死应用。

【转载请注明来源】【转载请注明来源】【转载请注明来源】【本文受版权保护】

e. 崩溃转载请注明出处:www.tangshuang.net

【版权所有】唐霜 www.tangshuang.net【原创内容,转载请注明出处】【关注微信公众号:wwwtangshuangnet】【本文受版权保护】原创内容,盗版必究。

应用出现经常性自动退出或无法操作的现象。【本文首发于唐霜的博客】【作者:唐霜】例如间歇性crash,网页无法正常加载或【访问 www.tangshuang.net 获取更多精彩内容】【关注微信公众号:wwwtangshuangnet】加载后无法进行任何操作。这类异常持续出现【访问 www.tangshuang.net 获取更多精彩内容】【原创不易,请尊重版权】,将直接导致用户流失,影响产品生命力。

【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。【作者:唐霜】本文作者:唐霜,转载请注明出处。

1.2 异常错误原因分类【未经授权禁止转载】

【版权所有,侵权必究】著作权归作者所有,禁止商业用途转载。【本文受版权保护】本文版权归作者所有,未经授权不得转载。

前端产生异常的原因主要分5类:【原创不易,请尊重版权】

【版权所有,侵权必究】【版权所有,侵权必究】转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net【转载请注明来源】
原因本文作者:唐霜,转载请注明出处。 案例【关注微信公众号:wwwtangshuangnet】 频率【关注微信公众号:wwwtangshuangnet】
逻辑错误原创内容,盗版必究。 1)    业务逻辑判断条件错误未经授权,禁止复制转载。
【原创不易,请尊重版权】【关注微信公众号:wwwtangshuangnet】 2)    事件绑定顺序错误本文版权归作者所有,未经授权不得转载。
【原创不易,请尊重版权】【本文首发于唐霜的博客】 3)    调用栈时序错误【未经授权禁止转载】
【版权所有】唐霜 www.tangshuang.net【关注微信公众号:wwwtangshuangnet】 4)    错误的操作js对象【本文首发于唐霜的博客】
经常原创内容,盗版必究。
数据类型错误【本文首发于唐霜的博客】 1)    将null视作对象读取pro著作权归作者所有,禁止商业用途转载。【关注微信公众号:wwwtangshuangnet】perty
【本文首发于唐霜的博客】【转载请注明来源】 2)    将undefined视作数【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。组进行遍历
【本文受版权保护】【版权所有】唐霜 www.tangshuang.net 3)    将字符串形式的数字直接用于【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】加运算
【原创不易,请尊重版权】【原创不易,请尊重版权】 4)    函数参数未传著作权归作者所有,禁止商业用途转载。
经常本文作者:唐霜,转载请注明出处。
语法句法错误著作权归作者所有,禁止商业用途转载。 较少【版权所有】唐霜 www.tangshuang.net
网络错误【版权所有】唐霜 www.tangshuang.net 1)    慢【作者:唐霜】
未经授权,禁止复制转载。未经授权,禁止复制转载。 2)    服务端未返回数据但仍200著作权归作者所有,禁止商业用途转载。【原创不易,请尊重版权】,前端按正常进行数据遍历
本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】 3)    提交数据时网络中断本文版权归作者所有,未经授权不得转载。
本文版权归作者所有,未经授权不得转载。【未经授权禁止转载】 4)    服务端500错误时前端未做原创内容,盗版必究。【本文受版权保护】任何错误处理
偶尔未经授权,禁止复制转载。
系统错误【关注微信公众号:wwwtangshuangnet】 1)    内存不够用【版权所有】唐霜 www.tangshuang.net
【本文受版权保护】本文作者:唐霜,转载请注明出处。 2)    磁盘塞满【未经授权禁止转载】
【本文受版权保护】【本文受版权保护】 3)    壳不支持API本文版权归作者所有,未经授权不得转载。
【转载请注明来源】【未经授权禁止转载】 4)    不兼容【版权所有】唐霜 www.tangshuang.net
较少【作者:唐霜】

2 异常采集【访问 www.tangshuang.net 获取更多精彩内容】

【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。

2.1 采集内容【原创内容,转载请注明出处】

【版权所有,侵权必究】【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net【版权所有,侵权必究】

当异常出现的时候,我们需要知道异常的具体【原创内容,转载请注明出处】【原创内容,转载请注明出处】信息,根据异常的具体信息来决定采用什么样【版权所有】唐霜 www.tangshuang.net【版权所有,侵权必究】的解决方案。在采集异常信息时,可以遵循4【关注微信公众号:wwwtangshuangnet】本文作者:唐霜,转载请注明出处。W原则:

著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net【转载请注明来源】

WHO本文作者:唐霜,转载请注明出处。 未经授权,禁止复制转载。did WHAT【访问 www.tangshuang.net 获取更多精彩内容】 and 【原创不易,请尊重版权】get WHICH exception原创内容,盗版必究。 著作权归作者所有,禁止商业用途转载。in WHICH environment?【访问 www.tangshuang.net 获取更多精彩内容】

著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net【本文受版权保护】本文作者:唐霜,转载请注明出处。

a. 用户信息【版权所有,侵权必究】

【原创内容,转载请注明出处】【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。

出现异常时该用户的信息,例如该用户在当前【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。时刻的状态、权限等,以及需要区分用户可多【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.net终端登录时,异常对应的是哪一个终端。

本文作者:唐霜,转载请注明出处。原创内容,盗版必究。未经授权,禁止复制转载。【未经授权禁止转载】

b. 行为信息原创内容,盗版必究。

【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】【作者:唐霜】

用户进行什么操作时产生了异常:所在的界面本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】路径;执行了什么操作;操作时使用了哪些数【未经授权禁止转载】本文作者:唐霜,转载请注明出处。据;当时的API吐了什么数据给客户端;如著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net果是提交操作,提交了什么数据;上一个路径【本文受版权保护】【关注微信公众号:wwwtangshuangnet】;上一个行为日志记录ID等。

【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。【未经授权禁止转载】原创内容,盗版必究。

c. 异常信息【版权所有】唐霜 www.tangshuang.net

【转载请注明来源】著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net【转载请注明来源】

产生异常的代码信息:用户操作的DOM元素【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。节点;异常级别;异常类型;异常描述;代码【访问 www.tangshuang.net 获取更多精彩内容】转载请注明出处:www.tangshuang.netstack信息等。

【转载请注明来源】【版权所有,侵权必究】原创内容,盗版必究。

d. 环境信息【未经授权禁止转载】

著作权归作者所有,禁止商业用途转载。【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。

网络环境;设备型号和标识码;操作系统版本著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。;客户端版本;API接口版本等。

【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net【作者:唐霜】未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。
字段【本文受版权保护】 类型本文版权归作者所有,未经授权不得转载。 解释本文作者:唐霜,转载请注明出处。
requestId著作权归作者所有,禁止商业用途转载。 String【版权所有】唐霜 www.tangshuang.net 一个界面产生一个requestId本文版权归作者所有,未经授权不得转载。
traceId【转载请注明来源】 String【访问 www.tangshuang.net 获取更多精彩内容】 一个阶段产生一个traceId,用于追踪【版权所有】唐霜 www.tangshuang.net【关注微信公众号:wwwtangshuangnet】和一个异常相关的所有日志记录
hash【版权所有,侵权必究】 String【转载请注明来源】 这条log的唯一标识码,相当于logId转载请注明出处:www.tangshuang.net【本文受版权保护】,但它是根据当前日志记录的具体内容而生成【本文受版权保护】未经授权,禁止复制转载。
time【本文受版权保护】 Number【版权所有,侵权必究】 当前日志产生的时间(保存时刻)本文作者:唐霜,转载请注明出处。
userId【版权所有】唐霜 www.tangshuang.net String原创内容,盗版必究。
userStatus【原创不易,请尊重版权】 Number本文作者:唐霜,转载请注明出处。 当时,用户状态信息(是否可用/禁用)【版权所有,侵权必究】
userRoles【作者:唐霜】 Array本文作者:唐霜,转载请注明出处。 当时,前用户的角色列表【版权所有】唐霜 www.tangshuang.net
userGroups【访问 www.tangshuang.net 获取更多精彩内容】 Array本文版权归作者所有,未经授权不得转载。 当时,用户当前所在组,组别权限可能影响结【关注微信公众号:wwwtangshuangnet】【版权所有,侵权必究】
userLicenses【版权所有】唐霜 www.tangshuang.net Array【作者:唐霜】 当时,许可证,可能过期【本文受版权保护】
path【本文首发于唐霜的博客】 String【转载请注明来源】 所在路径,URL【版权所有】唐霜 www.tangshuang.net
action本文版权归作者所有,未经授权不得转载。 String本文作者:唐霜,转载请注明出处。 进行了什么操作本文版权归作者所有,未经授权不得转载。
referer【本文首发于唐霜的博客】 String【版权所有】唐霜 www.tangshuang.net 上一个路径,来源URL转载请注明出处:www.tangshuang.net
prevAction【版权所有】唐霜 www.tangshuang.net String【关注微信公众号:wwwtangshuangnet】 上一个操作著作权归作者所有,禁止商业用途转载。
data【关注微信公众号:wwwtangshuangnet】 Object【版权所有】唐霜 www.tangshuang.net 当前界面的state、data【本文首发于唐霜的博客】
dataSources本文作者:唐霜,转载请注明出处。 Array<Object>【版权所有】唐霜 www.tangshuang.net 上游api给了什么数据未经授权,禁止复制转载。
dataSend【转载请注明来源】 Object【版权所有】唐霜 www.tangshuang.net 提交了什么数据【访问 www.tangshuang.net 获取更多精彩内容】
targetElement【版权所有】唐霜 www.tangshuang.net HTMLElement【版权所有】唐霜 www.tangshuang.net 用户操作的DOM元素本文版权归作者所有,未经授权不得转载。
targetDOMPath【访问 www.tangshuang.net 获取更多精彩内容】 Array<HTMLElement转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。> 该DOM元素的节点路径著作权归作者所有,禁止商业用途转载。
targetCSS【原创内容,转载请注明出处】 Object【本文受版权保护】 该元素的自定义样式表转载请注明出处:www.tangshuang.net
targetAttrs转载请注明出处:www.tangshuang.net Object【版权所有】唐霜 www.tangshuang.net 该元素当前的属性及值原创内容,盗版必究。
errorType【作者:唐霜】 String未经授权,禁止复制转载。 错误类型【关注微信公众号:wwwtangshuangnet】
errorLevel【版权所有】唐霜 www.tangshuang.net String著作权归作者所有,禁止商业用途转载。 异常级别本文版权归作者所有,未经授权不得转载。
errorStack【关注微信公众号:wwwtangshuangnet】 String【原创内容,转载请注明出处】 错误stack信息原创内容,盗版必究。
errorFilename【作者:唐霜】 String原创内容,盗版必究。 出错文件【本文受版权保护】
errorLineNo【作者:唐霜】 Number未经授权,禁止复制转载。 出错行【版权所有,侵权必究】
errorColNo【转载请注明来源】 Number【转载请注明来源】 出错列位置未经授权,禁止复制转载。
errorMessage【未经授权禁止转载】 String【访问 www.tangshuang.net 获取更多精彩内容】 错误描述(开发者定义)【本文首发于唐霜的博客】
errorTimeStamp转载请注明出处:www.tangshuang.net Number【关注微信公众号:wwwtangshuangnet】 时间戳【转载请注明来源】
eventType【访问 www.tangshuang.net 获取更多精彩内容】 String【访问 www.tangshuang.net 获取更多精彩内容】 事件类型未经授权,禁止复制转载。
pageX【作者:唐霜】 Number转载请注明出处:www.tangshuang.net 事件x轴坐标【未经授权禁止转载】
pageY【作者:唐霜】 Number【版权所有,侵权必究】 事件y轴坐标本文作者:唐霜,转载请注明出处。
screenX【关注微信公众号:wwwtangshuangnet】 Number【关注微信公众号:wwwtangshuangnet】 事件x轴坐标未经授权,禁止复制转载。
screenY【本文首发于唐霜的博客】 Number未经授权,禁止复制转载。 事件y轴坐标著作权归作者所有,禁止商业用途转载。
pageW原创内容,盗版必究。 Number【版权所有】唐霜 www.tangshuang.net 页面宽度【本文首发于唐霜的博客】
pageH未经授权,禁止复制转载。 Number【本文首发于唐霜的博客】 页面高度原创内容,盗版必究。
screenW本文版权归作者所有,未经授权不得转载。 Number【原创内容,转载请注明出处】 屏幕宽度转载请注明出处:www.tangshuang.net
screenH【版权所有】唐霜 www.tangshuang.net Number【版权所有】唐霜 www.tangshuang.net 屏幕高度本文作者:唐霜,转载请注明出处。
eventKey【原创内容,转载请注明出处】 String【版权所有,侵权必究】 触发事件的键本文作者:唐霜,转载请注明出处。
network【版权所有,侵权必究】 String【原创不易,请尊重版权】 网络环境描述转载请注明出处:www.tangshuang.net
userAgent原创内容,盗版必究。 String【关注微信公众号:wwwtangshuangnet】 客户端描述原创内容,盗版必究。
device【转载请注明来源】 String【原创不易,请尊重版权】 设备描述转载请注明出处:www.tangshuang.net
system本文版权归作者所有,未经授权不得转载。 String本文版权归作者所有,未经授权不得转载。 操作系统描述【作者:唐霜】
appVersion著作权归作者所有,禁止商业用途转载。 String本文作者:唐霜,转载请注明出处。 应用版本【转载请注明来源】
apiVersion转载请注明出处:www.tangshuang.net String本文作者:唐霜,转载请注明出处。 接口版本未经授权,禁止复制转载。

这是一份非常庞大的日志字段表,它几乎囊括未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。了一个异常发生时,能够对异常周遭环境进行【关注微信公众号:wwwtangshuangnet】【原创不易,请尊重版权】详细描述的所有信息。不同情况下,这些字段【本文首发于唐霜的博客】【本文受版权保护】并不一定都会收集,由于我们会采用文档数据【本文首发于唐霜的博客】原创内容,盗版必究。库存储日志,因此,并不影响它的实际存储结本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】果。

【未经授权禁止转载】【访问 www.tangshuang.net 获取更多精彩内容】【原创内容,转载请注明出处】原创内容,盗版必究。

2.2 异常捕获【未经授权禁止转载】

【作者:唐霜】【未经授权禁止转载】【本文受版权保护】【本文首发于唐霜的博客】原创内容,盗版必究。

前端捕获异常分为全局捕获和单点捕获。全局【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】捕获代码集中,易于管理;单点捕获作为补充【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。,对某些特殊情况进行捕获,但分散,不利于【访问 www.tangshuang.net 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。管理。

转载请注明出处:www.tangshuang.net原创内容,盗版必究。【原创内容,转载请注明出处】未经授权,禁止复制转载。

a、全局捕获未经授权,禁止复制转载。

【本文受版权保护】【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】【关注微信公众号:wwwtangshuangnet】

通过全局的接口,将捕获代码集中写在一个地【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。方,可以利用的接口有:

原创内容,盗版必究。【本文首发于唐霜的博客】【本文首发于唐霜的博客】原创内容,盗版必究。
  • window.addEventListe【未经授权禁止转载】【原创不易,请尊重版权】ner(‘error’) / windo本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。w.addEventListener(“本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。unhandledrejection”)著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。 / document.addEvent【本文受版权保护】【原创不易,请尊重版权】Listener(‘click’) 等
  • 转载请注明出处:www.tangshuang.net【转载请注明来源】本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net
  • 框架级别的全局监听,例如aixos中使用著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.netinterceptor进行拦截,vue、【原创内容,转载请注明出处】【访问 www.tangshuang.net 获取更多精彩内容】react都有自己的错误采集接口
  • 原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net【关注微信公众号:wwwtangshuangnet】本文作者:唐霜,转载请注明出处。原创内容,盗版必究。
  • 通过对全局函数进行封装包裹,实现在在调用转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。该函数时自动捕获异常
  • 本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。【访问 www.tangshuang.net 获取更多精彩内容】【原创不易,请尊重版权】
  • 对实例方法重写(Patch),在原有功能【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。基础上包裹一层,例如对console.e【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。rror进行重写,在使用方法不变的情况下本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。也可以异常捕获
  • 原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】【原创不易,请尊重版权】

b、单点捕获【版权所有,侵权必究】

著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。【原创内容,转载请注明出处】

在业务代码中对单个代码块进行包裹,或在逻【未经授权禁止转载】【未经授权禁止转载】辑流程中打点,实现有针对性的异常捕获:

【原创内容,转载请注明出处】【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。
  • try…catch【版权所有】唐霜 www.tangshuang.net
  • 本文作者:唐霜,转载请注明出处。【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.net
  • 专门写一个函数来收集异常信息,在异常发生本文版权归作者所有,未经授权不得转载。【本文受版权保护】时,调用该函数
  • 原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。【作者:唐霜】
  • 专门写一个函数来包裹其他函数,得到一个新【版权所有】唐霜 www.tangshuang.net本文作者:唐霜,转载请注明出处。函数,该新函数运行结果和原函数一模一样,【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。只是在发生异常时可以捕获异常
  • 转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】

2.3 跨域脚本异常【版权所有】唐霜 www.tangshuang.net

著作权归作者所有,禁止商业用途转载。【作者:唐霜】本文作者:唐霜,转载请注明出处。原创内容,盗版必究。

由于浏览器安全策略限制,跨域脚本报错时,原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net无法直接获取错误的详细信息,只能得到一个转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。Script Error。例如,我们会引【未经授权禁止转载】【作者:唐霜】入第三方依赖,或者将自己的脚本放在CDN【作者:唐霜】【版权所有】唐霜 www.tangshuang.net时。

【版权所有】唐霜 www.tangshuang.net【关注微信公众号:wwwtangshuangnet】【未经授权禁止转载】【未经授权禁止转载】

解决Script Error的方法:【版权所有】唐霜 www.tangshuang.net

本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】

方案一:【原创内容,转载请注明出处】

【作者:唐霜】【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。
  • 将js内联到HTML中【版权所有】唐霜 www.tangshuang.net
  • 【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。
  • 将js文件与HTML放在同域下【转载请注明来源】
  • 【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。

方案二:转载请注明出处:www.tangshuang.net

转载请注明出处:www.tangshuang.net【未经授权禁止转载】【作者:唐霜】原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。
  1. 为页面上script标签添加crosso【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.netrigin属性
  2. 【原创内容,转载请注明出处】【转载请注明来源】【作者:唐霜】
  3. 被引入脚本所在服务端响应头中,增加 Ac【作者:唐霜】【版权所有,侵权必究】cess-Control-Allow-O本文作者:唐霜,转载请注明出处。【转载请注明来源】rigin 来支持跨域资源共享
  4. 【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】

2.4 异常录制【本文受版权保护】

本文作者:唐霜,转载请注明出处。【原创内容,转载请注明出处】【版权所有】唐霜 www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】本文版权归作者所有,未经授权不得转载。

对于一个异常,仅仅拥有该异常的信息还不足【版权所有】唐霜 www.tangshuang.net【转载请注明来源】以完全抓住问题的本质,因为异常发生的位置【本文受版权保护】原创内容,盗版必究。,并不一定是异常根源所在的位置。我们需要【作者:唐霜】未经授权,禁止复制转载。对异常现场进行还原,才能复原问题全貌,甚转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net至避免类似问题在其他界面中发生。这里需要【本文受版权保护】本文版权归作者所有,未经授权不得转载。引进一个概念,就是“异常录制”。录制通过本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】“时间”“空间”两个维度记录异常发生前到本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】发生的整个过程,对于找到异常根源更有帮助著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。

【原创内容,转载请注明出处】未经授权,禁止复制转载。未经授权,禁止复制转载。

转载请注明出处:www.tangshuang.net【版权所有,侵权必究】转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net【关注微信公众号:wwwtangshuangnet】

上图表示,当异常发生时,异常的根源可能离【作者:唐霜】原创内容,盗版必究。我们很远,我们需要回到异常发生的现场,找【原创内容,转载请注明出处】【访问 www.tangshuang.net 获取更多精彩内容】到异常根源。就像现实生活中破案一样,如果著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。有监控摄影机对案发过程的录影,对破案来说【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。更加容易。如果仅仅关注异常本身,要找到异著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。常的根源,需要凭借运气,但有了异常录制的【本文首发于唐霜的博客】【转载请注明来源】帮助,找到根源就更加容易。

【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。原创内容,盗版必究。

所谓的“异常录制”,实际上就是通过技术手著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】段,收集用户的操作过程,对用户的每一个操本文作者:唐霜,转载请注明出处。【本文受版权保护】作都进行记录,在发生异常时,把一定时间区未经授权,禁止复制转载。未经授权,禁止复制转载。间内的记录重新运行,形成影像进行播放,让原创内容,盗版必究。【转载请注明来源】调试者无需向用户询问,就能看到用户当时的本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。操作过程。

【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。

转载请注明出处:www.tangshuang.net原创内容,盗版必究。【原创内容,转载请注明出处】

上图是来自阿里的一套异常录制还原方案示意本文作者:唐霜,转载请注明出处。【访问 www.tangshuang.net 获取更多精彩内容】图,用户在界面上的操作产生的events【原创不易,请尊重版权】原创内容,盗版必究。和mutation被产品收集起来,上传到转载请注明出处:www.tangshuang.net【原创不易,请尊重版权】服务器,经过队列处理按顺序存放到数据库中【作者:唐霜】未经授权,禁止复制转载。。当需要进行异常重现的时候,将这些记录从【作者:唐霜】原创内容,盗版必究。数据库中取出,采用一定的技术方案,顺序播本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】放这些记录,即可实现异常还原。

【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。【本文受版权保护】原创内容,盗版必究。【本文首发于唐霜的博客】

2.5 异常级别【原创内容,转载请注明出处】

【转载请注明来源】【作者:唐霜】【作者:唐霜】

一般而言,我们会将收集信息的级别分为in本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】fo,warn,error等,并在此基础本文版权归作者所有,未经授权不得转载。【原创内容,转载请注明出处】上进行扩展。

【本文受版权保护】本文版权归作者所有,未经授权不得转载。【本文受版权保护】转载请注明出处:www.tangshuang.net【版权所有,侵权必究】

当我们监控到异常发生时,可以将该异常划分本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net到“重要——紧急”模型中分为A、B、C、【本文受版权保护】【版权所有,侵权必究】D四个等级。有些异常,虽然发生了,但是并【关注微信公众号:wwwtangshuangnet】转载请注明出处:www.tangshuang.net不影响用户的正常使用,用户其实并没有感知【本文受版权保护】著作权归作者所有,禁止商业用途转载。到,虽然理论上应该修复,但是实际上相对于【原创内容,转载请注明出处】【原创不易,请尊重版权】其他异常而言,可以放在后面进行处理。

【版权所有,侵权必究】【关注微信公众号:wwwtangshuangnet】【转载请注明来源】未经授权,禁止复制转载。

【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】转载请注明出处:www.tangshuang.net

下文会讨论告警策略,一般而言,越靠近右上未经授权,禁止复制转载。原创内容,盗版必究。角的异常会越快通知,保证相关人员能最快接【转载请注明来源】【原创不易,请尊重版权】收到信息,并进行处理。A级异常需要快速响【版权所有】唐霜 www.tangshuang.net【原创内容,转载请注明出处】应,甚至需要相关负责人知悉。

著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】【版权所有,侵权必究】未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。

在收集异常阶段,可根据第一节划分的异常后【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】果来判断异常的严重程度,在发生异常时选择【访问 www.tangshuang.net 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。对应的上报方案进行上报。

未经授权,禁止复制转载。【原创内容,转载请注明出处】【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net

3 整理与上报方案【版权所有,侵权必究】

【作者:唐霜】【版权所有】唐霜 www.tangshuang.net【作者:唐霜】

前文已经提到,除了异常报错信息本身,我们【作者:唐霜】本文作者:唐霜,转载请注明出处。还需要记录用户操作日志,以实现场景复原。著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】这就涉及到上报的量和频率问题。如果任何日著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】志都立即上报,这无异于自造的DDOS攻击未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。。因此,我们需要合理的上报方案。下文会介【转载请注明来源】【转载请注明来源】绍4种上报方案,但实际我们不会仅限于其中【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。一种,而是经常同时使用,对不同级别的日志原创内容,盗版必究。【原创不易,请尊重版权】选择不同的上报方案。

著作权归作者所有,禁止商业用途转载。【原创内容,转载请注明出处】本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。

3.1 前端存储日志本文版权归作者所有,未经授权不得转载。

著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】【原创内容,转载请注明出处】【作者:唐霜】【转载请注明来源】

我们前面提到,我们并不单单采集异常本身日【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net志,而且还会采集与异常相关的用户行为日志原创内容,盗版必究。【关注微信公众号:wwwtangshuangnet】。单纯一条异常日志并不能帮助我们快速定位转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net问题根源,找到解决方案。但如果要收集用户原创内容,盗版必究。【作者:唐霜】的行为日志,又要采取一定的技巧,而不能用未经授权,禁止复制转载。【未经授权禁止转载】户每一个操作后,就立即将该行为日志传到服本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】务器,对于具有大量用户同时在线的应用,如未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。果用户一操作就立即上传日志,无异于对日志【转载请注明来源】【本文首发于唐霜的博客】服务器进行DDOS攻击。因此,我们先将这【本文首发于唐霜的博客】【本文首发于唐霜的博客】些日志存储在用户客户端本地,达到一定条件著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net之后,再同时打包上传一组日志。

【本文受版权保护】【原创不易,请尊重版权】【版权所有】唐霜 www.tangshuang.net

那么,如何进行前端日志存储呢?我们不可能【版权所有,侵权必究】【原创内容,转载请注明出处】直接将这些日志用一个变量保存起来,这样会转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net挤爆内存,而且一旦用户进行刷新操作,这些著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】日志就丢失了,因此,我们自然而然想到前端原创内容,盗版必究。【原创内容,转载请注明出处】数据持久化方案。

【版权所有】唐霜 www.tangshuang.net本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】

目前,可用的持久化方案可选项也比较多了,本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。主要有:Cookie、localStor【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.netage、sessionStorage、I【版权所有,侵权必究】【本文首发于唐霜的博客】ndexedDB、webSQL 、Fil【原创不易,请尊重版权】【版权所有】唐霜 www.tangshuang.neteSystem 等等。那么该如何选择呢?【版权所有,侵权必究】原创内容,盗版必究。我们通过一个表来进行对比:

【转载请注明来源】【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。【转载请注明来源】
存储方式原创内容,盗版必究。 cookie【原创内容,转载请注明出处】 localStorage著作权归作者所有,禁止商业用途转载。 sessionStorage本文作者:唐霜,转载请注明出处。 IndexedDB未经授权,禁止复制转载。 webSQL原创内容,盗版必究。 FileSystem【原创内容,转载请注明出处】
类型未经授权,禁止复制转载。 key-value著作权归作者所有,禁止商业用途转载。 key-value【版权所有】唐霜 www.tangshuang.net NoSQL转载请注明出处:www.tangshuang.net SQL著作权归作者所有,禁止商业用途转载。
数据格式【原创内容,转载请注明出处】 string【本文受版权保护】 string【本文受版权保护】 string未经授权,禁止复制转载。 object著作权归作者所有,禁止商业用途转载。
容量【作者:唐霜】 4k【作者:唐霜】 5M【原创内容,转载请注明出处】 5M【版权所有】唐霜 www.tangshuang.net 500M【未经授权禁止转载】 60M本文版权归作者所有,未经授权不得转载。
进程著作权归作者所有,禁止商业用途转载。 同步著作权归作者所有,禁止商业用途转载。 同步【转载请注明来源】 同步【访问 www.tangshuang.net 获取更多精彩内容】 异步【作者:唐霜】 异步本文版权归作者所有,未经授权不得转载。
检索【访问 www.tangshuang.net 获取更多精彩内容】 key【本文受版权保护】 key【原创不易,请尊重版权】 key, index转载请注明出处:www.tangshuang.net field转载请注明出处:www.tangshuang.net
性能【关注微信公众号:wwwtangshuangnet】 读快写慢【本文受版权保护】 读慢写快本文作者:唐霜,转载请注明出处。

综合之后,IndexedDB是最好的选择原创内容,盗版必究。本文作者:唐霜,转载请注明出处。,它具有容量大、异步的优势,异步的特性保【原创内容,转载请注明出处】本文版权归作者所有,未经授权不得转载。证它不会对界面的渲染产生阻塞。而且Ind【本文首发于唐霜的博客】【本文受版权保护】exedDB是分库的,每个库又分stor【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。e,还能按照索引进行查询,具有完整的数据原创内容,盗版必究。【未经授权禁止转载】库管理思维,比localStorage更著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net适合做结构化数据管理。但是它有一个缺点,原创内容,盗版必究。【作者:唐霜】就是api非常复杂,不像localSto【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.netrage那么简单直接。针对这一点,我们可【作者:唐霜】【原创不易,请尊重版权】以使用hello-indexeddb这个【本文受版权保护】【本文受版权保护】工具,它用Promise对复杂api进行原创内容,盗版必究。【原创不易,请尊重版权】来封装,简化操作,使IndexedDB的【原创不易,请尊重版权】【未经授权禁止转载】使用也能做到localStorage一样转载请注明出处:www.tangshuang.net【未经授权禁止转载】便捷。另外,IndexedDB是被广泛支著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net持的HTML5标准,兼容大部分浏览器,因本文版权归作者所有,未经授权不得转载。【作者:唐霜】此不用担心它的发展前景。

【未经授权禁止转载】【访问 www.tangshuang.net 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。

接下来,我们究竟应该怎么合理使用Inde【关注微信公众号:wwwtangshuangnet】【本文首发于唐霜的博客】xedDB,保证我们前端存储的合理性呢?

转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】

本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net

上图展示了前端存储日志的流程和数据库布局本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net。当一个事件、变动、异常被捕获之后,形成【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。一条初始日志,被立即放入暂存区(inde【未经授权禁止转载】未经授权,禁止复制转载。xedDB的一个store),之后主程序【版权所有,侵权必究】原创内容,盗版必究。就结束了收集过程,后续的事只在webwo【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。rker中发生。在一个webworker【转载请注明来源】【版权所有】唐霜 www.tangshuang.net中,一个循环任务不断从暂存区中取出日志,本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】对日志进行分类,将分类结果存储到索引区中著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。,并对日志记录的信息进行丰富,将最终将会未经授权,禁止复制转载。【原创不易,请尊重版权】上报到服务端的日志记录转存到归档区。而当本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net一条日志在归档区中存在的时间超过一定天数【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】之后,它就已经没有价值了,但是为了防止特【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。殊情况,它被转存到回收区,再经历一段时间著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。后,就会被从回收区中清除。

【未经授权禁止转载】【原创内容,转载请注明出处】本文作者:唐霜,转载请注明出处。

3.2 前端整理日志【访问 www.tangshuang.net 获取更多精彩内容】

未经授权,禁止复制转载。【未经授权禁止转载】【原创内容,转载请注明出处】

上文讲到,在一个webworker中对日【原创内容,转载请注明出处】【未经授权禁止转载】志进行整理后存到索引区和归档区,那么这个【未经授权禁止转载】【转载请注明来源】整理过程是怎样的呢?

【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】【原创不易,请尊重版权】

由于我们下文要讲的上报,是按照索引进行的转载请注明出处:www.tangshuang.net【原创不易,请尊重版权】,因此,我们在前端的日志整理工作,主要就转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】是根据日志特征,整理出不同的索引。我们在本文版权归作者所有,未经授权不得转载。【转载请注明来源】收集日志时,会给每一条日志打上一个typ【本文首发于唐霜的博客】本文作者:唐霜,转载请注明出处。e,以此进行分类,并创建索引,同时通过o【版权所有,侵权必究】未经授权,禁止复制转载。bject-hashcode计算每个lo【本文受版权保护】转载请注明出处:www.tangshuang.netg对象的hash值,作为这个log的唯一未经授权,禁止复制转载。原创内容,盗版必究。标志。

【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net
  • 将所有日志记录按时序存放在归档区,并将新【作者:唐霜】【本文受版权保护】入库的日志加入索引
  • 【作者:唐霜】未经授权,禁止复制转载。原创内容,盗版必究。转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net
  • BatchIndexes:批量上报索引(【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.net包含性能等其他日志),可一次批量上报10【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。0条
  • 著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。
  • MomentIndexes:即时上报索引原创内容,盗版必究。【版权所有,侵权必究】,一次全部上报
  • 转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】【本文首发于唐霜的博客】原创内容,盗版必究。原创内容,盗版必究。
  • FeedbackIndexes:用户反馈本文作者:唐霜,转载请注明出处。【访问 www.tangshuang.net 获取更多精彩内容】索引,一次上报一条
  • 转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】【原创不易,请尊重版权】未经授权,禁止复制转载。【未经授权禁止转载】
  • BlockIndexes:区块上报索引,【本文受版权保护】【版权所有,侵权必究】按异常/错误(traceId,reque【转载请注明来源】【访问 www.tangshuang.net 获取更多精彩内容】stId)分块,一次上报一块
  • 【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。
  • 上报完成后,被上报过的日志对应的索引删除
  • 【访问 www.tangshuang.net 获取更多精彩内容】【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。
  • 3天以上日志进入回收区著作权归作者所有,禁止商业用途转载。
  • 【本文受版权保护】【本文受版权保护】原创内容,盗版必究。【转载请注明来源】
  • 7天以上的日志从回收区清除转载请注明出处:www.tangshuang.net
  • 【本文首发于唐霜的博客】【本文受版权保护】本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。

rquestId:同时追踪前后端日志。由【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。于后端也会记录自己的日志,因此,在前端请原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net求api的时候,默认带上requestI【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。d,后端记录的日志就可以和前端日志对应起【本文首发于唐霜的博客】未经授权,禁止复制转载。来。

【版权所有,侵权必究】【关注微信公众号:wwwtangshuangnet】【原创内容,转载请注明出处】【访问 www.tangshuang.net 获取更多精彩内容】本文版权归作者所有,未经授权不得转载。

traceId:追踪一个异常发生前后的相【原创内容,转载请注明出处】【关注微信公众号:wwwtangshuangnet】关日志。当应用启动时,创建一个trace【作者:唐霜】【未经授权禁止转载】Id,直到一个异常发生时,刷新trace【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】Id。把一个traceId相关的requ【关注微信公众号:wwwtangshuangnet】【作者:唐霜】estId收集起来,把这些request【作者:唐霜】【访问 www.tangshuang.net 获取更多精彩内容】Id相关的日志组合起来,就是最终这个异常【关注微信公众号:wwwtangshuangnet】未经授权,禁止复制转载。相关的所有日志,用来对异常进行复盘。

【原创内容,转载请注明出处】原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。

【本文受版权保护】本文版权归作者所有,未经授权不得转载。【本文受版权保护】

上图举例展示了如何利用traceId和r【访问 www.tangshuang.net 获取更多精彩内容】【转载请注明来源】equestId找出和一个异常相关的所有本文版权归作者所有,未经授权不得转载。【本文受版权保护】日志。在上图中,hash4是一条异常日志著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net,我们找到hash4对应的traceId未经授权,禁止复制转载。【访问 www.tangshuang.net 获取更多精彩内容】为traceId2,在日志列表中,有两条【作者:唐霜】【版权所有】唐霜 www.tangshuang.net记录具有该traceId,但是hash3本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net这条记录并不是一个动作的开始,因为has著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。h3对应的requestId为reqId本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net2,而reqId2开始于hash2,因此【转载请注明来源】原创内容,盗版必究。,我们实际上要把hash2也加入到该异常转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。发生的整个复盘备选记录中。总结起来就是,【本文受版权保护】【关注微信公众号:wwwtangshuangnet】我们要找出同一个traceId对应的所有【作者:唐霜】【版权所有】唐霜 www.tangshuang.netrequestId对应的日志记录,虽然有本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。点绕,但稍理解就可以明白其中的道理。

【本文受版权保护】【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。

我们把这些和一个异常相关的所有日志集合起本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。来,称为一个block,再利用日志的ha原创内容,盗版必究。【原创不易,请尊重版权】sh集合,得出这个block的hash,【作者:唐霜】【转载请注明来源】并在索引区中建立索引,等待上报。

著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。

3.3 上报日志【原创不易,请尊重版权】

【原创内容,转载请注明出处】【版权所有,侵权必究】【转载请注明来源】

上报日志也在webworker中进行,为本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。了和整理区分,可以分两个worker。上【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net报的流程大致为:在每一个循环中,从索引区本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。取出对应条数的索引,通过索引中的hash转载请注明出处:www.tangshuang.net【未经授权禁止转载】,到归档区取出完整的日志记录,再上传到服【版权所有,侵权必究】转载请注明出处:www.tangshuang.net务器。

【关注微信公众号:wwwtangshuangnet】本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。

按照上报的频率(重要紧急度)可将上报分为原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。四种:

本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net

a. 即时上报【作者:唐霜】

转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。

收集到日志后,立即触发上报函数。仅用于A【版权所有】唐霜 www.tangshuang.net【原创内容,转载请注明出处】类异常。而且由于受到网络不确定因素影响,著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。A类日志上报需要有一个确认机制,只有确认【原创不易,请尊重版权】【关注微信公众号:wwwtangshuangnet】服务端已经成功接收到该上报信息之后,才算原创内容,盗版必究。【转载请注明来源】完成。否则需要有一个循环机制,确保上报成【访问 www.tangshuang.net 获取更多精彩内容】【原创不易,请尊重版权】功。

【版权所有,侵权必究】【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。【作者:唐霜】

b. 批量上报【转载请注明来源】

【本文受版权保护】【原创不易,请尊重版权】原创内容,盗版必究。原创内容,盗版必究。【版权所有,侵权必究】

将收集到的日志存储在本地,当收集到一定数本文版权归作者所有,未经授权不得转载。【本文受版权保护】量之后再打包一次性上报,或者按照一定的频【访问 www.tangshuang.net 获取更多精彩内容】【作者:唐霜】率(时间间隔)打包上传。这相当于把多次合转载请注明出处:www.tangshuang.net原创内容,盗版必究。并为一次上报,以降低对服务器的压力。

未经授权,禁止复制转载。【本文受版权保护】【转载请注明来源】

c. 区块上报原创内容,盗版必究。

【本文受版权保护】本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】【本文首发于唐霜的博客】

将一次异常的场景打包为一个区块后进行上报【未经授权禁止转载】本文作者:唐霜,转载请注明出处。。它和批量上报不同,批量上报保证了日志的未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。完整性,全面性,但会有无用信息。而区块上【关注微信公众号:wwwtangshuangnet】【本文受版权保护】报则是针对异常本身的,确保单个异常相关的【作者:唐霜】【作者:唐霜】日志被全部上报。

【转载请注明来源】【原创内容,转载请注明出处】未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net原创内容,盗版必究。

d. 用户主动提交【原创内容,转载请注明出处】

【作者:唐霜】本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。

在界面上提供一个按钮,用户主动反馈bug著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。。这有利于加强与用户的互动。

本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。

或者当异常发生时,虽然对用户没有任何影响【作者:唐霜】原创内容,盗版必究。,但是应用监控到了,弹出一个提示框,让用未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net户选择是否愿意上传日志。这种方案适合涉及【关注微信公众号:wwwtangshuangnet】【关注微信公众号:wwwtangshuangnet】用户隐私数据时。

【原创内容,转载请注明出处】【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。【本文受版权保护】
 【版权所有,侵权必究】 即时上报【未经授权禁止转载】 批量上报原创内容,盗版必究。 区块上报【原创内容,转载请注明出处】 用户反馈著作权归作者所有,禁止商业用途转载。
时效本文版权归作者所有,未经授权不得转载。 立即【版权所有,侵权必究】 定时【版权所有】唐霜 www.tangshuang.net 稍延时【版权所有,侵权必究】 延时原创内容,盗版必究。
条数转载请注明出处:www.tangshuang.net 一次全部上报【原创内容,转载请注明出处】 一次100条【版权所有】唐霜 www.tangshuang.net 单次上报相关条目【原创内容,转载请注明出处】 一次1条【版权所有】唐霜 www.tangshuang.net
容量转载请注明出处:www.tangshuang.net 原创内容,盗版必究。 【本文首发于唐霜的博客】 【作者:唐霜】 【版权所有】唐霜 www.tangshuang.net
紧急【转载请注明来源】 紧急重要【原创不易,请尊重版权】 不紧急【原创不易,请尊重版权】 不紧急但重要未经授权,禁止复制转载。 不紧急转载请注明出处:www.tangshuang.net

即时上报虽然叫即时,但是其实也是通过类似本文作者:唐霜,转载请注明出处。【本文受版权保护】队列的循环任务去完成的,它主要是尽快把一本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。些重要的异常提交给监控系统,好让运维人员【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net发现问题,因此,它对应的紧急程度比较高。

未经授权,禁止复制转载。【关注微信公众号:wwwtangshuangnet】未经授权,禁止复制转载。

批量上报和区块上报的区别:批量上报是一次原创内容,盗版必究。未经授权,禁止复制转载。上报一定条数,比如每2分钟上报1000条著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。,直到上报完成。而区块上报是在异常发生之原创内容,盗版必究。未经授权,禁止复制转载。后,马上收集和异常相关的所有日志,查询出【关注微信公众号:wwwtangshuangnet】【本文首发于唐霜的博客】哪些日志已经由批量上报上报过了,剔除掉,转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。把其他相关日志上传,和异常相关的这些日志未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。相对而言更重要一些,它们可以帮助尽快复原【作者:唐霜】【原创不易,请尊重版权】异常现场,找出发生异常的根源。

【转载请注明来源】【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】【访问 www.tangshuang.net 获取更多精彩内容】

用户提交的反馈信息,则可以慢悠悠上报上去本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。

【作者:唐霜】【原创不易,请尊重版权】【原创不易,请尊重版权】

为了确保上报是成功的,在上报时需要有一个【作者:唐霜】【转载请注明来源】确认机制,由于在服务端接收到上报日志之后原创内容,盗版必究。转载请注明出处:www.tangshuang.net,并不会立即存入数据库,而是放到一个队列未经授权,禁止复制转载。【未经授权禁止转载】中,因此,前后端在确保日志确实已经记录进本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。数据库这一点上需要再做一些处理。

【本文首发于唐霜的博客】原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】

本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。【访问 www.tangshuang.net 获取更多精彩内容】

上图展示了上报的一个大致流程,在上报时,原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】先通过hash查询,让客户端知道准备要上【版权所有,侵权必究】未经授权,禁止复制转载。报的日志集合中,是否存在已经被服务端保存原创内容,盗版必究。【原创内容,转载请注明出处】好的日志,如果已经存在,就将这些日志去除本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。,避免重复上报,浪费流量。

未经授权,禁止复制转载。未经授权,禁止复制转载。【版权所有,侵权必究】

3.4 压缩上报数据【版权所有】唐霜 www.tangshuang.net

原创内容,盗版必究。原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】

一次性上传批量数据时,必然遇到数据量大,本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】浪费流量,或者传输慢等情况,网络不好的状本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】态下,可能导致上报失败。因此,在上报之前【访问 www.tangshuang.net 获取更多精彩内容】【未经授权禁止转载】进行数据压缩也是一种方案。

【本文首发于唐霜的博客】原创内容,盗版必究。未经授权,禁止复制转载。【原创不易,请尊重版权】【原创内容,转载请注明出处】

对于合并上报这种情况,一次的数据量可能要【原创内容,转载请注明出处】【原创内容,转载请注明出处】十几k,对于日 pv 大的站点来说,产生【关注微信公众号:wwwtangshuangnet】未经授权,禁止复制转载。的流量还是很可观的。所以有必要对数据进行【作者:唐霜】【访问 www.tangshuang.net 获取更多精彩内容】压缩上报。lz-string是一个非常优【原创不易,请尊重版权】【关注微信公众号:wwwtangshuangnet】秀的字符串压缩类库,兼容性好,代码量少,【作者:唐霜】未经授权,禁止复制转载。压缩比高,压缩时间短,压缩率达到惊人的6著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】0%。但它基于LZ78压缩,如果后端不支本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】持解压,可选择gzip压缩,一般而言后端【关注微信公众号:wwwtangshuangnet】【作者:唐霜】会默认预装gzip,因此,选择gzip压转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。缩数据也可以,工具包pako中自带了gz未经授权,禁止复制转载。原创内容,盗版必究。ip压缩,可以尝试使用。

本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。【转载请注明来源】【转载请注明来源】【版权所有,侵权必究】

4 日志接收与存储本文版权归作者所有,未经授权不得转载。

【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】

4.1 接入层与消息队列本文作者:唐霜,转载请注明出处。

原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。【作者:唐霜】【版权所有,侵权必究】

一般通过提供独立的日志服务器接收客户端日本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。志,接收过程中,要对客户端日志内容的合法【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。性、安全性等进行甄别,防止被人攻击。而且著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。由于日志提交一般都比较频繁,多客户端同时【作者:唐霜】【版权所有,侵权必究】并发的情况也常见。通过消息队列将日志信息本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。逐一处理后写入到数据库进行保存也是比较常原创内容,盗版必究。【版权所有,侵权必究】用的方案。

未经授权,禁止复制转载。【转载请注明来源】转载请注明出处:www.tangshuang.net【本文首发于唐霜的博客】

【作者:唐霜】【本文首发于唐霜的博客】未经授权,禁止复制转载。【作者:唐霜】【关注微信公众号:wwwtangshuangnet】

上图为腾讯BetterJS的架构图,其中【版权所有,侵权必究】【访问 www.tangshuang.net 获取更多精彩内容】“接入层”和“推送中心”就是这里提到的接【转载请注明来源】【未经授权禁止转载】入层和消息队列。BetterJS将整个前未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net端监控的各个模块进行拆分,推送中心承担了转载请注明出处:www.tangshuang.net【关注微信公众号:wwwtangshuangnet】将日志推送到存储中心进行存储和推送给其他未经授权,禁止复制转载。未经授权,禁止复制转载。系统(例如告警系统)的角色,但我们可以把【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。接收日志阶段的队列独立出来看,在接入层和未经授权,禁止复制转载。【关注微信公众号:wwwtangshuangnet】存储层之间做一个过渡。

【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】【访问 www.tangshuang.net 获取更多精彩内容】【版权所有】唐霜 www.tangshuang.net

4.2 日志存储系统本文作者:唐霜,转载请注明出处。

【作者:唐霜】【原创内容,转载请注明出处】【原创内容,转载请注明出处】未经授权,禁止复制转载。原创内容,盗版必究。

存储日志是一个脏活累活,但是不得不做。对【本文受版权保护】未经授权,禁止复制转载。于小应用,单库单表加优化就可以应付。一个【本文受版权保护】未经授权,禁止复制转载。成规模的应用,如果要提供更标准高效的日志【本文首发于唐霜的博客】【版权所有,侵权必究】监控服务,常常需要在日志存储架构上下一些本文作者:唐霜,转载请注明出处。【未经授权禁止转载】功夫。目前业界已经有比较完备的日志存储方本文版权归作者所有,未经授权不得转载。【作者:唐霜】案,主要有:Hbase系,Dremel系【作者:唐霜】【原创不易,请尊重版权】,Lucene系等。总体而言,日志存储系【未经授权禁止转载】著作权归作者所有,禁止商业用途转载。统主要面对的问题是数据量大,数据结构不规【关注微信公众号:wwwtangshuangnet】【转载请注明来源】律,写入并发高,查询需求大等。一般一套日未经授权,禁止复制转载。【关注微信公众号:wwwtangshuangnet】志存储系统,要解决上面这些问题,就要解决【未经授权禁止转载】未经授权,禁止复制转载。写入的缓冲,存储介质按日志时间选择,为方【访问 www.tangshuang.net 获取更多精彩内容】【作者:唐霜】便快速读取而设计合理的索引系统等等。

本文版权归作者所有,未经授权不得转载。【本文受版权保护】【原创不易,请尊重版权】【关注微信公众号:wwwtangshuangnet】

由于日志存储系统方案比较成熟,这里就不再本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。做更多讨论。

【本文首发于唐霜的博客】原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】

4.3 搜索原创内容,盗版必究。

【本文首发于唐霜的博客】未经授权,禁止复制转载。【版权所有,侵权必究】

日志的最终目的是要使用,由于一般日志的体【关注微信公众号:wwwtangshuangnet】转载请注明出处:www.tangshuang.net量都非常大,因此,要在庞大的数据中找到需原创内容,盗版必究。【原创不易,请尊重版权】要的日志记录,需要依赖比较好的搜索引擎。【未经授权禁止转载】【本文受版权保护】Splunk是一套成熟的日志存储系统,但本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。它是付费使用的。按照Splunk的框架,【作者:唐霜】【未经授权禁止转载】Elk是Splunk的开源实现,Elk是【本文首发于唐霜的博客】【作者:唐霜】ElasticSearch、Logsta转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。sh、Kibana的结合,ES基于Luc未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。ene的存储、索引的搜索引擎;logst【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。ash是提供输入输出及转化处理插件的日志原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。标准化管道;Kibana提供可视化和查询【版权所有】唐霜 www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】统计的用户界面。

未经授权,禁止复制转载。【未经授权禁止转载】【原创不易,请尊重版权】【原创内容,转载请注明出处】【原创内容,转载请注明出处】

5 日志统计与分析著作权归作者所有,禁止商业用途转载。

【原创不易,请尊重版权】【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】【作者:唐霜】转载请注明出处:www.tangshuang.net

一个完善的日志统计分析工具需要提供各方面原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net方便的面板,以可视化的方式给日志管理员和【本文首发于唐霜的博客】本文作者:唐霜,转载请注明出处。开发者反馈信息。

【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】

5.1 用户纬度【访问 www.tangshuang.net 获取更多精彩内容】

本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】【原创内容,转载请注明出处】

同一个用户的不同请求实际上会形成不同的s未经授权,禁止复制转载。【原创不易,请尊重版权】tory线,因此,针对用户的一系列操作设【版权所有】唐霜 www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】计唯一的request id是有必要的。【版权所有,侵权必究】【原创内容,转载请注明出处】同一个用户在不同终端进行操作时,也能进行本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net区分。用户在进行某个操作时的状态、权限等【原创不易,请尊重版权】【原创不易,请尊重版权】信息,也需要在日志系统中予以反应。

本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。【本文受版权保护】【版权所有,侵权必究】

5.2 时间维度【未经授权禁止转载】

原创内容,盗版必究。原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】

一个异常是怎么发生的,需要将异常操作的前著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】后story线串联起来观察。它不单单涉及【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。一个用户的一次操作,甚至不限于某一个页面【本文首发于唐霜的博客】【本文首发于唐霜的博客】,而是一连串事件的最终结果。

本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】【版权所有】唐霜 www.tangshuang.net

5.3 性能维度【关注微信公众号:wwwtangshuangnet】

本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。【本文受版权保护】

应用运行过程中的性能情况,例如,界面加载著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】时间,api请求时长统计,单元计算的消耗【关注微信公众号:wwwtangshuangnet】【作者:唐霜】,用户呆滞时间。

著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。

5.4 运行环境维度著作权归作者所有,禁止商业用途转载。

【原创内容,转载请注明出处】【原创不易,请尊重版权】【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】

应用及服务所运行的环境情况,例如应用所在原创内容,盗版必究。【本文首发于唐霜的博客】的网络环境,操作系统,设备硬件信息等,服【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】务器cpu、内存状况,网络、宽带使用情况本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。等。

转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net

5.4 细粒度代码追踪本文作者:唐霜,转载请注明出处。

【转载请注明来源】原创内容,盗版必究。【原创内容,转载请注明出处】【转载请注明来源】【关注微信公众号:wwwtangshuangnet】

异常的代码stack信息,定位到发生异常【作者:唐霜】【访问 www.tangshuang.net 获取更多精彩内容】的代码位置和异常堆栈。

【本文受版权保护】著作权归作者所有,禁止商业用途转载。【转载请注明来源】本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net

5.6 场景回溯著作权归作者所有,禁止商业用途转载。

本文作者:唐霜,转载请注明出处。【本文受版权保护】转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。

通过将异常相关的用户日志连接起来,以动态未经授权,禁止复制转载。【本文受版权保护】的效果输出发生异常的过程。

【访问 www.tangshuang.net 获取更多精彩内容】【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。

6 监控与通知转载请注明出处:www.tangshuang.net

【版权所有】唐霜 www.tangshuang.net【作者:唐霜】著作权归作者所有,禁止商业用途转载。

对异常进行统计和分析只是基础,而在发现异【作者:唐霜】【原创内容,转载请注明出处】常时可以推送和告警,甚至做到自动处理,才著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】是一个异常监控系统应该具备的能力。

本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。

6.1 自定义触发条件的告警【版权所有,侵权必究】

转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。

a. 监控实现【版权所有】唐霜 www.tangshuang.net

本文版权归作者所有,未经授权不得转载。【转载请注明来源】【原创不易,请尊重版权】【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。

当日志信息进入接入层时,就可以触发监控逻【关注微信公众号:wwwtangshuangnet】本文版权归作者所有,未经授权不得转载。辑。当日志信息中存在较为高级别的异常时,【作者:唐霜】转载请注明出处:www.tangshuang.net也可以立即出发告警。告警消息队列和日志入【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net库队列可以分开来管理,实现并行。

【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。

对入库日志信息进行统计,对异常信息进行告【版权所有,侵权必究】【版权所有】唐霜 www.tangshuang.net警。对监控异常进行响应。所谓监控异常,是【本文受版权保护】未经授权,禁止复制转载。指:有规律的异常一般而言都比较让人放心,【转载请注明来源】【本文首发于唐霜的博客】比较麻烦的是突然之间的异常。例如在某一时转载请注明出处:www.tangshuang.net【本文首发于唐霜的博客】段突然频繁接收到D级异常,虽然D级异常是【转载请注明来源】【未经授权禁止转载】不紧急一般重要,但是当监控本身发生异常时本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。,就要提高警惕。

著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。

b. 自定义触发条件【转载请注明来源】

【原创不易,请尊重版权】原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】

除了系统开发时配置的默认告警条件,还应该【转载请注明来源】【访问 www.tangshuang.net 获取更多精彩内容】提供给日志管理员可配置的自定义触发条件。

转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。【未经授权禁止转载】【本文首发于唐霜的博客】
  • 日志内含有什么内容时【版权所有,侵权必究】
  • 【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。【转载请注明来源】【未经授权禁止转载】
  • 日志统计达到什么度、量时【本文首发于唐霜的博客】
  • 本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】
  • 向符合什么条件的用户告警本文版权归作者所有,未经授权不得转载。
  • 【原创内容,转载请注明出处】【访问 www.tangshuang.net 获取更多精彩内容】【本文首发于唐霜的博客】【原创内容,转载请注明出处】【关注微信公众号:wwwtangshuangnet】

6.2 推送渠道【作者:唐霜】

转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。【本文首发于唐霜的博客】本文作者:唐霜,转载请注明出处。

可选择的途径有很多,例如邮件、短信、微信原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net、电话。

本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】原创内容,盗版必究。

6.3 推送频率本文作者:唐霜,转载请注明出处。

【原创不易,请尊重版权】转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】

针对不同级别的告警,推送的频率也可以进行【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。设定。低风险告警可以以报告的形式一天推送【版权所有,侵权必究】转载请注明出处:www.tangshuang.net一次,高风险告警10分钟循环推送,直到处未经授权,禁止复制转载。【本文受版权保护】理人手动关闭告警开关。

本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】【本文受版权保护】

6.4 自动报表【本文首发于唐霜的博客】

【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】【关注微信公众号:wwwtangshuangnet】未经授权,禁止复制转载。未经授权,禁止复制转载。

对于日志统计信息的推送,可以做到自动生成转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。日报、周报、月报、年报并邮件发送给相关群【作者:唐霜】【访问 www.tangshuang.net 获取更多精彩内容】组。

【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net【转载请注明来源】未经授权,禁止复制转载。

6.5 自动产生bug工单本文版权归作者所有,未经授权不得转载。

未经授权,禁止复制转载。【原创内容,转载请注明出处】【访问 www.tangshuang.net 获取更多精彩内容】【作者:唐霜】

当异常发生时,系统可以调用工单系统API原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net实现自动生成bug单,工单关闭后反馈给监【转载请注明来源】著作权归作者所有,禁止商业用途转载。控系统,形成对异常处理的追踪信息进行记录著作权归作者所有,禁止商业用途转载。【转载请注明来源】,在报告中予以展示。

本文作者:唐霜,转载请注明出处。【原创内容,转载请注明出处】【版权所有,侵权必究】未经授权,禁止复制转载。原创内容,盗版必究。

7 修复异常【作者:唐霜】

【访问 www.tangshuang.net 获取更多精彩内容】【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。

7.1 sourcemap【转载请注明来源】

著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】【本文受版权保护】

前端代码大部分情况都是经过压缩后发布的,著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。上报的stack信息需要还原为源码信息,原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】才能快速定位源码进行修改。

【本文受版权保护】【作者:唐霜】转载请注明出处:www.tangshuang.net【关注微信公众号:wwwtangshuangnet】【原创不易,请尊重版权】

发布时,只部署js脚本到服务器上,将so未经授权,禁止复制转载。【访问 www.tangshuang.net 获取更多精彩内容】urcemap文件上传到监控系统,在监控未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net系统中展示stack信息时,利用sour【版权所有,侵权必究】【版权所有】唐霜 www.tangshuang.netcemap文件对stack信息进行解码,【未经授权禁止转载】【原创不易,请尊重版权】得到源码中的具体信息。

【本文首发于唐霜的博客】【本文首发于唐霜的博客】【版权所有,侵权必究】【原创不易,请尊重版权】【本文首发于唐霜的博客】

但是这里有一个问题,就是sourcema原创内容,盗版必究。【本文受版权保护】p必须和正式环境的版本对应,还必须和gi【本文受版权保护】本文版权归作者所有,未经授权不得转载。t中的某个commit节点对应,这样才能【未经授权禁止转载】【原创不易,请尊重版权】保证在查异常的时候可以正确利用stack转载请注明出处:www.tangshuang.net【本文受版权保护】信息,找到出问题所在版本的代码。这些可以【作者:唐霜】未经授权,禁止复制转载。通过建立CI任务,在集成化部署中增加一个【访问 www.tangshuang.net 获取更多精彩内容】【访问 www.tangshuang.net 获取更多精彩内容】部署流程,以实现这一环节。

未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net

7.2 从告警到预警【关注微信公众号:wwwtangshuangnet】

【转载请注明来源】【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】

预警的本质是,预设可能出现异常的条件,当著作权归作者所有,禁止商业用途转载。【关注微信公众号:wwwtangshuangnet】触发该条件时异常并没有真实发生,因此,可转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。以赶在异常发生之前对用户行为进行检查,及【原创内容,转载请注明出处】【关注微信公众号:wwwtangshuangnet】时修复,避免异常或异常扩大。

【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net【作者:唐霜】转载请注明出处:www.tangshuang.net【未经授权禁止转载】

怎么做呢?其实就是一个统计聚类的过程。将本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】历史中发生异常的情况进行统计,从时间、地未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net域、用户等不同维度加以统计,找出规律,并【关注微信公众号:wwwtangshuangnet】【未经授权禁止转载】将这些规律通过算法自动加入到预警条件中,【关注微信公众号:wwwtangshuangnet】本文版权归作者所有,未经授权不得转载。当下次触发时,及时预警。

【版权所有,侵权必究】原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】【版权所有】唐霜 www.tangshuang.net

7.3 智能修复本文版权归作者所有,未经授权不得转载。

本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net

自动修复错误。例如,前端要求接口返回数值【版权所有,侵权必究】未经授权,禁止复制转载。,但接口返回了数值型的字符串,那么可以有本文版权归作者所有,未经授权不得转载。【原创内容,转载请注明出处】一种机制,监控系统发送正确数据类型模型给转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。后端,后端在返回数据时,根据该模型控制每转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net个字段的类型。

【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。【转载请注明来源】【未经授权禁止转载】

8 异常测试本文作者:唐霜,转载请注明出处。

本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。

8.1 主动异常测试转载请注明出处:www.tangshuang.net

【作者:唐霜】【未经授权禁止转载】著作权归作者所有,禁止商业用途转载。【作者:唐霜】【未经授权禁止转载】

撰写异常用例,在自动化测试系统中,加入异【访问 www.tangshuang.net 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。常测试用户。在测试或运行过程中,每发现一本文作者:唐霜,转载请注明出处。【本文受版权保护】个异常,就将它加入到原有的异常用例列表中本文作者:唐霜,转载请注明出处。原创内容,盗版必究。

【本文受版权保护】【转载请注明来源】未经授权,禁止复制转载。

8.2 随机异常测试【原创内容,转载请注明出处】

【原创不易,请尊重版权】转载请注明出处:www.tangshuang.net【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。

模拟真实环境,在模拟器中模拟真实用户的随著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。机操作,利用自动化脚本产生随机操作动作代本文版权归作者所有,未经授权不得转载。【转载请注明来源】码,并执行。

【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】

定义异常,例如弹出某个弹出框,包含特定内【原创不易,请尊重版权】【作者:唐霜】容时,就是异常。将这些测试结果记录下来,【本文受版权保护】本文版权归作者所有,未经授权不得转载。再聚类统计分析,对防御异常也很有帮助。

【本文受版权保护】【本文受版权保护】转载请注明出处:www.tangshuang.net【转载请注明来源】【本文首发于唐霜的博客】

9 部署【原创不易,请尊重版权】

本文作者:唐霜,转载请注明出处。原创内容,盗版必究。【未经授权禁止转载】【本文首发于唐霜的博客】

9.1 多客户端转载请注明出处:www.tangshuang.net

【关注微信公众号:wwwtangshuangnet】原创内容,盗版必究。【版权所有,侵权必究】转载请注明出处:www.tangshuang.net

一个用户在不同终端上登录,或者一个用户在著作权归作者所有,禁止商业用途转载。【本文受版权保护】登录前和登录后的状态。通过特定算法生成r【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.netequestID,通过该requestI原创内容,盗版必究。转载请注明出处:www.tangshuang.netd可以确定某个用户在独立客户端上的一系列本文版权归作者所有,未经授权不得转载。【作者:唐霜】操作,根据日志时序,可以梳理出用户产生异【转载请注明来源】【原创内容,转载请注明出处】常的具体路径。

【原创不易,请尊重版权】【关注微信公众号:wwwtangshuangnet】【原创不易,请尊重版权】

9.2 集成便捷性【本文受版权保护】

【本文首发于唐霜的博客】【本文受版权保护】【访问 www.tangshuang.net 获取更多精彩内容】【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】

前端写成包,全局引用即可完成大部分日志记【原创内容,转载请注明出处】原创内容,盗版必究。录、存储和上报。在特殊逻辑里面,可以调用本文版权归作者所有,未经授权不得转载。【本文受版权保护】特定方法记录日志。

【原创内容,转载请注明出处】【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】

后端与应用本身的业务代码解耦,可以做成独本文版权归作者所有,未经授权不得转载。【转载请注明来源】立的服务,通过接口和第三方应用交互。利用本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】集成部署,可以将系统随时进行扩容、移植等【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。操作。

【本文首发于唐霜的博客】【原创不易,请尊重版权】【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net

9.3 管理系统的可扩展【本文首发于唐霜的博客】

【版权所有,侵权必究】【原创不易,请尊重版权】【本文受版权保护】【未经授权禁止转载】

整套系统可扩展,不仅服务单应用,可支持多未经授权,禁止复制转载。【关注微信公众号:wwwtangshuangnet】个应用同时运行。同一个团队下的所有应用都【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。可以利用同一个平台进行管理。

【关注微信公众号:wwwtangshuangnet】【关注微信公众号:wwwtangshuangnet】【原创内容,转载请注明出处】【作者:唐霜】

9.4 日志系统权限未经授权,禁止复制转载。

【本文受版权保护】未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】【转载请注明来源】

不同的人在访问日志系统时权限不同,一个访【转载请注明来源】原创内容,盗版必究。问者只能查看自己相关的应用,有些统计数据【转载请注明来源】原创内容,盗版必究。如果比较敏感,可以单独设置权限,敏感数据未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。可脱敏。

【本文受版权保护】【转载请注明来源】【本文受版权保护】转载请注明出处:www.tangshuang.net

10 其他【访问 www.tangshuang.net 获取更多精彩内容】

转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】【访问 www.tangshuang.net 获取更多精彩内容】【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。

10.1 性能监控转载请注明出处:www.tangshuang.net

转载请注明出处:www.tangshuang.net【转载请注明来源】【转载请注明来源】【本文首发于唐霜的博客】【未经授权禁止转载】

异常监控主要针对代码级别的报错,但也应该【本文首发于唐霜的博客】未经授权,禁止复制转载。关注性能异常。性能监控主要包括:

未经授权,禁止复制转载。【本文受版权保护】原创内容,盗版必究。原创内容,盗版必究。
  • 运行时性能:文件级、模块级、函数级、算法【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】
  • 【转载请注明来源】本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。
  • 网络请求速率【版权所有,侵权必究】
  • 转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net原创内容,盗版必究。【作者:唐霜】
  • 系统性能本文作者:唐霜,转载请注明出处。
  • 转载请注明出处:www.tangshuang.net【作者:唐霜】本文版权归作者所有,未经授权不得转载。

10.2 API Monitor【访问 www.tangshuang.net 获取更多精彩内容】

未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net【作者:唐霜】

后端API对前端的影响也非常大,虽然前端转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。代码也控制逻辑,但是后端返回的数据是基础本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。,因此对API的监控可以分为:

【转载请注明来源】【访问 www.tangshuang.net 获取更多精彩内容】本文版权归作者所有,未经授权不得转载。【本文受版权保护】【原创不易,请尊重版权】
  • 稳定性监控著作权归作者所有,禁止商业用途转载。
  • 【版权所有,侵权必究】【未经授权禁止转载】未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。
  • 数据格式和类型【版权所有】唐霜 www.tangshuang.net
  • 【访问 www.tangshuang.net 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。
  • 报错监控【版权所有,侵权必究】
  • 转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。【原创内容,转载请注明出处】
  • 数据准确性监控【关注微信公众号:wwwtangshuangnet】
  • 转载请注明出处:www.tangshuang.net【本文受版权保护】【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。

10.3 数据脱敏本文版权归作者所有,未经授权不得转载。

【作者:唐霜】【未经授权禁止转载】【原创不易,请尊重版权】【转载请注明来源】原创内容,盗版必究。

敏感数据不被日志系统采集。由于日志系统的【本文受版权保护】原创内容,盗版必究。保存是比较开放的,虽然里面的数据很重要,【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。但是在存储上大部分日志系统都不是保密级,著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。因此,如果应用涉及了敏感数据,最好做到:

本文作者:唐霜,转载请注明出处。【本文受版权保护】本文作者:唐霜,转载请注明出处。
  • 独立部署,不和其他应用共享监控系统【本文受版权保护】
  • 本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。【原创不易,请尊重版权】转载请注明出处:www.tangshuang.net【关注微信公众号:wwwtangshuangnet】
  • 不采集具体数据,只采集用户操作数据,在重本文作者:唐霜,转载请注明出处。原创内容,盗版必究。现时,通过日志信息可以取出数据api结果著作权归作者所有,禁止商业用途转载。【作者:唐霜】来展示
  • 【本文首发于唐霜的博客】未经授权,禁止复制转载。原创内容,盗版必究。【原创内容,转载请注明出处】
  • 日志加密,做到软硬件层面的加密防护【作者:唐霜】
  • 原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】【本文首发于唐霜的博客】【未经授权禁止转载】
  • 必要时,可采集具体数据的ID用于调试,场未经授权,禁止复制转载。原创内容,盗版必究。景重现时,用mock数据替代,mock数【转载请注明来源】【版权所有】唐霜 www.tangshuang.net据可由后端采用假的数据源生成
  • 【关注微信公众号:wwwtangshuangnet】本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】
  • 对敏感数据进行混淆【版权所有】唐霜 www.tangshuang.net
  • 【本文受版权保护】【关注微信公众号:wwwtangshuangnet】原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。

结语【关注微信公众号:wwwtangshuangnet】

【转载请注明来源】转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net【关注微信公众号:wwwtangshuangnet】

本文主要是对前端异常监控的整体框架进行了著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。研究,没有涉及到具体的技术实现,涉及前端本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net部分和后台部分以及与整个问题相关的一些知著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net识点,主要关注前端部分,它和后端的监控有未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net重叠部分也有分支部分,需要在一个项目中不【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。断实践,总结出项目本身的监控需求和策略。

本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。

 原创内容,盗版必究。

【转载请注明来源】【关注微信公众号:wwwtangshuangnet】转载请注明出处:www.tangshuang.net

这篇文章是我发在CDC博客上的公开文,为转载请注明出处:www.tangshuang.net【转载请注明来源】了作为记录,也保存在自己的博客一份。
【转载请注明来源】【本文受版权保护】 查看原文:https://cdc.te【原创不易,请尊重版权】【访问 www.tangshuang.net 获取更多精彩内容】ncent.com/2018/09/13本文作者:唐霜,转载请注明出处。原创内容,盗版必究。/frontend-exception-【原创内容,转载请注明出处】原创内容,盗版必究。monitor-research/

【原创内容,转载请注明出处】本文作者:唐霜,转载请注明出处。【转载请注明来源】【本文受版权保护】

2018-10-02 6819

为价值买单,打赏一杯咖啡

本文价值68.19RMB