如何快速实现根因分析/业务大盘

news2024/11/18 15:24:39

Ideas Worth Spreading

写在前面的话

特别感谢

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

背景介绍

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

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

首先

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

其次

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

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

正文

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

数据孤岛,数字倍感冰冷

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 虽然真实服务调用可能没有上图那么复杂,架构拓扑到底能说明什么呢?(上图摘自10 companies that paved the way for developing microservices)

架构拓扑

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

图表说明

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

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

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

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

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

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

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

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

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

图表说明

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

  • 响应时间
  • SLA
  • 调用量

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

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

为什么想到漏斗图?

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

举一个实际的demo

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

这里有四层:

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

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

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

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

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

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

鱼骨图的构成

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

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

鱼骨图的真实例子

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

鱼骨图的idea 萌芽了

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

拆解鱼骨图流程

整体的大概流程如下:

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

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

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

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

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

鱼骨图说明

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

  • 调用量
  • 错误率
  • SLA

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

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

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

我以为一张鱼骨图就够了

为啥不是通用模板

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

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

低代码如何实现的demo

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

节点说明

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

交互说明

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

表单说明

第一个表单项目

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

第二个表单项目

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

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

第三个表单项目 聚合函数

表达式操作符说明

下拉框中操作符包含

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

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

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

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

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

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

开发设计总结

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

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

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

参考链接

漏斗图

拓扑图

场景仪表板

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(new online judge)1322蓝桥杯2017初赛 包子凑数

P1322 - [蓝桥杯2017初赛]包子凑数 - New Online Judge 题目分两步&#xff1a;&#xff08;1&#xff09;判断结果是否为INF&#xff1b;&#xff08;2&#xff09;如果不是INF&#xff0c;统计数量。考点是“数论gcd简单DP”。 1. 什么时候答案不是INF 什么时候答案不是INF…

ADSP21489之CCES开发笔记(六)

一、仿真调试CCES代码 1、导入21489的Demo代码 2、修改设计SS4SH存储代码&#xff0c;如红框部分 3、搭配USBi调试&#xff0c;修改如下代码部分 oSSnConfig.bSkipInitialDownload 0; //usbi调试时&#xff0c;设置为0&#xff0c;默认为1 oCommConfig.nSelectSPI SELECT_SP…

英文Essay写作中存在哪些门道?

刚进入英国学校学习的小伙伴&#xff0c;每次放假都要赶Essay。那么什么是Essay呢&#xff1f;Essay怎么写呢&#xff1f;今天我们就来讲讲Essay中的门道。 A little partner who has just entered a British school must catch up with Essay every holiday.So what is Essay?…

入门:树莓派装系统、亮机,无需外接显示器键盘鼠标(保姆级教程)

借鉴了&#xff1a;https://blog.csdn.net/qq_24211837/article/details/120255311 1.官网下载树莓派系统 https://www.raspberrypi.org/software/operating-systems/ 安装后页面还是比较柔和的 2.格式化SD卡 首次入门&#xff0c;还是先学习前辈的方法进行操作 下载格式…

如何自定义代码生成器(下)

