草庐IT

聊聊基线预警的局限性

白鳝 2023-03-28 原文
​基线预警数据库运维监控中的重要手段之一,通过基线发现系统中某些指标存在的不合理波动,进而提前预警,是一种数据库运维监控中最为常用的手段,也是目前大多数企业正在使用的主要监控方案。

虽然大家都用基线预警,不过大家关注的基线指标与阈值都存在较大的差异。因为虽然大家使用的数据库的种类相同,但是大家的系统都存在较大的差异。具体用哪些指标来做预警,以及设定什么样的阈值,这是十分个性化的。实际上一个能够真正起作用的基线预警系统,里面都包含了大量的运维经验。

以每秒读时间这个指标为例,我们可以看出其取值范围波动是较大的,并且没有明显的聚集特性,此类指标我们该如何设置基线呢?确实也是有些头疼的事情。

再来看看另外一个数据库的共享缓存区命中率,其点的集中度还是比较集中,但是还是存在散落分布的,差异很大的值。这些值要不要告警呢?告警对我们的运维有什么意义呢?也真的说不清楚。而且如果我们运维数百套,甚至上千套类似的数据库系统,我们也无法对这些数据库系统设置合理的基线阈值。如果不去做个性化的设置,那么基线告警就不准确,运维告警工作陷入了两难的境地。

可能有朋友会说,干嘛不用动态基线或者智能基线。确实动态基线可以避免上面说的问题,但是动态基线就一定有意义吗?我们来看上面有一个严重的IO LATCNCY基线告警。

IO延时出现了较为严重的波动,但是这有代表了什么含义呢?要不要发短信告警呢?运维人员收到短信要不要去处置呢?要不要对这个告警做闭环管理呢?我们还是搞不清楚,运维告警的意义一方面是发现系统的隐患,另外一方面是在系统出现严重故障前提前警示。似乎这个被标称为“严重”的基线告警,对我们运维的帮助也没有那么大。

从上面的例子我们看到了基线告警的局限性,简单的单一指标异常为核心的基线告警并不能预示某类故障的发生,因此基线告警对于运维的作用就大大降低了。对基线告警进行简单的升级,通过规则引擎构建故障模型,会有更好的效果。比如刚才的这个通过动态基线产生的IO延时基线异常,如果再叠加一些其他的条件,就可以构建出一个更有指向性的告警出来。比如IO延时基线异常,同时操作系统出现大量的IO方面的告警,或者出现多路径链路切换,这样的告警其指向性就更强了,而且告警的价值也大大提高了。

从另外一个角度来看,IO延时基线异常,同时IO吞吐量也大幅提高,某条关键SQL的执行时间也变长了,这种告警也更具有价值。也更值得做闭环管理。

通过故障模型替代基线告警,还有一个好处,那就是告警的指向性更强,因此当告警发生时,诊断问题的原因也变得简单了很多,因为单一指标异常的可能原因过于复杂,大多数情况下让人无法入手分析。而故障模型叠加了很多其他因素,因此故障的指向性也更强了,分析问题的时候也就更容易了。这也是现在D-SMART的基线告警并不推送到告警台,而用故障模型告警替代的主要原因。​

