【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

百度佛系程序员开始讲经啦,监控报警那些事儿

  • 2019-09-10
  • 本文字数:1923 字

    阅读完需:约 6 分钟

百度佛系程序员开始讲经啦,监控报警那些事儿

Argus(Noah 监控 3.0)是百度内部最大的监控平台,提供了机器监控、进程监控、日志监控、远程监控、自定义监控等多种监控方式。它还支持集群级别的监控配置和管理,并支持复杂的异常判断,提供多种途径的报警手段。



图 1 Argus 监控系统示意图


从系统架构层面,Argus 主要包括采集、汇聚计算、数据存储、报警通路和可视化五个主要部分。报警通路除负责异常判断、报警发送外,还支持报警回调和联动故障自愈机器人等功能。报警通路目前承载了千万级实例异常判断和报警,每天会自动执行数百次故障自愈任务。本篇文章会重点分异常判断和报警发送两部分来介绍报警通路的功能。

异常判断

判断规则

异常判断是报警通路的核心部分,其支持的判断规则决定了监控报警能力的强大与否,Argus 报警通路支持以下两类判断规则:


  • 内置的判断规则:该部分支持四则运算 、逻辑运算以及各种内置函数。例如:metric_a < 99.99% && metric_b < 99.99% 、 abs(metric_c) > 100 等 。

  • 自定义的判断规则:运维人员可先用脚本编写异常判断规则,然后将脚本提交到报警通路,报警通路负责执行脚本并产生报警。该部分适用于比较复杂的异常判断场景,比如复杂的同环比报警、多维度数据分析等场景。

判断流程


图 2 异常判断流程


报警通路在接收到上游发送过来的数据后,首先找到跟数据相关联的报警配置,然后根据配置的判断规则进行异常判断,如满足判断规则,则产生报警;为了防止频繁的抖动报警,报警通路还支持防抖动过滤策略,例如,M 个周期中有 N 个周期的数据被检测为异常才会产生一个报警。另外,报警通路还会将产生的报警事件存储到运维知识库,供业务平台或用户来查询和使用。

异常判断例子


图 3 异常判断例子


图 3 是一个异常判断的例子,为判断某业务在某机房的可用性指标是否达标,报警通路会对该指标的每个数据点逐一进行异常判断,如果连续 3 次都小于 99.99%,则产生异常警报;反过来,只有连续 3 次都大于或等于 99.99%,该次故障才会被判定为结束。

异常的自动化处理方案

异常判断产生的异常除了用于报警发送,还有下面三种自动化处理方案:


1.脚本回调功能:报警通路支持在异常实例或机器上执行某个脚本的能力。比如当检测到某个实例异常时,可以执行此实例上的脚本(如:重启实例),就可以在无需人工参与的情况下自动修复异常的实例。


2.HTTP 回调功能:为了支持集群级别的故障处理能力,报警通路还支持 HTTP 回调功能。报警通路会将报警 POST 给指定的 URL,接收端即可处理集群下的所有报警,以此来决定是否触发某个复杂的故障处理动作。


3.联动故障自愈机器人:产生的报警还可以联动故障自愈机器人,执行相关自愈动作。故障自愈机器人是一款面向感知、决策、执行的故障自愈机器人,相关介绍,详见之前的公众号文章《AIOps 时代,你准备好了吗?》。

报警发送


图 4 报警发送流程图


异常判断产生的警报,如果想到达运维工程师,还需要经过报警过滤、报警合并、报警渲染三个环节。报警过滤会将运维工程师不希望收到的冗余警报过滤掉。报警合并会将相关联的警报合并到一块发送。报警渲染就是将结构化的警报数据渲染成文本信息,供运维工程师查看。

报警过滤

用户希望在以下三个场景过滤掉报警,针对这三种需求,我们提供了相应的功能:


1.报警屏蔽过滤:运维工程师不希望接收预期内(比如模块上线期间)的报警,希望可以临时过滤掉相关报警。


2.报警依赖过滤:运维工程师希望只收到产生故障的根因报警(即精准报警),这样利于快速定位线上问题。比如某台机器出现故障(因)时,那么这台机器上所有实例的报警(果)应该过滤掉,只需给运维工程师发送机器故障的报警。


3.最大报警次数过滤:如果一个服务持续异常,运维工程师不希望持续收到同一故障的报警,可以限制最大报警次数。

报警合并

即使有上述报警过滤措施,但在较大规模故障发生时,仍然还可能产生大量的报警,造成报警风暴。因此,我们需要对同源的报警进行合并发送,一条信息中一般会包含多个相关联的警报。报警合并的细节详见本公众号之前的文章《我在百度对抗报警风暴(一)》。

