腾讯云可观测平台 错误监控(小程序场景)

前端性能监控的 Aegis 的实例会自动进行 JS 执行错误、Promise 执行错误、Ajax(Fetch)请求异常等监控。这里说明各错误监控逻辑及处理方式。

相关产品
腾讯云可观测平台 产品页,含版本规格、价格与购买入口。

注意:Aegis 实例会对这些异常进行监控,当你只是引入了 SDK 而没有将其实例化时,Aegis 将不会上报数据。

一、JS 执行错误

Aegis 通过监听 wx 对象上的 onerror 事件来获取应用中的报错,并且通过解析错误和分析堆栈,将错误信息自动上报到后台服务中。该上报的上报等级为 error,所以当自动上报的错误达到阈值时,Aegis 将会自动告警,帮助你尽早发现异常。由于上报等级为 error,自动上报也将影响应用的评分。

二、Promise 执行错误

Aegis 会同时监听 wx.onUnhandledRejection 事件,自动上报未被 catch 的 Promise 异常,你无需再自行监听,自行监听并上报会导致同一异常被重复统计。

由请求失败引起的 Promise 异常(包含 request:fail)不在此处上报,而是归入下文的 request 请求异常。如果当前基础库或运行环境不支持 onUnhandledRejection,Aegis 会自动跳过这项监控,只有这种情况下才需要你自行监听并上报。

注意:说明:

注意:onAudioInterruptionBegin、onAudioInterruptionEnd 等全局事件表示音频被系统中断和恢复,不属于错误,Aegis 不会监听也不会上报。你可以按需自行监听,不会与 SDK 冲突。

三、request 请求异常

Aegis 会改写 wx.request(qq.request),并在每次接口请求时进行监听。当 statusCode 不存在或者大于等于400时,认为该请求是一个失败的请求,亦或是接口超时,abort 和其他类型的失败请求。

如果你的应用中使用了一些库也会重写 wx.request(qq.request),如:miniprogram-api-promise 或者自己有封装,请一定确保在引入这个库之前完成对 Aegis 的初始化,否则将无法监听到接口失败的情况。

注意:Aegis SDK 在错误发生的时候,不会主动收集接口请求参数和返回信息,如果需要对接口信息进行上报,可以使用 API 参数里面的 apiDetail 进行开启。

new Aegis({ api: { apiDetail: true, },});

四、retcode 异常

Aegis 在改写 wx.request(qq.request) 时,会获得 API 返回的内容,并尝试在内容中获取到本次请求的 retcode。

·retcode 的值默认会从用户返回 response body 的第一层(如果第一层取不到,再取第二层)的 code、ret、retcode、errcode 中获取。

·Aegis 默认 retcode 的值为0,表示正常,非0都是异常。当 retcode 发生异常时,会上报一个 retcode 异常的日志。

·用户可以通过 api.retCodeHandler 对这个值和是否异常进行修正。

注意:说明:

注意:如何获取 retcode 以及查看正常的 retcode 请参见 配置文档。

五、websocket 异常

Aegis 默认不会对全局 websocket 对象进行重写,默认不会监控 websocket 相关错误,如果需要打开相关功能可以在创建 Aegis 对象时设置 websocketHack: true。

new Aegis({ id: '', websocketHack: true});

赞 (0)
上一篇 4天前
下一篇 4天前