写点什么

我在百度对抗报警风暴(一)

  • 2019-09-29
  • 本文字数:2461 字

    阅读完需:约 8 分钟

我在百度对抗报警风暴(一)

百度监控系统 Argus 保障了百度内外产品服务的高可用,《我在百度对抗报警风暴》系列文章将会介绍百度高级研发工程师运小博在实践中如何运用报警合并、机房故障分析、报警关注度分析、值班与逐级通告平台和报警回调技术等对抗报警风暴。本文将主要介绍报警风暴形成的原因和报警合并策略中简单的报警合并策略。


Argus 名字含义:希腊语“Argus”的意思是“明亮的”、“明察秋毫的”,在古代希腊神话里面的巨人 Argus 长有一百只眼睛,因此可以观察到所有方向的事物与动静;后世以此来比喻机警、机灵的护卫,我们希望百度监控系统能够如巨人 Argus 全面洞察异常并报警,故命名为 Argus。

报警风暴

百度监控系统(Argus)是保障百度内外产品服务高可用的利器。小到机器的磁盘是否打满、虚拟机实例上的进程或端口是否存活,大到产品的流量是否稳定、机房网络是否联通,尽在 Argus 的掌握之中。


两年前,百度每一个运维工程师都被报警风暴所困扰。白天,百度的运维工程师们平均 11 分钟就会接收一次短信报警,在夜间则是平均 14 分钟一次,而实际数据统计发现,有效短信报警占比不到 15%。因此短信报警的冗余度是非常高的,已经造成了报警风暴。


经过分析,报警风暴的形成主要有这么几个原因:

报警重复度>58%

分析其原因,首先报警策略执行周期计算,因此会持续产生重复报警,部分策略甚至会导致持续报警达 1 小时以上。更严重的情形是,一次故障可能引发多个相关策略报警。比如一台机器死机,首先机器层面报警,然后实例层面报警,接着服务上游也可能会报警。


报警关注度不足


我们把报警发送后有实际处理的比例作为报警关注度的度量指标,发现实际关注度并不高,而在夜间短信报警关注率则低至 25%。但事实上夜间短信报警的级别一般都是比较高的。这就意味着很多报警策略的发送方式和实际的报警等级已经相违背了。这是因为报警的关注度随着业务发展发生变化,但是这些关注度的变化没有及时的在报警系统中修改,导致已经变得不那么重要紧急的报警,却还在以短信的形式给值班工程师发送报警。

报警接收人冗余

每个报警策略平均有 3 个接收人,部分报警甚至超过了 7 个。报警策略的接收人往往会填写了运维团队中的所有人,但实际值班人只有一个人,大家按周期轮转。因此,对于一个特定的报警,大部分同学是不需要即时关注的。

报警有效性不足

超过 88%以上的报警都是单实例报警,40%以上只需要简单的处理即可恢复,比如磁盘打满或者内存泄露等。因此我们在 Argus 中增加了自愈机制,自愈成功后,报警也就无需继续发送了。


针对上面的这些问题,我们在设计 Argus 时使用了智能报警合并策略、基于报警数据挖掘的机房故障分析、报警关注度分析、值班与逐级通告平台和报警回调技术等。Argus 的功能逐渐完善,并把周级报警短信总量削减了 85%。

报警合并策略

报警合并对很多做监控的同学来说并不陌生,大部分介绍报警收敛的文章都提到了这个过程,但大多数提及的报警合并都是将某个时间窗口内的报警简单的合并成为一条,此举对削减报警数量固然有效,但不利于值班工程师进行故障诊断。我们希望把若干描述同一故障的报警合并在一起,让值班工程师可以快速捕捉到故障本质,甚至故障根因,而并非一味的削减报警量。


在本文中,我们先介绍一个合并来源于相同报警策略或者相同模块的重复报警的策略,下一篇文章中将讨论如何合并跨模块、跨策略的报警和一个消除机房网络故障期间报警风暴的方法,这一方法也可以用来检测机房的网络故障。


简单的报警合并策略


最简单的报警合并方法可以基于报警策略的自然属性,包含策略名或者部署维度等。百度的生产系统使用了虚拟化技术混布各项服务,因此部署的逻辑维度包含了实例、模块、集群等层次,物理维度包含机器和机房层次。一个层次同时刻的报警,大多数都存在着一定联系,因而可以将这些报警合并。举一个实际的例子,A 模块在 bj 机房部署有 100 个实例,统一为每个实例配置了端口存活报警策略 rule1,某个时刻这个策略在0.A.bj(A 模块在 bj 机房的 0 号实例)和1.A.bj(A 模块在 bj 机房的 1 号实例)上都报警了。这两个报警属于同一个模块的同一个策略,因而可以合并在一起,便于值班工程师了解整体情况。最终发送的报警样式如下:


