前端同学在可观测性的启蒙与初试探--快速实现根因分析/业务大盘

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
EMR Serverless StarRocks,5000CU*H 48000GB*H
可观测监控 Prometheus 版,每月50GB免费额度
简介: 前端同学在可观测性的启蒙与初试探--快速实现根因分析/业务大盘

512f0a6cb8ba4719ba08ca7fda16e4c2~tplv-k3u1fbpfcp-zoom-crop-mark_3024_3024_3024_1702.webp (1).jpg

Ideas Worth Spreading


写在前面的话


特别感谢


感谢在最早开发鱼骨图带领我前进的技术负责人-佳哥(总监)。他一丝不苟的技术态度、严密的逻辑和高要求(这里大家都懂的),让我成长。这里是他在语雀的博客,其中有一篇是关于技术体系建设之路-可观测,正是有他的指引和思路,才有了本文的可能。


背景介绍


本人前端开发,贴代码的话,代码太多了,如感兴趣,可私聊,本文共三千字,阅读需要时间5分钟。


本文首发于掘金,是真实开发场景的“小结晶”,以文章为契机,将过程和尤其是设计和思考点,分享出来,既是思考又是反思,同时也把在酝酿场景化大盘(这里先这样称呼)类似产品分享出来。

a8864649385f4f80bc04d70f019be33d~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp.jpg

首先


本文是一系列图表讲解的第二篇,第一篇讲到了前端性能调优的实际案例-小白都看的懂,主要是讲解到了通过时序图散点图进行前端性能优化,今天本篇文章将从另外一个角度,特别是业务数据域性能指标结合的实践的角度,和大家一起认识一些新的图表。


其次


以技术人的角度,剖析技术同学应该关注的几种图表,尤其是对于图表中必须展示业务的思路,希望能抛砖引玉,哪怕能对企业技术架构、cto或者cio以及研发产品测试的同学有一丁点的启发,我将无比自豪。


  • 如果感觉本文还不错,欢迎点赞关注收藏私信
  • 如果感觉本文非常糟糕,欢迎私信
  • 如果对可观测性非常感兴趣,欢迎私信

正文


为什么不建议研发只做性能大盘


数据孤岛,数字倍感冰冷


单纯的性能指标是冰冷的,堪比hr要求给出裁员名单下午走完流程的通知,否则也不会出现业务不佳研发买单的情况了。


技术服务于业务,但大抵几个性能指标构成的大盘,扛不起业务的大旗,但是投资业务大盘就不一样了,说文绉绉点叫做能直接关联业务指标,直白点叫做money,不论是toB还是toC,都可能会有各自关注的业务指标点。


ToB企业的性能大盘--服务效率为王


大部分ToB企业在乎的是为企业提供高质量的服务:解决客户痛点是购买的动力,持续不断深化才有复购的契机。从企业自身来讲,上面两个动作一般决定权在于决策或者管理者,不论是研发决策者还是公司管理层,更多希望一个好用的工具,不仅能够提供全面性而非局部深入的性能指标的汇总,更重要的凸显业务痛点。


ToC企业的性能大盘--流量访问制胜


大部分ToC企业更在乎流量,不同层级业务之间的流量曲线和性能指标存在天然的某种关系,但性能大盘中技术投入的高性能往往不一定是流量多的环节,如果没有流量地图,高性能的投入只能是凭架构师经验能力想当然。


性能大盘投入产出入不敷出


不论是什么企业,想要单纯依靠性能大盘就能解决业务痛点或者解锁流量瓶颈,虽然不完全等同于“妄想”,但现实成本花费多大精力与背后产生多大效果(ROI)不言而喻。


业绩支撑数据难以令人信服


单纯的业务大盘往往令人一头雾水,最简单的突破点便是前端报错了,根本来不会上报到业务系统,或者后台某个节点挂掉又起来了,先不说影响用户体验,最重要的是根本无法与业务转化挂钩,更不要说指明当前技术架构的薄弱点了。


可观测性数据还不错,能和业务结合起来吗?


可观测性数据按照场景去理解,按照商业场景方式进行归类,处理并分层,会带来积极的"化学效果",按照这种方式使用可观测性数据,能更好的驱动业务,做出更符合商业的技术选型商业决策。 这种做法,能更适应数字化转型it技术决策的导向。

