对抗告警疲劳的8种方法

【编者按】本文作者为 Chris Riley,主要介绍告警疲劳的产生原因与对抗告警疲劳的8种方法。文章系国内 ITOM 管理平台 OneAPM 编译呈现。

各司其职、孤军作战非常不利于团队沟通,一旦发生重大事件,各个部门就很难掌握事件始末,这不仅降低了整个开发团队的沟通质量,而且对运维工作也造成了极大困扰,即告警疲劳。告警疲劳不仅会影响团队成员的工作情绪,而且会阻碍软件交付链的成长。

DevOps 的最大优势是清除沟通障碍并简化运维操作。通常,DevOps 团队有两种类别:一种是面向所有应用程序的集中式团队,另一种是面向每个应用程序或核心服务的去中心化团队。前者规模较大,但是比传统的NOC环境要小,而后者则是很小的团队。

DevOps 团队除了负责维护基础设施以外,有时还要管理发布过程,以及维持生产的正常运行。而最后这项工作是最伤脑经也最耗时的,一旦处理有误就会影响到整个环境。虽然没有人愿意值班待命,但我们还是得这样做,因为平均修复时间(MTTR)越短,问题响应越迅速,接下来的几天甚至几周里,大家的日子都会好过些——最重要的是它能维持业务的正常运转。

但是,一旦值班开始影响到团队情绪并占据运维团队大量的时间,就可能招致巨大的风险——集中式团队和去中心化团队很容易产生告警疲劳。集中式团队的疲劳不仅是要解决所有应用上的大量告警,而且还很难找到合适的人来解决问题,因为值班的人很有可能没法解决告警的问题。至于去中心化团队的告警疲劳,主要是由于团队太小而告警太多所致。

告警疲劳对DevOps和IT运维团队的影响主要体现在四个方面:

  • 士气低落:如果大部分时间都用于解决问题,你不仅要没日没夜地处理事件,而且所做的事情越来越无聊,感觉每天就是灭不完的火,这样很容易磨灭团队的沟通热情,导致工作效率降低。
  • 单点故障:在集中式团队中,MTTR 主要取决于运维人员通过一组非常有限的值班操作来响应问题并确定根本原因的速度。在去中心化团队中,确定根本问题的时间会有所增加,但是由于掌握的信息不足,运维人员无法准确地筛选问题并快速解决。再有就是,由于呼叫列表太短,很有可能根本无法解决问题。因此,一旦有问题产生,这些因素都会造成运维瓶颈和单点故障。
  • 机会成本:这是告警疲劳所造成的影响中最容易被忽略的一点——整个团队和交付链所耗费的成本增加。如果你的 DevOps 团队在告警过程中不堪重负,他们就无法完善和创新交付链,因为他们只会机械地响应,没有精力去开发更好的版本、完善基础设施的自动化过程或主动预防未来的问题。这不仅阻碍了团队进步,而且增加了技术成本,因为经常重复的问题并没有真正得到解决。
  • 发布速度延迟:解决问题所耗费的时间越长,发布速度就越慢。仔细想想你们团队有多少次推迟了发布时间?

应对告警疲劳最简单的方式是扩大运维团队,但是这未必是最好的选择,因为有些情况下我们也确实需要小一点的DevOps团队。

