当前位置: 首页 > Web前端 > vue.js

Ohbug-前端监控新方向

时间:2023-03-31 22:49:54 vue.js

众所周知,前端监控包括异常监控、行为监控、性能监控等,每个业务都有共同的异常、性能监控等内容。需要进行监控,还需要采集自定义用户行为、用户画像等内容。常用的监控平台有很多,比如sentry、fundebug、frontjs等,它们有从异常监控、数据分析到告警通知等一系列功能,非常成熟。那么为什么不选择它们并自己制作一个呢?事实上,在某些情况下,上述平台基本可以满足需求,无非是用户体验或功能上的细微差别。但是在其他场景下,我们可能需要监控一些特殊的场景,比如某个模块或者某个页面的曝光率,或者某个页面异常时需要用户的真实反馈。这些特殊场景产生的数据是不统一的。收集、处理和分析的方法。所以不同于以往的监控工具,我们希望打造一个开源的基础工具,可以基于扩展/插件进行扩展,支持各种监控需求。为了达到目的,我们希望采用类似微内核架构的设计来实现扩展机制,从初始化、事件创建、上报三大流程入手。所有三个阶段都可以定制和修改,以支持各种监控需求。核心首先,我们希望设计一个核心数据采集程序@ohbug/core,需要具备参数校验、扩展加载、数据封装、数据上报等几个功能。这个核心程序不仅可以收集异常数据和性能信息,还可以收集用户行为、用户身份甚至任何你想要的信息。下面是核心工作的整个生命周期。扩展Ohbug的关键是扩展机制,所以扩展必须能方便地与大多数数据采集工具集成。例如,perfume.js是一个轻量级的网络性能监控工具。我们对其进行了简单的封装,只需十几行代码就可以完成一个扩展(@ohbug/extension-perfume)。浏览器扩展我们针对浏览器环境集成了一套浏览器扩展@ohbug/browser,集成了异常监控(JavaScript代码错误&资源错误、未被拒绝的Promise错误、AJAX/Fetch错误、Websocket错误)、行为监控(路由切换、点击事件、控制台等信息)、用户画像设置、自定义数据采集等功能,业务接入方便快捷。框架扩展框架级别的扩展基于@ohbug/browser。除了浏览器扩展的功能外,还增加了一些框架相关的信息,相当于@ohbug/browser的进一步扩展。React@ohbug/react使用componentDidCatch生命周期包装错误边界组件,以捕获子组件树中任何位置的JavaScript异常,并呈现备用UI而不是使组件树崩溃。您可以通过传入组件的FallbackComponent属性来定义回退UI。从'react'导入React从'@ohbug/browser'导入Ohbug从'@ohbug/react'导入OhbugReactfunctionApp(){return(

)}Vue@ohbug/vue使用Vue.config.errorHandler函数来处理错误,除了对于错误信息,另外还可以获得与Vue实例相关的数据。从'vue'导入Vue从'@ohbug/browser'导入Ohbug从'@ohbug/vue'导入OhbugVueconstclient=Ohbug.init({apiKey:'YOUR_API_KEY'})client.use(OhbugVue,Vue)更多扩展@ohbug/extension-perfume:用于收集性能信息的perfume.js包。@ohbug/extension-rrweb:为“屏幕录制”打包rrweb。@ohbug/extension-uuid:扩展Event.user添加UUID标识。比如我需要对某个项目做简单的异常监控,只需要访问@ohbug/browser。当然,如果你的项目是基于Vue实现的,想收集更多Vue实例相关的异常数据,只需要多写一行代码client.use(OhbugVue,Vue)。等等,我还想收集用户性能信息,那就再写一行client.use(OhbugExtensionPerfume)之类的。我也想给用户加上一个唯一的标识符来区分,然后再写一行client.use(OhbugExtensionUUID)等等等等...创建扩展如果你有自己独特的需求,你可以根据需要自己创建扩展。创建扩展非常简单:yarnadd@ohbug/coreimport{createExtension}from'@ohbug/core'exportconstextension=createExtension({name:'ExtensionName',init:()=>{//这里是程序初始化数据收集}})修改事件除了主动收集信息外,扩展还可以用于修改收集的事件。例如这个扩展@ohbug/extension-uuid可以为每个事件添加一个UUID字段,用于用户标识。其代码大致如下:uuid=getUUID()event.setUser({uuid,})returnevent},})opensource有很多有用的东西可以作为扩展,我们也在努力丰富扩展,完善核心模块。一个人的力量是有限的。我们一方面拥抱开源,集中精力做事。我们希望更多的开发者加入进来,完善Ohbug,丰富和扩大市场。结束语以上内容为开源的Ohbug,更多文档可参见OhbugDocs。关于前端监控的内容会在后面分享。关注Ohbug公众号