有关聊聊基线预警的局限性的更多相关文章

  1. 【思考】聊聊低代码的实践之路 - 2

    文章目录背景一、最初的疑惑二、简单聊聊原理三、组织内实践案例四、实践带来的反思五、最后聊几句问题背景这个概念由来已久,但是在国内兴起,是最近几年;低代码即Low-Code;指提供可视化开发环境,可以用来创建和管理软件应用;简单的说就是可以通过各种组件的拖拽,实现页面的创建,交互流程和逻辑,以及数据层面的管理,更加高效的实现需求;早先在数据公司时;见识过低代码的应用,也参与过部分研发,比如元数据平台,BI分析等;不过,当时还是以数据管理的工具来定义项目,并非是低代码;从「2020年底」开始;实际上,那个时间节点,低代码平台的应用已经形成趋势了;现在的公司,将低代码平台的使用规划到业务体系中;后来

  2. ruby - Opal 的局限性是什么? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion我非常想尝试Opal在一个新的Rails项目中,但风险当然是我不会发现它不能做什么,直到我花了数百小时做其他所有事情,然后遇到一堵砖墙我不可能打通。它有什么局限性?例如(当然,如果还有其他值得一提的限制,答案不应该仅限于这些主题)我假设你不能在你的Opal代码中使用任何旧的Ruby库(但我很乐意发现我错了!)。我还猜测使用任意JavaScript库可能会有困难,或者在某些情况下您需要编写J

  3. ruby-on-rails - 在长期运行的项目中重新设置 Rails 迁移的基线 - 2

    我的意思是字典中的“rebase”,而不是git定义...我有一个大型的、长期运行的Rails项目,其中有大约250个迁移,管理所有这些变得有点笨拙。也就是说,我确实需要一个基础来在运行测试时从中清除和重建我的数据库。所以这些里面包含的数据很重要。有没有人有任何策略可以说,在设定点转储架构-归档所有旧迁移并重新开始新迁移。显然我可以使用rakeschema:dump-但实际上我需要一种方法让db:migrate首先加载模式,然后开始运行其余的迁移。我想继续使用迁移,因为它们在开发中非常有用,但是,我无法回过头来编辑2007年的迁移,所以保留它似乎很愚蠢。 最

  4. javascript - 如何获取某种字体的基线高度? - 2

    我希望能够找到baseline的高度使用javascript在div中的一段文本。我不能使用预定义的字体,因为我的许多用户将在他们的浏览器中使用更大的字体设置。我如何在javascript中执行此操作? 最佳答案 我为此制作了一个小型jQuery插件。原理很简单:在一个容器中,插入2个内容相同但一个样式非常小的.和另一个非常大的A的内联元素。那么,由于默认有vertical-align:baseline,所以给定基线如下:^+----+^||+-+||topheight||.|A||v||+-+|v+----+===========

  5. windows - Windows中runonce的局限性 - 2

    我已将以下命令添加到runonce注册表以在启动时使用一长串参数运行特定的python脚本,如下所示HKLU..."fio-test"=C:\Python26\python.exeC:\Users\Administrator\Desktop\workspace\test_Windows_dc_policy_flush_on_restart\test_Windows_dc_policy_flush_on_restart.py-I/dev/fct4-bE-v"C:\Users\Administrator\Desktop\workspace\test_Windows_dc_policy_fl

  6. windows - sharpDevelop 的局限性 - 2

    我正在考虑使用sharpDevelop来开发Windows(.NET)应用程序,而不是使用VisualStudio。我只是想知道在VS上使用SharpDevelop是否有任何严重的限制?价格肯定是合适的,乍一看它似乎是一个相当不错的IDE。我只是想知道它是否与VS兼容。我的意思是,如果我与其他使用VS的开发人员合作,我们能否无缝地来回传递项目/解决方案并处理它们?只是想知道人们的意见是什么。 最佳答案 去年我开始使用SharpDevelop开发大型应用程序。根据我的经验,我可以说使用它有以下一些优势:它比VisualStudio更快

  7. javascript - jQuery 的局限性是什么? - 2

    Joel总是说在使用第3方库时要小心。从我最初的印象来看,jQuery很棒。使用时应该注意什么?有什么限制?以后用多了会遇到什么头痛的问题? 最佳答案 我已经广泛使用它,我不得不承认,我还没有遇到任何严重的砖墙!我遇到了几个错误,我必须为自己找到一个快速修复,然后在下一个jQuery版本中进行额外测试以确保错误得到正确处理,但这适用于任何第3方库而不仅仅是jQuery。我认为这是一个很棒的库,我必须说,虽然有关第3方库的建议是有值(value)的,但在这个Web2.0世界中,Javascript的使用量激增,并且浏览器之间存在如此多

  8. 40岁以上的程序员还容易找到工作吗?聊聊我自己的亲身经历 - 2

    今天我们来讨论一个比较热门的话题,那就是程序员。如果到了40岁以上还容易找到工作吗?这个问题呢,其实是一个非常现实的问题,也是我们程序员非常关心的一个问题。因为我们每一个程序员,他都会有到40岁的那一天。首先呢,我们来看一下这个现状,目前很多互联网公司里面都有很多40岁以上的程序员还在坚持写代码,而且呢在一些关键岗位还发挥着非常重要的角色,经验非常丰富啊,对公司的价值非常大。但是天有不测风云啊,如果我们的程序员过了40岁啊被裁了、辞职了或者公司倒闭了,那么就面临一个重新找工作的问题。那么这种情况下,我们到了40岁以上再找工作容易找到吗?哎这个呢,是一个大家非常关心的问题对不对。在这里呢我先不说

  9. java - Java 热交换的局限性 - 2

    Javahotswap功能为我节省了很多时间。但是,它有很多限制(例如不支持架构更改)。知道限制是否会尽快解决吗?根据这个forumentry,它似乎被忽略了。我知道像JRebel这样的产品有帮助。但是有人知道这方面的开源工具吗? 最佳答案 可以查看DynamicCodeEvolutionVM(也在http://java.net/projects/dcevm) 关于java-Java热交换的局限性,我们在StackOverflow上找到一个类似的问题: htt

  10. java - 与 Objective-C block 相比,Java 匿名类的局限性 - 2

    在发现Objective-C中的block后,我才开始关注一阶函数和闭包。Java是另一种我听说过闭包(或没有闭包)以及匿名类如何在某种程度上弥补这一点的语言。在Objective-C中我绝对可以看到闭包作为block的优势,但是匿名Java类的局限性是什么?它们在多大程度上“有点”弥补了真正闭包的不足? 最佳答案 Java匿名类真的非常冗长。除了定义它们所需的大量样板之外,Java的一些设计决策意味着许多常见任务比其他语言要冗长得多。例如,将可变上值导入闭包是Java中的一个难题。基本上,Java不支持上值;相反,它们是通过将它们

随机推荐