所以,建议大家在与告警疲劳作斗争时试试以下8个方法:

  1. 创建更好的升级策略:计划!不要只是给团队创建一个呼叫列表,你要考虑告警疲劳可能会对团队资源和士气造成哪些影响,然后再制定相应的计划和策略,也许很小的变动就能带来极大的帮助,比如打破循环。
  2. 安排 QA 和开发人员值班:这需要整个团队全员上阵,虽然做起来很困难,但是如果你把 QA 团队和开发人员安排到值班工作中,你获得的信息就更完善,解决问题的速度也更快。他们即便是与运维团队的成员并行工作,其效果也可见一斑,因为更广泛的支持不仅可以提高生产问题的可见性,帮助开发人员解决应用程序的相关问题,而且还可以加强了解,防患于未然。
  3. 进行详细的事件分析:通过事件分析评估告警设置的效果可以让你随时改进设置并发现当前存在的瓶颈。同时,数据还可以指出重复性问题。总之,要充分发挥数据的指导性作用。
  4. 安排时间以终结重复性问题:分配一定的时间确定之前快速修复的问题并彻底解决,以确保将来不再重复。但是要将问题及所有后续问题完全消灭,这对运维团队而言是个艰巨的任务。
  5. 标准化通知规则:不要让值班成员任意设置自己的规则,一定要将规则标准化或模板化,以保证一致性和问责制。
  6. 允许平行告警:除了垂直呼叫以外,还要有平行告警,这样多个团队成员就可以共同攻克问题以缩短MTTR。
  7. 利用工具:事件管理工具对抵抗告警疲劳大有帮助。一个好的事件管理解决方案,例如 PagerDuty、OneAlert ,不仅可以帮助你自动处理告警并过滤告警噪音,以防止无关紧要的告警造成过重的负担;而且还能协助你找准告警以采取更加有效的值班操作。此后,要是在晚上出现告警,你就知道真的出了问题。
  8. 优化代码:提高代码质量可以减少宕机。这其实很简单,但又总是被忽略。所以,一定要花时间优化代码、提高测试覆盖率、完善系统测试和测试自动化,并将收获和成果向所有成员展示。

以上这些方法都可以优化运维性能,并且受益面广。总而言之,告警疲劳是确实存在的问题,它不仅会影响 DevOps 和 ITOps 团队的幸福感,而且会影响整个开发团队创新和完善发布代码的能力。

本文转自 OneAPM 官方博客

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

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

相关文章

EL表达式

一、EL简介 1.语法结构 ${expression}2.[]与.运算符 EL 提供.和[]两种运算符来存取数据。 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。例如: ${user.My-Name}应当改为${user["My-Name&quo…

制作Geek风格的投影片

做投影片用什么?如果你的回答是用PowerPoint,有没有感觉弱爆了?好吧,也许你会说用开源的替代,比如openOffice/Libreoffice。当然其实本质都是一样的,那就是PPT!从今天开始不要再说、再用 PPT这三…

Activity之launchMode:singleTop,singleTask与singleInstance

相关内容,可以参见官方网址: http://developer.android.com/guide/components/tasks-and-back-stack.html 如图所示,如果ABC三个Activity的launchMode都是standard,那么按照图示顺序调用后,堆栈为ABCBB; …

傅立叶变换是如何改变我们生活的? ——四个角度告诉你答案

全世界只有3.14 % 的人关注了爆炸吧知识引子:尽管没有微积分那样如雷贯耳的名声,也没有相对论那般独辟蹊径的创新,傅立叶变换却悄悄地潜藏在我们生活中的方方面面,默默地改变着这个世界。对于工科出身的读者而言,傅立叶…

Win11新版右键菜单用不惯?一键切换回Win10经典版!

在 Windows 11 操作系统中,微软对文件资源管理器和应用程序的上下文菜单(Context Menu,俗称“右键菜单”)进行了现代化改造。Windows 11 新版右键菜单更加简约,并且融入圆角设计,将常用的命令剪切、复制、粘…

Careercup - Google面试题 - 4877486110277632

2014-05-08 05:16 题目链接 原题: Given a circle with N defined points and a point M outside the circle, find the point that is closest to M among the set of N. O(LogN) 题目:给定一个圆上的N个点,和一个在这个圆外部的点。请找出这…

Android之adb shell dumpsys activity获取task里面的所有actitiy

android 如何在开启一个activity的时候清除所有前面的Activity intent intent new Intent();intent.addFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivity(intent); 在控制台输入: db shell dumpsys activity获取task里面的所有activity 图片就不给了&#xff…

MySQL使用详解--根据个人学习总结

1.安装配置 2.启动mysql服务并配置 mysql> \s(status也行)查看当前服务器状态查看编码状态Server characterset : utf8Db characterset: utf8Client characterset: gbkConn. characterset: gbk修改:---进入配置文件my.ini客户端&#xff1…

送什么给女朋友最致命?

1 啊,原来里面有说明书(via.豆瓣哈组,侵删)▼2 网友给女朋友准备的惊喜(素材来源网络,侵删)▼3 这个泰国小哥的创意真棒(via.阿森不是妖怪,侵删)▼4 老婆的…

如何修改 匿名类型 中的属性值 ?

咨询区 Leo Vo我有下面一段代码:var output new {NetSessionId string.Empty };foreach (var property in output.GetType().GetProperties()) {property.SetValue(output, "Test", null); }代码运行后,它会抛出如下异常:Propert…

SWF反编译神器ASV2013功能展示(下)

动作脚本菜单动作脚本-查看元件类动作脚本-编辑AS3常量池动作脚本-ASV内部ABC数据浏览器窗口菜单 选项菜单-帧视图选项 选项菜单-预览窗口选项选项菜单-时间线视图选项选项菜单-库视图选项 选项菜单-动作脚本视图选项实用工具菜单 关于对话框 转载于:https://blog.51cto.com/as…

Andorid之taskAffinity 和 FLAG_ACTIVITY_NEW_TASK

taskAffinity 和 FLAG_ACTIVITY_NEW_TASK都是和activity启动时是否需要新建一个task有关,我们分四种情况看一下这两个标志对启动activity的影响:(前提:从MainActivity中启动ActivityA) 1)、两个标志都不设置 2)、有FLAG_ACTIVITY_NEW_TASK …

