二、前端监控之方案调研

前端监控体系

一个完整的前端监控体系包括了日志采集、日志上报、日志接收、日志处理、日志切分、数据分析、监控告警、行为回放等流程。

对于一名前端开发工程师来说,也就意味着工作不再局限于前端业务的开发工作,需要有Nginx服务运维能力、实时/离线分析能力、Node应用开发运维能力等等。

以下是一张完整的监控流程图:

在《一、前端监控之异常监控》里面,主要讲述的是日志采集日志上报这2部分,这些是前端需要做的部分。

但是,后面还有很多事情需要后端来实现。

1、日志接收建设后端应用,提供日志上报接口给到采集SDK

2、数据发布后端应用接收到的日志后处理成可被实时流计算处理的流式数据,如DataHub、SLS、Kafaka等

3、日志处理流计算平台对流式数据进行实时处理,可基于Flink、Spark、Storm等

(1)日志数据分析基于样本的实时分析:基于OLAP数据库进行实时分析,如阿里云Hologres、Hive、Kylin等

(2)日志数据汇总计算将原始日志实时汇总计算成指标(如错误率)后存入OLTP数据库,如阿里云RDS、GaussDB、TBase等

4、监控告警建设前台应用,实现监控、告警

5、行为回放:还原异常是如何触发的,具体到每一步的操作,返回了什么样的异常,在哪个文件,在第几行代码等等信息。

如果公司有这样的财力,支持做整个前端的监控体系,那么还可以琢磨琢磨,但是业务才是企业的生存之道,一般情况下,没有机会给你慢慢的搞一套出来,你不得不寻找其他优质的开源方案。

监控的意义

盈利

公司的目的是盈利。一方面公司要控制成本,我们可以看到投入QA人力日益削减,另一方面又需要我们线上运行的代码更加稳定,有什么办法可以做到呢?一个高效的方法就是加强监控。

效率

通过监控,可以快速自主地发现问题。

可以将收集上来的数据进行分类筛选,然后设置报警告知。根据我们监控内容,设定不同的阈值,当达到阈值的时候,第一时间有效的通知到对应的研发人员,进行分析和修复。

通过监控,可以全方位了解页面运行情况。

通过信息收集,可以获取到用户访问的区域、机型、APP版本等基础用户信息,同时也可收集到页面运行时的性能,要知道性能就是金钱(打开速度一定程度上会影响用户的去留)。

通过监控,可以指导后期项目开发。

经过一段时间的沉淀,我们收集过的错误,可以绘制出一个报表,统计出我们某段时间内问题产生的原因、报错、解决方案。

规范

从研发流程上来看,我们的项目不是完成上线就万事大吉。需要监控页面线上运行情况,根据监控的数据及时进行复盘,循环迭代优化,形成持续的研发闭环生态。

以上这些监控的意义,是日后流程机制的指南,是研发同学的行为准则,也是老板、高工某些关键时刻做决策的参考内容之一。通过监控,更加直观地、全方位立体化地了解产品。

区分监控与统计

监控又分为异常监控和性能监控。即可以收集前端异常信息,也可以收集性能指标。

除了收集信息以外,还需要做一下统计分析。现有的统计平台,如:thunder,spy等通用的平台。

监控不同于统计,统计关注的是一段时间内访问情况的一个总和,对于实时性要求并不那么高,可以延迟上报、累计上报;监控则恰恰相反,关注的是页面运行时的情况。

成熟方案

市面上有很多成熟的方案可供选择:Sentry、FunDebug、ARMS(阿里)等等。但不论哪种系统的体系都基本是符合上文所讲到的体系。

Sentry
Sentry 是一个开源的实时错误追踪系统,可以帮助开发者实时监控并修复异常问题。
它主要专注于持续集成、提高效率并且提升用户体验。
Sentry 分为服务端和客户端 SDK,前者可以直接使用它家提供的在线服务,也可以本地自行搭建;
后者提供了对多种主流语言和框架的支持,包括 React、Angular、Node、Django、RoR、PHP、Laravel、Android、.NET、JAVA 等。
同时它可提供了和其他流行服务集成的方案,例如 GitHub、GitLab、bitbuck、heroku、slack、Trello 等。
目前公司的项目也都在逐步应用上 Sentry 进行错误日志管理。

Fundebug
Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 
自从2016年双十一正式上线,Fundebug累计处理了10亿+错误事件,付费客户有阳光保险、荔枝FM、掌门1对1、核桃编程、微脉等众多品牌企业。

这里选择使用的是 Sentry 的开源版本。

为什么选择Sentry

主要是因为一个字:钱!绝大部分监控系统都是需要收费的,而sentry则是免费的。其次是开源的,再看看star数量。

注意:sentry免费也只是普通版本。高级版本也是需要收费的!!另外开源协议使用的是Apache!

参考资料

Apache开源协议:https://baike.baidu.com/item/Apache/6848636?fr=ge_ala

https://juejin.cn/post/6936562262480158728

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sentry是一个前端监控工具,用于捕获和报告前端应用程序中的错误和性能问题。在React项目中使用Sentry,可以通过在入口文件index.ts中初始化Sentry来开始监控。\[1\]初始化Sentry的代码示例如下: ```javascript import * as Sentry from "@sentry/react"; import { BrowserTracing } from "@sentry/tracing"; Sentry.init({ dsn: "https://[email protected]/121", integrations: \[new BrowserTracing()\], release: '0.0.1', tracesSampleRate: 1.0, }); ``` 除了捕获错误,Sentry还可以收集页面性能方面的数据。通过在Sentry.init()中添加`new Integrations.BrowserTracing()`,可以将浏览器页面加载和导航检测作为事务,并捕获请求和其他性能指标。\[2\] Sentry是一个由各种语言的SDK和数据后台服务组成的系统。通过Sentry SDK的配置,可以上报与错误关联的版本信息和发布环境。Sentry SDK还会自动捕获异常发生前的相关操作,以便后续的异常追踪。异常数据上报到数据服务后,会通过过滤、关键信息提取和归纳展示在数据后台的Web界面中。\[3\] Sentry的功能架构如下图所示。 #### 引用[.reference_title] - *1* *2* *3* [基于Sentry的前端性能监控平台搭建与应用](https://blog.csdn.net/xiangzhihong8/article/details/128798778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值