b55b09c29ab4438d8902d29146da53a9~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp.jpg


如何结合,有没有现实的思路


如何结合?本文结合工作实际场景,给出一份既是产品思路更是技术设计的答案。


拓扑图为啥不是业务数据和性能的突破口


常见的拓扑图可能有应用拓扑,Gartner曾给出的“超大型”服务应用拓扑如下。

3b51db687e7b4d89bab609605939371f~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp.jpg


虽然真实服务调用可能没有上图那么复杂,架构拓扑到底能说明什么呢?


(上图摘自10 companies that paved the way for developing microservices


架构拓扑

系统架构性能的瓶颈可能来自系统的架构,通过架构拓扑的绘制,能够反应当前架构的一个状态。举个简单例子:

11e56803d9ff474da2784de1b8214a9a~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp.jpg

图表说明


上面这个图表demo,其中每个节点代表一个服务这几个服务分别是:


  • ruoyi08-system,web server和java后端逻辑
  • mysql08,数据库服务
  • ruoyi-08-gateway,网关服务
  • redis08,缓存服务
  • ruoyi-08-auth,auth服务


这个非常简单的demo图,能很简单的反映出5个服务之间的调用关系。(如果对这个感兴趣,也可以查看我写过的文章:如何快速搭建全链路平台,展示服务拓扑以分析性能?


而且,每个节点都有一定的大小尺寸,尺寸大小可以用性能指标来填充,常见的性能指标可以是:


  • “请求数”
  • “P50响应时间”
  • “P75响应时间”
  • “P99响应时间”
  • 错误率


注:图表摘自观测云公开demo

核心场景(接口)的可视化


现实中的应用拓扑虽然比这个复杂,但即便是这个简单的拓扑也不能很好的反应业务指标,以电商网站为例,无法看到重要业务场景,比如登录或者支付的实际点击人数,或者错误率


所以也有类似同学(也就是我)将服务节点换成了接口节点,如下图所示。


0e92163f0d434f38a68dc15a9ef47278~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp (1).jpg

图表说明


图中分别是把接口按照调用先后的顺序进行排列,每个接口分别展示的内容是:


  • 响应时间
  • SLA
  • 调用量


这在一定程度上满足了接口层级的场景监听,但实际中可能更多的需要体现接口调用的先后关系,同时也要能更生动的可视化展示接口调用量的情况,而不是冰冷的数字,尤其是调用量的大小关系,于是我想到了漏斗图


漏斗图分析业务数据很不错?


为什么想到漏斗图?


漏斗图一般适用于具有规范性、周期长、环节多的流程分析,通过漏斗图比较各环节的数据,能够直观地对比问题。另外漏斗图还适用于网站业务流程分析,展示用户从进入网站到实现购买(用户旅程)的最终转化率,及每个步骤的转化率


举一个实际的demo


举一个常见的电商网站的例子,见下图:

3ed13c31cc7e47ecb60bbde27a4649d7~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp.jpg

这里有四层:

  • 某商品的访问人数
  • 添加到购物车的人数
  • 生成订单的数量
  • 支付成功的数量

我们能看到每层的流量和先后关系,这就比较直观了。可是错误率等去了哪里,又该如何设置?

性能指标去哪里了?如何将漏斗图用做根因分析

但这里出现了比较严重的问题,就是我看不到性能指标,而且作为研发的负责人,一旦某个服务不可用,在这个图上是看不到的,而且突发情况,更要定位故障,做根因分析,这种漏斗图完全无法达到。

鱼骨图做根因分析还不错,能不能试一试?

管理统计学上,学过鱼骨图,它通常用于拆解问题归因,所以也有人把它叫做因果图

鱼骨图的构成

一般会用鱼骨上长出鱼刺,上面按照一定方式列出一些因素,有助于说明各个原因是如何影响,以及最终结果。 这里我找了一张百度百科中有关鱼骨图的图片,供大家参考:

82756b838e7f40d5aac0426837a6025b~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp (1).jpg


这是百度百科中的图片,单纯看百度百科的例子,太理论了,很难和实际的技术场景联系起来。这时我会自己的亲身经历多举个栗子。


鱼骨图的真实例子


2020年当时我在一家创业公司做技术中台,主要服务于研发做系统稳定性建设,当时的痛点是想把系统稳定性和业务数据结合起来。


鱼骨图的idea 萌芽了


虽然听上去要做的事情很简单,切入点大家都接触过,就是扫码点餐或者点外卖的场景:从进入小程序到餐送到桌上或者配送成功。

拆解鱼骨图流程


整体的大概流程如下:


扫码点餐 --> 进入首页 --> 选择门店 -->商品列表 --> 购物车-->结算支付-->订单-->制作-->配送

熬夜 画图 写代码 喝红牛 开会 画图 写代码


有了Idea就得好好找资源设计开发上线,经过几十瓶红牛,终于上线了一个版本。

有关这次开发的过程,可以查看我的文章:记一次APM的开发经历


经过两周的调研、设计、研发,终于收获了如下大盘,里面的每一条线都是我这个前端同学敲代码敲出来的。

af3a945f2b5847f3a71ba9ac55907055~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp.jpg

鱼骨图说明


图中是一个很具象化的场景,基本一眼就能看出来,是大家可能都接触过的扫码点餐或者点外卖的场景,图中从进入小程序到的配送成功(餐送到桌上)。而且图中的每个节点都有


  • 调用量
  • 错误率
  • SLA

性能指标和业务数据基本雏形


这样一个基本的性能指标业务数据可视化图表的雏形就出来了。

为了完善,还针对节点设置阈值,不同的节点出现某个性能指标(比如错误率)达到某种情况(比如突增),就触发动作(比如告警)。


我以为一张鱼骨图就够了


为啥不是通用模板


然而,每个研发部门,或者每个业务线都需要有类似的业务场景模型出来,一变多或者举一反三的通用模型在这里就成了摆在我面前的场景。


bpmn可能不错,但是总不能寄希望每个业务场景按照bpmn那种耗时费力的情况下操作吧,而且关联也是一个很大的问题。但低代码可能是一条思路。


低代码如何实现的demo

eef0241ab2ab4a2da6cc31d3e9d114db~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp.jpg

场景设计说明


此处特别感谢观测云产品经理Rinck(因为以前的所在技术中台,产品都是魏总和团队成员)


节点说明


每个维度对应一根鱼骨,每一条查询语句对应一根鱼刺,每个维度下面最多有5条查询语句,每条语句返回一个值。


交互说明


hover到鱼刺鱼骨)时,tooltip显示查询结果


表单说明

第一个表单项目


  • 指标
  • 日志
  • 基础对象
  • 自定义对象
  • 应用性能
  • 用户访问
  • 安全巡检
  • 网络

第二个表单项目


第二个表单项目是第一个表单的子集,可能 是


  • 指标集
  • 日志来源
  • 具体基础对象
  • 自定义对象
  • 应用性能对应的服务名
  • 用户访问对应的页面、会话、性能指标等

第三个表单项目 聚合函数

表达式操作符说明


下拉框中操作符包含


  • “=”
  • “!=”
  • “>=”
  • “<=”
  • “>”
  • “<”

举个例子,比如想看首页页面的访问量

2bd0c772288648b18484cb20e43d70e3~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp.jpg


举个例子,比如想看某个城市点击购物车按钮的次数


鱼骨图可视化冲击力不够怎么办?


比如鱼骨图中单个节点之间的请求次数,不能很好的通过可视化的角度展示出来。

这里我们想到了每个节点其实是可以设置尺寸的,同时针对不同的量(错误率流量点击情况、或者事件页面访问次数)可以设置成不同的颜色。


6681ccb9e0fb4e56810d5c0253e30b5a~tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp (1).jpg

开发设计总结


本文基本以亲身开发设计经历,具备以下功能:


  • 有丰富的受众:常见系统架构师CTO研发产品测试
  • 有强大的数据来源:性能数据用户数据业务数据基础设施数据日志
  • 有丰富的场景:作战大盘根因分析系统大盘


本文结合可视化的图表,提供了一种思路,快速实现了业务数据性能指标的结合。整体来看这个产品,能够快速实现业务数据用户访问应用性能指标的快速可观测,帮助CIOCTO产品经理研发测试快速实现多种数据的可观测。


参考链接


漏斗图

拓扑图

场景仪表板











目录
相关文章
|
11天前
|
前端开发 大数据 数据库
🔥大数据洪流下的决战:JSF 表格组件如何做到毫秒级响应?揭秘背后的性能魔法!💪
【8月更文挑战第31天】在 Web 应用中,表格组件常用于展示和操作数据,但在大数据量下性能会成瓶颈。本文介绍在 JavaServer Faces(JSF)中优化表格组件的方法,包括数据处理、分页及懒加载等技术。通过后端分页或懒加载按需加载数据,减少不必要的数据加载和优化数据库查询,并利用缓存机制减少数据库访问次数,从而提高表格组件的响应速度和整体性能。掌握这些最佳实践对开发高性能 JSF 应用至关重要。
25 0
|
2月前
|
缓存 监控 前端开发
前端开发中的性能瓶颈分析与优化
【7月更文挑战第27天】前端开发中的性能优化是一个系统工程,需要从多个角度入手,综合运用多种策略。通过减少网络延迟、优化资源加载、优化DOM操作、优化JavaScript执行以及第三方服务优化等措施,可以显著提升前端应用的性能。同时,通过性能监控和调优工具的使用,可以持续监控和优化应用性能,确保用户获得流畅、高效的体验。
|
4月前
|
前端开发 JavaScript Android开发
【Uniapp 专栏】分析 Uniapp 与其他前端框架的异同
【5月更文挑战第16天】Uniapp是一个基于Vue.js的跨平台前端框架,能将代码编译成iOS、Android、H5等多个平台应用,简化跨平台开发。相比React和Angular,Uniapp更适合移动应用,减少平台适配工作。Vue.js的组件化和灵活性在Uniapp中得到延伸,增加了移动端特性。而Flutter性能优越,但学习成本高。开发者应根据项目需求和技术栈选择合适的框架。
117 4
【Uniapp 专栏】分析 Uniapp 与其他前端框架的异同
|
3月前
|
缓存 监控 前端开发
前端性能优化:从系统分析到实践策略
**前端性能优化概述** 本文探讨了前端性能优化的重要性,强调了从整体角度而非仅关注局部优化手段的必要性。作者指出,建立性能评价系统是关键,通过**性能指标**(如FP、FCP、LCP、CLS等)来量化页面性能,然后使用**性能监控**工具收集数据。文章列举了9个关键性能指标,并介绍了如何通过SDK或工具进行数据收集。 在实际操作中,文章提到了**性能优化方法论**,包括了解何时何地出现性能问题,以及如何根据性能指标采取相应优化措施。作者推荐使用Chrome的Lighthouse工具进行性能测试,并讨论了**CDN**、**缓存策略**和**懒加载**作为常见的优化手段。
99 0
|
4月前
|
SQL Oracle 前端开发
Oracle效率分析,Github标星25K+超火的前端实战项目
Oracle效率分析,Github标星25K+超火的前端实战项目
|
4月前
|
前端开发 JavaScript 开发者
一个前端应用性能分析工具
一个前端应用性能分析工具
|
4月前
|
前端开发 JavaScript 搜索推荐
前端网页手册(2)--菜鸟教程网站分析
前端网页手册(2)--菜鸟教程网站分析
46 2
|
4月前
|
前端开发 JavaScript 网络协议
【专栏】探讨了前端性能优化中的 Performance 工具,它能帮助开发者分析页面加载速度和交互体验
【4月更文挑战第29天】本文探讨了前端性能优化中的 Performance 工具,它能帮助开发者分析页面加载速度和交互体验。通过 Performance,可检测资源加载时间、JavaScript 执行时间、重绘与回流等关键指标,找到性能瓶颈。文中列举了三个实践案例,如优化图片加载、减少 JavaScript 执行时间和避免重绘回流,展示如何利用 Performance 改进页面性能,提升用户体验。开发者应定期使用 Performance 分析并学习新优化技术,以适应Web开发的快速发展。
207 1
|
4月前
|
前端开发 JavaScript 开发者
深入理解前端性能优化:从加载到渲染的全流程分析
前端性能优化是Web开发中的关键一环。本文将从加载资源、解析HTML、执行JavaScript、样式计算、布局和渲染等多个方面深入探讨前端性能优化的全流程,为开发者提供全面的技术指南和实用建议。
|
4月前
|
Rust 前端开发 vr&ar
未来前端技术发展趋势分析
在数字化时代,前端技术一直处于快速发展的状态。本文将从WebAssembly、PWA、AR/VR等方面探讨未来前端技术的发展趋势,为读者揭示前端技术的新篇章。