{A:instance:rule1}{总体异常实例比例:2%}{异常(2):0.A.bj,1.A.bj}{05-02 16:49:36 - 16:54:09} {http:// dwz. cn/… }


简单介绍一下这条报警的意思:


  • A:instance:rule1 代表的是报警策略 rule1 属于 A 模块,并且是实例级别的报警;

  • 总体异常实例比例是使用异常实例数量除以实例总数量计算出来的;

  • 0.A.bj 和 1.A.bj 属于 A 服务下的两个异常实例,异常时间段是 05-02 16:49:36 到 16:54:09;

  • 后面有个短链,用户可以打开短链查看更详细的报警内容。


当合并的内容过多时,我们将最主要的报警或者报警的总结汇总到短信内容里面,具体的每一条细节报警、报警起始结束时间、报警持续时间、报警配置内容等细节信息都会在短链的页面中展示。


了解了报警合并的策略,接下来介绍一下实际合并的机制。一个报警产生以后,我们先把这个报警插入一个发送等待队列而非立即发送。每一个报警策略都有一个在等待队列里的最长存留时间,换言之,是这条报警可以容忍的最长延迟发送时间。报警产生后先插入等待队列里面去,在队列里等进行延迟计时,当达到了能够容忍的延迟时间以后,我们在等待队列中找到可以和该报警一起合并发送的报警,根据实际的合并维度渲染成不同的报警短信内容,然后合并成一条报警短信发送。在下面的例子里,A,B,C 代表了 3 个不同的模块,A 模块上配置了两条报警策略分别为 rule1,rule2,B 模块上配置了 rule3,C 模块上配置了 rule4,红色的报警 A:rule1 即将到达最长存留时间,按照合并策略,黄色的报警可以一起合并为一条发送,这样实际的报警信息中包含了三条报警。



作者介绍:


运小博,百度高级研发工程师,从事有关运维数据分析相关的工作,负责异常检测系统和报警收敛等工作,重点关注时序数据分析、故障诊断等相关领域技术。


本文转载自公众号 AIOps 智能运维(ID:AI_Ops)。


原文链接:


https://mp.weixin.qq.com/s/9IZbmulUA18OCZ-ECSNSUQ


2019-09-29 16:503279

评论

发布
暂无评论
发现更多内容

牛哇!阿里用480页笔记直接搞定了微服务44个架构设计模式

Java架构师迁哥

新一代云网采控之采集架构篇

鲸品堂

架构 部署 场景 云网络 应用

字节架构师分享:如何让代码在级别上提升系统性能

Java架构师迁哥

Leveldb解读之三:Write

Jowin

leveldb

嵌入式硬件开发最新技术

cdhqyj

嵌入式 单片机

圆梦阿里之后,我收集整理了这份“2021春招常见面试真题汇总”

Java 程序员 架构 面试

面向软件 IT 专业的高校大学生择业现状问卷调研

小诚信驿站

行业调研

鸿蒙系统(HOS)终于上线,微内核操作系统科普

北游学Java

Java 操作系统 微内核

【InfoQ 写作平台 1 周年】我和写作平台剪不断的“孽缘”

三掌柜

征稿 InfoQ 写作平台 1 周年

为什么越来越多的人不敢结婚?

徐说科技

婚姻 情感 恐婚

HTTP/2做错了什么?刚刚辉煌2年就要被弃用了

学Java关注我

Java 编程 架构 程序人生 计算机

软件IT专业大学生就业意向问卷调查

三掌柜

签约计划 问卷调查

阿里云 RTC QoS 弱网对抗之 LTR 及其硬件解码支持

阿里云CloudImagine

阿里云 音视频 WebRTC 视频解码 视频云

IT之家专访庄秉翰:未来全球5G vRAN将达90%,英特尔5G布网参与度非常高

E科讯

鹅厂首推569页Netty+Redis+ZK+高并发的笔记,开启面试必杀技

Java架构师迁哥

政采云:数据可视化探索之SpreadJS 表格控件

葡萄城技术团队

Alibaba内部培训Spring源码全集分享:脑图+视频+文档

Java架构师迁哥

聪明人的训练(二十八)

Changing Lin

4月日更

如何构造更好的团队

soolaugust

团队管理 架构

Worktile 权限设计与实现

PingCode研发中心

项目管理 后端 权限管理

IT专业本科生毕业选择【就业】/【攻读硕士】调查问卷

Aldeo

考核 大学生毕业 问卷调查

网易云课堂个性化推荐实践与思考

有道技术团队

推荐系统

大学生IT就业方向以及就业培训的调查问卷

麦洛

调查报告 调查采访能力考核 问卷调查

精彩3000字!给讲得明明白白:配置 logback

比伯

Java 编程 程序员 架构 计算机

如何快速将 APICloud 应用转换为微信公众号?

YonBuilder低代码开发平台

微信公众号 APICloud

架构实战营模块2作业指导

华仔

架构实战营 #架构实战营

五一小长假最新产物:阿里巴巴面试的参考指南(泰山版)

学Java关注我

Java 编程 程序员 架构 计算机

五一啃透这份阿里巴巴Java面试指导手册(泰山版),节后直接面试找工作!

Java架构追梦

Java 阿里巴巴 架构 面试 泰山版

网络协议学习笔记 Day7

穿过生命散发芬芳

网络协议 4月日更

视频后期怎么添加AR贴图?一招教你搞定!

奈奈的杂社

视频剪辑 视频后期 剪辑 会声会影

v02.06 鸿蒙内核源码分析(进程管理) | 谁在管理内核资源 | 百篇博客分析HarmonyOS源码

鸿蒙研究站

鸿蒙内核源码分析

我在百度对抗报警风暴(一)_文化 & 方法_运小博_InfoQ精选文章