运维困局下确保系统稳定的可行性
业务高速发展背后的困局
随着业务的快速发展,运维体系也逐步的完善起来。业务的稳定性和服务质量也在监控、可用性等体系的相互环抱下健康地成长。所有的问题、故障及影响稳定性的因素都在可控、可收敛的范围内,一切都向着好的方向发展。
这一切的背后真的和看起来一样美好吗?实则不然,业务的高速发展势必会留下种种隐患和问题。想想你是否也被类似的种种问题困扰着:
- 1. 监控报警通知的噪音太大,正常的报警通道被人为拥塞,实际阅读率极低;是不是很熟悉?试想如果一个非常重要的业务监控报警被这样淹没,而被人为的忽略,后果作为运维的你会不会后背一身冷汗?除了对监控进行分层、精简监控报警外,我们还能做些什么?
- 2. 业务数据出现异常,但报警、可用性数据却一直处在正常状态;面对前端业务同学「为什么监控没有发现?」的指责,除了说一句「对不起,下次改进提升」。我们还能做些什么?
- 3. 出现报警、可用性异常波动情况,但业务指标并没有明显波动。为了解决这个问题,明明是对业务非常有帮助的改进,但业务同学就是不理解,不支持。除了满满的无力感外,我们还能做些什么?
问题出在哪里
抛出这些问题,我们再透过问题逐一看看它背后的实质是什么?
为什么会有大量的监控报警?它的根本原因还是我们采用了通过广布点、高覆盖等方式并加以「查漏补缺」的方法来尽可能地减少因为监控点缺失而导致的业务异常时监控漏报的情况。
对,没错。初衷是好的,但结果往往事与愿违。特别是在监控点数量及业务复杂度不断提高时,由此监控报警带来的信息噪音就会越来越大。当报警信息量达到一个临界点时,所有的报警都将成为噪音甚至污染。而监控报警系统的用途也会在达到这个临界点后,像「多米诺骨牌」一样瞬间垮掉,走向另一方向的无底深渊。
大量的技术指标监控是否被业务同学认可?从实际的情况来看,情况可能并不乐观。经常会出现运维与业务同学在对标、讨论问题时,大家都是在相互「鸡同鸭讲,不知所云」。
对,或许问题的根结就在这里。我们做的大量监控是否能对业务指标的稳定及提升起到正向的帮助呢?
特别上述第 2、3 点提到的情况从根本上讲就是运维与业务同学没有在同一语境导致的。一边是业务数据导向思维,一边是技术数据导向思维。
看似不可调合的矛盾难道就没有解决办法了吗?当然不是了,「业务大盘」就是在这种环境和情况下应运而生。「业务大盘」并不单单是一个工具、报表或平台,它是一种基于业务关键指标为导向的技术化驱动思维方式,让运维及业务等多方在相同语境下沟通的方法。
问题的破解之道
首先,运维同学需要去转变思路,站到业务方的立场上去考虑问题。抛开所有的技术指标不谈,先与业务同学进行尝试沟通,了解他们最关心的指标是什么?
- 以 Web 类业务为例,业务同学最关心的可能是 UV、PV、首页打开时长等;
- 以电商类业务为例,业务同学最关心的可能是交易转换率,交易成功率等;
- 以发行类业务为例,业务同学最关心的可能是下载转换率,次日留存率等;
明确了一系列关键指标后,再从中提取最为关键的 1~3 项。为什么还要再次提取呢?
因为业务的关键、核心路径很重要,避免什么指标都去关注,结果就是什么都关注不到位的情况出现。
明确了关键指标后,我们再按照可用性体系的方法对关键指标进行建设。除了关键业务指标外,我们同时需要从以下几个纬度进行分析:
- 基线及范围:即关键业务指标的预设的基准值及活动阈值。以基线为中心,在活动阈值范围内的预期波动为正常。跳出活动阈值范围的即为异常。
- 环比:即关键业务指标同一时间周期及上一时间周期数据进行比较。比如,17 点22 的结果与 17 点 21 分的结果进行对比。如结果波动在阈值范围内即为正常,反之为异常。
- 同比:即关键业务指标在两个时间周期内相同时间点的比较。比如,4 月 25 日的17 点 01 分的结果,与 4 月 24 日的 17 点 01 分的结果进行对比。如结果波动在阈值范围内即为正常,反之为异常。
为了减少解决误报的情况,可以结合环比、同比,甚至基线指标综合使用。
写在最后
有了相应的「业务大盘」指标数据结果后,因为是基于业务核心指标为导向,就更容易将运维及业务相关同学放到同一语境下进行沟通,所以目标就更加清晰、解决问题的方向也更加聚焦。效率提升也就水道渠成。
当然,只有不断地与业务同学对标,改进及优化相关的核心指标才能持续地享受「业务大盘」带来的享受与快感。
基于「业务大盘」,我们是否还可以玩出更多的花样,以进一步提升业务的稳定性。欢迎关注计划近期出品的「让运维稳定性走在业务前面——灾备演练」
更多Linux咨询请查看www.linuxprobe.com
相关文章:
运维困局下确保系统稳定的可行性
业务高速发展背后的困局 随着业务的快速发展,运维体系也逐步的完善起来。业务的稳定性和服务质量也在监控、可用性等体系的相互环抱下健康地成长。所有的问题、故障及影响稳定性的因素都在可控、可收敛的范围内,一切都向着好的方向发展。 这一切的背后…...
springmvc中DispatcherServlet关键对象
以下代码为 spring boot 2.7.15 中自带的 spring 5.3.29 RequestMappingInfo 请求方法相关信息封装,对应的信息解析在 RequestMappingHandlerMapping 的 createRequestMappingInfo() 中实现。 对于 RequestMapping 赋值的相关信息进行解析 protected RequestMappi…...
某微e-office协同管理系统存在任意文件读取漏洞复现 CNVD-2022-07603
目录 1.漏洞概述 2.影响版本 3.漏洞等级 4.漏洞复现 5.Nuclei自动化扫描POC 某微e-office协同管理系统存在任意文件读取漏洞分析 CNVD-2022-07603https://blog.csdn.net/qq_41490561/article/details/133469649...
消息驱动 —— SpringCloud Stream
Stream 简介 Spring Cloud Stream 是用于构建消息驱动的微服务应用程序的框架,提供了多种中间件的合理配置 Spring Cloud Stream 包含以下核心概念: Destination Binders:目标绑定器,目标指的是 Kafka 或者 RabbitMQ࿰…...
使用Apache HttpClient爬取网页内容的详细步骤解析与案例示例
Apache HttpClient是一个功能强大的开源HTTP客户端库,本文将详细介绍如何使用Apache HttpClient来爬取网页内容的步骤,并提供三个详细的案例示例,帮助读者更好地理解和应用。 一、导入Apache HttpClient库 在项目的pom.xml文件中添加依赖&a…...
传输层协议—UDP协议
传输层协议—UDP协议 文章目录 传输层协议—UDP协议传输层再谈端口号端口号范围划分pidofnetstat UDP协议端格式UDP报文UDP特点UDP缓冲区基于UDP的应用层协议 传输层 在学习HTTP/HTTPS等应用层协议时,为了方便理解,可以简单认为HTTP将请求和响应直接发送…...
【改造中序遍历】 538. 把二叉搜索树转换为累加树
538. 把二叉搜索树转换为累加树 解题思路 改造中序遍历算法因为中序遍历的结果都是有顺序的 升序排序,那么如果先遍历右子树 在遍历左子树 那么结果就是降序的最后我们设置一个变量 累加所有的中间值 那么得到的结果就是比当前节点大的所有节点的值 /*** Definiti…...
2022年11月工作经历
11月 招聘 最近招聘C程序员和黑盒测试员。由于第一次招聘不知道如何处理,不断和同事沟通,摸索出一套简单的规则。C程序员:力扣随机第二题,如果运气不好可以再随机一两次。黑盒测试员:力扣随机第二题或第三题ÿ…...
使用广播信道的数据链路层
使用广播信道的数据链路层 广播信道可以一对多通信。局域网使用的就是广播信道。局域网最主要的特点就是网络为一个单位所拥有,且地理范围和站点数目有限。局域网可按网络拓扑进行分为星形网、环形网、总线网。传统的以太网就是总线网,后来又演变为星…...
第3章-指标体系与数据可视化-3.1.2-Seaborn绘图库
目录 3.1.2 Seaborn绘图库 1. 带核密度估计的直方图 2. 二元分布图 一维正态分布 联合分布...
excel中将一个sheet表根据条件分成多个sheet表
有如下excel表,要求:按月份将每月的情况放在一个sheet中。 目测有6个月,就应该有6个sheet,每个sheet中体现本月的情况。 一、首先增加一个辅助列,月份,使用month函数即可。 填充此列所有。然后复制【月份】…...
案例突破——再探策略模式
再探设计模式 一、背景介绍二、 思路方案三、过程1. 策略模式基本概念2. 策略模式类图3. 策略模式基本代码策略类抽象策略类Context类客户端 4. 策略模式还可以进行优化的地方5. 对策略模式的优化(配置文件反射) 四、总结五、升华 一、背景介绍 在做项目…...
uboot启动流程-涉及lowlevel_init汇编函数
一. uboot启动流程涉及函数 之前文章简单分析了 uboot启动流程的开始,从链接脚本文件 u-boot.lds 中,我们已经知道了入口点是 arch/arm/lib/vectors.S 文件中的 _start函数。 _start函数:调用了 reset 函数,reset 函数内部&…...
质数距离 - 如何在较合理的时间复杂度内求2e9范围内的质数
求l、r之间的质数,范围在2e9,但l、r的差值不大,在1e6范围内 先求出 内的质数,然后拿这个指数去筛[l, r]范围内的即可 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \…...
八、3d场景的区域光墙
在遇到区域展示的时候我们就能看到炫酷的区域选中效果,那么代码是怎么编辑的呢,今天咱们就好好说说,下面看实现效果。 思路: 首先,光墙肯定有多个,那么必须要创建一个新的js文件来作为他的原型对象。这个光…...
深入探讨 Presto 中的缓存
【squids.cn】 全网zui低价RDS,免费的迁移工具DBMotion、数据库备份工具DBTwin、SQL开发工具等 Presto是一种流行的开源分布式SQL引擎,使组织能够在多个数据源上大规模运行交互式分析查询。缓存是一种典型的提高 Presto 查询性能的优化技术。它为 Prest…...
3.物联网射频识别,(高频)RFID应用ISO14443-2协议,(校园卡)Mifare S50卡
一。ISO14443-2协议简介 1.ISO14443协议组成及部分缩略语 (1)14443协议组成(下面的协议简介会详细介绍) 14443-1 物理特性 14443-2 射频功率和信号接口 14443-3 初始化和防冲突 (分为Type A、Type B两种接口&…...
【IDEA】IDEA 单行注释开头添加空格
操作 打开 IDEA 的 Settings 对话框(快捷键为CtrlAltS);在左侧面板中选择Editor -> Code Style -> Java;在右侧面板中选择Code Generation选项卡;将Line comment at first column选项设置为false使注释加在行开…...
三等分功分器[波导]设计详细教程
想必大家通过阅读相关文献可以发现三等分实现可以有很多不同的方法,这里采用的是先不等分再等分的方式,仅供参考。 主要指标 中心频率为280GHz,采用WR-3频段的标准波导,将2:1不等功率分配耦合器与3dB等功率分配耦合器级联&#…...
Mysql分库分表
1.原理 2.Sharding JDBC 官网https://shardingsphere.apache.org/ 2.1 水平拆分 创建一个新的springboot项目 导入依赖,直接将原本的dependencies给覆盖掉 <dependencies><!-- ShardingJDBC依赖 --><dependency><groupId>org.apache.shardings…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
