怎么设计一套前端监控系统?

前端开发第 13 / 13 题答题框架
参考思路:数据采集(错误/性能/行为)→上报策略(采样/批量/送出时机)→平台消费(告警/定位)→性能指标选择(FCP/LCP/CLS)。讲清为什么自建或选型。

五个经典回答示范

回答一 · 校招应届版

我会做四层:错误采集用 window.onerror 捕获同步异步错误、unhandledrejection 捕获 Promise;性能采集用 PerformanceObserver 拿 FCP/LCP/CLS;行为采集记录路由变化和关键点击;上报做批量合并、采样控制,失败用 sendBeacon 兜底。数据进来后按版本和页面聚合出告警。

回答二 · 1-3年经验版

我在项目里接过 Sentry 并做过自研补充。踩过三个坑:跨域脚本的错误拿不到堆栈,要给脚本加 crossorigin 并配 CORS;sourcemap 不能上传到线上,要在构建时上传到监控平台;采样不能一刀切,错误全量、性能按 10% 采样。监控要回答三个问题:影响了多少人、哪个版本引入、怎么复现。

回答三 · 资深版

监控系统我会从数据价值倒推设计:告警链路要秒级、要能聚合去噪,否则没人看;定位链路要有用户维度回放——错误堆栈、行为轨迹、网络请求关联;治理链路是把错误和版本、发布人自动关联形成闭环。指标上除了 Web Vitals,更要定义业务级指标如支付页 JS 错误率,技术监控最终服务业务可用性。

回答四 · 追问应对

追问『上报会不会影响性能』:批量合并、空闲时发送、sendBeacon 不阻塞卸载;『白屏怎么监控』:渲染完成后检测根节点是否有内容加采样截图上报,结合接口成功率归因;『怎么防止刷量』:上报加签名和时间窗限频,服务端做异常流量识别。

回答五 · 反面示范

『监控就是接个 Sentry,报错了它会发邮件,我们收到邮件再让用户反馈复现步骤。』——点评:只到工具接入层;让用户提供复现步骤说明没有采集上下文,用户体验差定位慢。缺少采样、告警治理和归因闭环的设计。

怎么练这道题
  1. 打开 模拟练习,选择「前端开发」方向,限时 3 分钟作答本题。
  2. 对照上方答题框架,逐点检查:哪些要素没覆盖、哪里表达啰嗦。
  3. 用自己项目的真实经历替换框架中的占位内容,重讲一遍并录音回听。

这类题在真实面试中常被追问细节,
建议进入限时模式练一遍。

开始限时演练