4.2 编码 4.2.1 常量类 package freemarker.constant;public class TemplateConstant {//实体类模板public static final String entityTemplate "templates/Entity.ftl";//Mapper模板public static final String mapperTemplate "templates/Mapper.ftl&quo…

k8s教程(12)-pod 全自动调度

文章目录01 引言02 Deployment & RC2.1 功能2.2 举例03 文末01 引言 声明&#xff1a;本文为《Kubernetes权威指南&#xff1a;从Docker到Kubernetes实践全接触&#xff08;第5版&#xff09;》的读书笔记 在前面的博客《k8s教程&#xff08;11&#xff09;-pod调度概述》&…

【2022秋线上作业-第5次-第11-13周】选择题

2-1 下列线索二叉树中&#xff08;用虚线表示线索&#xff09;&#xff0c;符合后序线索树定义的是&#xff1a;B 解析&#xff1a; 后序遍历dbca 所以d前驱为null&#xff0c;d后继为b&#xff0c;c没有孩子&#xff0c;前驱为b&#xff0c;后继为a&#xff0c;a有左右孩子。…

拓扑排序板子练习

目录 一、前言 二、拓扑排序板子 三、题目&#xff1a;拓扑顺序 1、上链接 2、基本思路 3、代码 &#xff08;1&#xff09;C&#xff08;AC&#xff09; &#xff08;2&#xff09;python&#xff08;AC&#xff09; 四、题目&#xff1a;可达性统计 1、上链接 2、…

C++线程创建的方式和使用

进程与线程 进程 简单的可以认为是一个程序执行的过程。进程就是活跃的程序&#xff0c;在内存中运行&#xff0c;占用系统的资源。线程 线程也叫轻量级进程&#xff0c;通常一个进程包含若干个线程。线程可以利用进程所拥有的资源。在引入线程的操作系统中&#xff0c;通常都…

关于软件文档写作

关于软件文档写作目录概述需求&#xff1a;设计思路实现思路分析1.业务逻辑2.代码表达3.形式归纳4.方式和工具参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better resul…

JS模块化—CJSAMDCMDES6-前端面试知识点查漏补缺

本文从以时间为轴从以下几个方面进行总结JS模块化。从无模块化 > IIFE > CJS > AMD > CMD > ES6 > webpack这几个阶段进行分析。 历史 幼年期&#xff1a;无模块化 方式 需要在页面中加载不同的js&#xff0c;用于动画&#xff0c;组件&#xff0c;格式化…

【软件测试】一个边界值事故,领导leader心里苦季度奖金没了还被罚3K......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 项目组长&#xff1…

java类的练习--下面给出一个根据雇员类型利用多态性完成

java类的练习–下面给出一个根据雇员类型利用多态性完成… 题目 ​ 下面给出一个根据雇员类型利用多态性完成工资单计算的程序。定义一个类Employee作为超类&#xff0c;Employee的子类有Boss&#xff08;每星期发给他固定工资&#xff0c;而不计工作时间&#xff09;、Piece…

顶级“Redis学习笔记”,缓存雪崩+击穿+穿透+集群+分布式锁,NB了

如果你是一位后端工程师&#xff0c;面试时八成会被问到 Redis&#xff0c;特别是那些大型互联网公司&#xff0c;不仅要求面试者能简单使用 Redis&#xff0c;还要深入理解其底层实现原理&#xff0c;具备解决常见问题的能力。可以说&#xff0c;熟练使用 Redis 就是后端工程师…

超140支爆款B站恰饭,2022年B站双11战报来了!

- 导语 从0到3.06亿月活&#xff0c;从“与世无争”到今天手持高粘性、高活跃的用户参战双十一&#xff0c;在B站的品牌们有了更成熟的营销模式。 2022年双十一已经落下帷幕&#xff0c;在B站全面拥抱双十一的火热氛围下&#xff0c;有哪些品牌做到了声量、销量双丰收&#x…

【毕业设计】深度学习人脸表情识别系统 - python

文章目录0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码4 最后0 前言 &#x1f525; Hi&#xff0c;大家好&#xff0c;这里是丹成学长的毕设系列文章&#xff01; &#x1f5…

基于 BERT 实现的情感分析(文本分类)----概念与应用

文章目录基于 BERT 的情感分析(文本分类)基本概念理解简便的编码方式: One-Hot 编码突破: Word2Vec编码方式新的开始: Attention 与 Transformer 模型四方来降: 超一流预处理模型 BERT 诞生BERT 实现情感分析数据预处理并创建数据集定义网络模型定义训练函数与评估函数设置损失…

AVL树的插入(C++实现)

1. 概念 AVL树&#xff08;Adelson-Velsky and Landis Tree&#xff09;于1962年被提出&#xff0c;是计算机科学中最早被发明的平衡二叉查找树。AVL树得名于它的发明者G. M. Adelson-Velsky和Evgenii Landis。 在AVL树中&#xff0c;任一节点对应的两棵子树的最大高度差为1&…

大一新生HTML期末作业 个人网页王嘉尔明星介绍网页设计与制作

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

领悟《信号与系统》之 信号与系统的描述-上节

信号与系统的描述-上节一、信号分类1. 一维信号和多维信号2. 确定信号和随机信号3. 连续时间信号和离散时间信号4. 周期信号和非周期信号5. 能量信号和功率信号二、常见工程信号1. 正弦信号2. 指数信号3. 取样信号4. 单位矩形脉冲信号5. 符号函数在真实的物理世界中&#xff0c…