什么是前端的可观测性呢? 其实可观测性并不是一个新鲜的概念,在过去公司的内部系统中可能分散着各个B端系统:有看性能的,有看 JS 错误数量的,有看埋点的,各自实现可能大不相同。而可观测性是把它们进行大一统,说白了也就是一个“全链路”的前端监控体系。
mindmap
root((前端监控体系))
性能监控
页面加载
FP/FCP/LCP
TTI/FID
CLS
资源加载
资源时间
资源大小
资源类型
接口监控
接口耗时
成功率
错误率
行为监控
PV/UV
停留时长
点击行为
路由跳转
用户轨迹
曝光数据
错误监控
JS错误
语法错误
运行时错误
Promise异常
接口异常
请求异常
响应异常
资源加载
脚本加载
样式加载
图片加载
跨域问题
白屏问题
case图来自 https://grafana.com/products/cloud/frontend-observability-for-real-user-monitoring/
我们来仿古问今一下,像这样的全链路系统以前存在吗?事实是存在的。
https://github.com/dianping/cat
比如说许多国内公司会在服务端采用的 Cat
系统, 如果你在 Node.js
端侧有接入的话,倘若发生了服务端的 Js Error
报错,我们可以在后台的面板上看到一整个的请求调用链(不限于 Node.js
和后端的交互都能看到),对于排查问题来说是非常方便。但是它对于我们在客户端发生的错误就无能为力了。因为客户端实际上不在微服务链路中。
当然需要注意的是 Cat
不是一个标准的全链路系统。
然后现在有一个叫**OpenTelemetry的组织,在制定可观测性的一系列标准**
对于前端来说,最需要关心的是这一部分:
值得注意的是,**OpenTelemetry现在对浏览器端的支持现在还处于实验性阶段,并且日志相关的部分还处于开发之中。**
我们也可以在代码中看到,现在的检测只支持 fetch
请求, document load
和用户交互等事件。