报警渲染

合并后的报警,会按照默认格式渲染成短信、邮件、语音等,发送给运维工程师。此外,运维工程师也可以通过配置报警渲染模板,来自定义报警样式。

总结

本篇文章主要介绍了百度监控平台报警通路子系统的核心功能,在报警规则、异常判断、警报自动化处理、报警过滤等方面做了详细介绍。关于报警通路的实现细节和系统架构,会在后续的文章中介绍,敬请期待。


作者介绍:


运小伟,百度高级研发工程师,负责百度监控平台报警子系统的设计和研发,在大规模分布式系统、运维监控、精准报警等方面具有广泛的实践经验。


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


原文链接:


https://mp.weixin.qq.com/s/k0OxUpZZ0ZNFYUZ_di7Zsg


2019-09-10 10:151420

评论

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

极客时间运维进阶训练营第二周作业

9527

27位技术实战派负责人齐聚 深聊降本增效 你一定不想错过!

阿里技术

云计算 云原生 云栖大会 降本增效

订单中心架构设计与实践

小小怪下士

Java 程序员 系统架构 架构设计

华为数通HCIA小型拓扑综合实验,运用OSPF动态路由协议、ACL访问控制列表,交换机生成树协议,修改交换机根桥、交换机划分vlan、链路聚合等相关数通技术、NAT地址转换以及NAT网络地址转换的配置

Python-派大星

10月月更

Spark On Kubernetes 的 Web UI 访问实践

移动云大数据

vue3 name 属性的使用技巧

new_cheng

Vue 前端 Vue3 VUE 3.0 源码

推广TrustAI可信分析:通过提升数据质量来增强在ERNIE模型下性能

汀丶人工智能

nlp

FlyFish一周年,社区大咖邀你共话开源!

云智慧AIOps社区

低代码 可视化 数据可视化 大屏可视化 无代码

专访韩向东|元年科技:专业与技术并重,赋能财务数字化转型

元年技术洞察

数字化转型 财务数字化

AR人体姿态识别,实现无边界的人机交互

HMS Core

AR

如何在C#或VB.NET程序中为幻灯片添加或删除批注

Geek_249eec

C# PPT VB.NET

Spark on k8s在阿里云EMR的优化实践

阿里云大数据AI技术

大数据 spark 企业号十月PK榜

2022最新CSS高频面试题指南

CoderBin

CSS 前端 面试题 秋招 10月月更

极客时间运维进阶训练营第二周作业

忙着长大#

极客时间

阿里云云边一体容器架构创新论文被云计算顶会 ACM SoCC 录用

阿里巴巴云原生

阿里云 云原生 容器服务

“程”风破浪的开发者|学习中的境界

林冲

学习方法 “程”风破浪的开发者

对话创始人:团队研发效能应该如何管理和度量?

LigaAI

团队管理 敏捷开发 研发管理 研发效能 企业号十月PK榜

JUC浅析(一)

Andy

JUC面试题

Andy

JUC 浅析(二)

Andy

从“汽车制造”生活案例到软件的建造者模式

宇宙之一粟

设计模式 建造者模式 Go 语言 10月月更

数字化时代,企业如何创新自己的客户服务

Baklib

ACL访问控制列表 基础、创建ACL访问控制列表的两种方式、配置ACL访问控制列表规则、修改ACL规则的默认步长。子网掩码、反掩码、通配符掩码的区别和作用。

Python-派大星

10月月更

要努力,但也别焦虑

源字节1号

程序人生

【一Go到底】第二十八天---数组实际案例与复杂应用

指剑

Go golang 10月月更

立即可用的实战源码(springboot+redis+mybatis+restTemplate)

程序员欣宸

Java springboot 10月月更

鸿蒙开发实例 | 鸿蒙操作系统的前世今生

TiAmo

华为 鸿蒙 10月月更

String源码分析(二)

知识浅谈

String类 10月月更

京东云开发者|京东云RDS数据迁移常见场景攻略

京东科技开发者

MySQL 数据同步 数据迁移 云迁移 数据订阅

36氪|元年科技发布新版数字化PaaS平台,更新多个组件

元年技术洞察

方舟 PaaS 中台战略 企业数字化

NAT基础:NAT技术原理,静态NAT、动态NAT、NAPT、Easy IP、NAT Server的原理,以及各NAT的配置方法和转换示例。

Python-派大星

10月月更

百度佛系程序员开始讲经啦,监控报警那些事儿_软件工程_运小伟_InfoQ精选文章