写点什么

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

  • 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:503080

评论

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

Google SEO服务的常见坑人套路

九凌网络

聊聊kube-scheduler如何完成调度和调整调度权重

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟

TDengine 签约中船九院,助力航运业智能化转型升级

TDengine

tdengine 时序数据库 国产时序数据库

外贸各个大洲客户的特点

九凌网络

交大安泰行研五周年,“第六届中国行业发展高峰论坛”成功举行

科技热闻

Python在人工智能领域的应用案例分析

技术冰糖葫芦

API

数云100|神州数码X浙江联通:以算力支撑面向“互联网+”的隐私保护系统,保护用户的隐私数据安全

科技热闻

4种Python中基于字段的不使用元类的ORM实现方法

华为云开发者联盟

Python 开发 华为云 华为云开发者联盟

软件测试/测试开发/人工智能丨模型通过什么原理帮助业务解决问题

测试人

人工智能 软件测试

理解 Paimon changelog producer

不在线第一只蜗牛

大数据 Data

变革自然语言处理的新型大模型架构

百度开发者中心

nlp 大模型

展位火爆!TDengine 受邀参加EDT2023中国能源化工数字科技峰会

TDengine

tdengine 时序数据库

MySQL运维6-Mycat垂直分库

快乐非自愿限量之名

前端框架如何帮助开发者构建应用程序?

互联网工科生

软件开发 前端框架 应用开发 JNPF

社招邀请|阿里云热招岗位简历投递中!

阿里云CloudImagine

云计算

制造业进项税额转出全场景数智化管理

用友BIP

用友出席操作系统大会,携手麒麟软件深度服务企业数智化

用友BIP

基于Stable Diffusion的智能绘画大模型

百度开发者中心

人工智能 大模型

腾讯捐赠编译器基础软件,为中国开发者“添了双筷子”

腾讯云大数据

大数据

【.NET】控制台应用程序的各种交互玩法

EquatorCoco

.net 控制台 项目开发 开发设计

大型媒体网站霸占86.1% Google首位排名:普通网站如何突围?

九凌网络

软件测试/测试开发/人工智能丨GraphWalker自动化测试用例生成

测试人

人工智能 软件测试

文心大模型助力企业级NLP模型快速定制

百度开发者中心

人工智能 nlp 文心大模型

软件测试/测试开发/人工智能丨机器学习特征,离散特征和连续特征

测试人

人工智能 软件测试

Curve 文件系统为 AI 业务降本增效

OpenCurve

云计算 大数据 AI 分布式 文件存储

Pinduoduo API丨Pinduoduo commodity details data interface丨Pinduoduo commodity data interface

tbapi

拼多多API接口 pinduoduo API 拼多多商品详情数据接口

突破!金淑杰成功研发中空纤维纳滤膜技术,助力全民健康饮水!

科技热闻

多家公司荣获Autodesk Design & Make大中华区杰出贡献奖

E科讯

Taobao api丨Taobao API interface丨 Taobao product data interface丨Taobao product details interface

tbapi

淘宝商品详情数据接口 淘宝API接口 淘宝商品数据接口 淘宝数据采集

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