【项目 报错】 项目启动,内存溢出 可能出现的各种报错

内存溢出可能有如下的错误: 错误1: java.lang.OutOfMemoryError: PermGen space 错误2: Exception in thread "http-apr-8080-exec-2" 出现如上的错误,解决方法如下: 1.双击Tomcat 2.点击open launch config…

杨中科的.NET 6新书的出版进度汇报

各位朋友好,我有3个月没发公众号了,今天打扰大家一下,不好意思。最近这3个月,我在忙着给我的.NET 6新书收尾,并且在.NET 6正式版发布后,我把书中用.NET 6 预览版编写的内容在.NET 6正式版中又验证了一遍&am…

2021,如何找到适合自己的圈子?

全世界只有3.14 % 的人关注了爆炸吧知识蔡康永分享过这样一段话:“小S的个性本身就是很乐天,很有活力,她这个朋友让我觉得活着是一件很值得、很舒服、很有趣的事。而有的人会让我觉得活着很没劲,碰到他会把我的能量都吸走”。你和…

Android之用Intent.FLAG_ACTIVITY_CLEAR_TOP解决界面重复拉起问题

今天遇到了一个问题: 就是界面在服务拉起来用的Intent.FLAG_ACTIVITY_NEW_TASK导致登录界面拉起很多次,登录还要登录,主要是之前的activity没有关闭 用it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP)解决。 A - B - C 当 B - A - B 跳转的时…

抓图实例

//调用动态链接库gdi32.dll[ System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll" ) ]private static extern bool BitBlt (IntPtr hdcDest , //目标设备的句柄int nXDest , // 目标对象的左上角的X坐标int nYDest , // 目标对象的左上角的X坐标int nW…

代码Review发现问题

FrmMain.cs中存在问题 1. int i0 设定为了全局常量且未在类顶部,出现问题时不好查找 i 属于常用临时变量,设定全局变量容易引起混乱 2.定义的全局变量但仅在一处方法中使用,定义全局变量过多 3.变量名及控件名等意义不明确又缺少注释&#xf…

I/O多路转接之poll——基于TCP协议

1. 函数a. 参数:(1)fds:是一个struct pollfd结构类型的指针,指向用于存放需要检测状态的Socket描述符;每当调用这个函数之后,系统不会清空这个数组,操作起来比较方便;特别是对于sock…

Android之 FLAG_ACTIVITY_CLEAR_TASK

FLAG_ACTIVITY_CLEAR_TASK :如果在调用Context.startActivity时传递这个标记,将会导致任何用来放置该activity的已经存在的task里面的已经存在 的activity先清空,然后该activity再在该task中启动,也就是说,这个新启动的activity变…