告警相关
夜莺监控系统不仅提供了强大的数据采集和可视化功能,还提供了灵活的告警配置能力,帮助我们实时掌握系统的运行状况,快速响应和解决潜在问题。在本节中,将详细介绍如何在夜莺监控系统中设置告警规则、屏蔽规则、订阅规则。
告警规则
夜莺的告警规则提供了人性化的配置能力,可以满足各种场景下的配置需求。夜莺的告警规则主要分为四部分,基础配置、规则配置、生效配置和通知配置,下面详细介绍下夜莺告警规则的配置参数。
基础配置
- 规则名称:告警规则的名称,可以表明这个规则是对什么进行的监控,支持配置变量,例如
内存告警 {{$labels.busigroup}} 机器:{{$labels.ident}}
,如果告警事件中的标签包含了 busigroup 和 ident,最终告警事件中规则的标题会被替换为真实的 busigroup 和 ident,内存告警 defaultbusigroup 机器:ningdeMacBook-Pro.local
- 附加标签:在这里配置的附加标签,会追加到生成的告警事件的标签中,可以用来做后续的筛选条件
- 备注:对告警规则更加详细的描述,也支持配置变量
规则配置
夜莺告警规则支持两种类型的告警,metric 时序数据的告警和 host 类型的告警,下面分别进行介绍
Metric类型告警
- 关联数据源:夜莺可以在一条规则中,关联多个数据源进行告警,可以有效降低规则的维护成本。
- 告警条件:本质上就是一条 promql,所以可以做一些条件筛选和四则运算,比如下面的告警规则:
ttp_api_request_success{region="beijing"} / http_api_request_total{region="beijing"} < 0.995
表示:求取beijing这个region的所有http请求的成功率,如果成功率小于 99.5% 就告警。如果告警引擎通过此 promql 查到了数据,说明有有异常点产生,如果满足的持续时间,就会产生一个告警事件。 - 级别抑制:这里夜莺也有支持配置多个告警条件,如果打开了级别抑制开关,两个条件同时产生告警的话,只会发送高级别的告警,会对低级别的告警进行抑制,降低对大家的打扰。
- 执行频率 :告警规则执行检查的频率
- 持续时长 :通常持续时长大于执行频率,在持续时长内按照执行频率多次执行 promql 查询,每次都触发才生成告警;如果持续时长置为0,表示只要有一次 promql 查询触发阈值,就生成告警
Host 类型告警
- 机器筛选:支持全部机器、业务组、标签、机器标识多种维度的筛选,筛选之后,可以点击机器预览
- 告警条件:host 类型告警支持三种告警能力
- 机器失联 机器失联告警是一种常见的监控告警场景,用于检测服务器在一定时间内无法正常连接或通信。服务器失联可能是由于硬件故障、网络问题、电源中断等原因导致的。通过设置失联告警,我们可以在第一时间得知服务器失联情况,迅速排查故障原因,并采取恢复措施。
- 机器集群比例失联 在微服务架构中,一个服务通常由多个实例组成,以实现负载均衡和容错。当一台机器失联的时候,一般服务不受影响,但当超过一定比例的服务实例失联时,可能导致服务性能下降、延迟增加或部分功能失效。因此,夜莺告警提供了机器集群比例失联告警的能力,设置集群比例失联告警可以帮助运维团队及时发现问题,扩展服务实例或解决失联原因,确保服务正常运行。
- 机器时间偏移 分布式系统通常有很多节点,各个节点之间需要保持时间同步,这样才能确保数据一致和处理事务。如果节点之间的时间出现偏差,那可能会导致一大堆麻烦,比如数据混乱、事务失败或性能下降。设置一个时间偏移告警,可以让我们快速发现和修复时间同步问题,保证系统顺利运行。
生效配置
夜莺的生效配置,可以帮助用户更加灵活地管理告警规则,避免不必要的告警干扰,这对于那些只在特定时间需要关注的告警场景非常有用。
- 立即启用:在系统维护期间,可能会出现一些预期的指标波动或异常情况。为避免这些情况触发大量不必要的告警,我们可以在维护开始前暂时关闭相关告警规则,维护完成后再重新启用。这样可以减少告警噪声,避免干扰我们关注真正重要的问题。
- 生效时间:有的业务可能每隔一段时间会停机维护,在定期维护期间,可能会进行系统升级、备份或其他操作,这些操作可能会引起一些预期的指标波动。为避免在这段时间内触发大量不必要的告警,我们可以通过配置生效时间,设置规则在维护期间不生效,可以降低对我们不必要的打扰。
- 仅在本业务生效:在企业中,不同业务线往往有独立的运维团队。通过开启这个开关,我们可以确保各个业务线的告警规则仅对其关联的业务组下的机器生效。这样,各业务线的运维团队只需关注与其业务相关的告警,避免了不必要的干扰,提高了告警处理的效率。
通知配置
通知配置功能是用于定义告警触发后的通知方式、通知对象以及通知的附加内容。
-
通知媒介:夜莺监控默认支持了发送钉钉、企微、飞书、邮件、Mattermost、Telegram 多种通知渠道,除了内置的通知媒介,我们还可以通过夜莺提供的通知脚本的能力,对接公司内部的通知渠道,比如公司内部的电话网关、短信网关、自己的IM等。如果我们只使用钉钉通知,没使用其他通知媒介,我们可以 在系统配置-通知配置-通知媒介 页面,把其他的通知媒介都隐藏,同理,如果我们想增加自己的通知媒介,也可以在这个页面添加。
另外,夜莺还支持了对不同的通知媒介发送不同的内容和样式,这块可以在 系统配置-通知模板 页面进行管理。
-
告警接收组:我们有一批人想接收我们配置的告警规则发出的通知、我们可以先在 “人员组织-团队管理” 页面,创建一个团队,把相关的人都加入到团队,然后在接收组的输入框填上我们创建的团队,这样在告警触发之后,团队中的人都会收到告警通知
-
启用恢复通知:当告警事件恢复之后,夜莺会发出恢复通知,但有的业务团队有时会只关注异常通知,不关心恢复通知,此时发送恢复通知,对他们来说是一种打扰,这个时候我们可以关闭恢复通知,来降低打扰
-
留观时长:这个功能和和病人在生病康复之后,医生有时让留院观察类似,有的时候,当异常恢复之后,可能立马又会触发异常,这样一会儿报异常,一会儿报恢复,对我们产出不必要的打扰,我们可以把留观时长调一个合适的时间,等恢复保持了一段时间之后,我们感觉真正恢复了,再报恢复,可以减少告警的打扰
-
重复通知间隔:重复通知间隔是指在告警未解决的情况下,系统会根据设置的时间间隔反复发送告警通知。这种设置可以确保我们持续关注未解决的告警,避免因忽略告警而导致问题恶化。另外,通过将通知间隔设置一个比较大的数值,也可以降低我们在处理故障时,告警通知对我们频繁的打扰。
-
最大发送次数:最大发送次数是用于限制在特定条件下,告警通知发送的最大次数。通过设置最大发送次数,可以有效避免我们被大量重复告警通知打扰
-
回调地址:回调地址用于在告警触发时,将告警信息发送到指定的URL。该功能可以帮助我们实现告警信息与第三方服务或自定义应用的集成,提高告警处理的自动化程度和团队协作效率,回调地址主要有下面几个使用场景
- 与第三方服务集成:回调地址可以将告警信息发送到第三方服务,如内部的事件平台、flashduty 等,实现告警的集成管理。
- 自动化处理:回调地址允许自定义应用接收告警信息,并根据告警内容自动执行相应的操作,如自动扩容、故障切换等。
- 自定义通知方式:通过回调地址,我们可以根据需求定制自己公司内部的告警通知发送方式,如发送到企业内部的IM。
额外补充一点,夜莺除了可以在告警规则中配置回调地址,还支持配置全局的回调地址,在 系统配置-通知配置-全局回调 页面配置
-
附加信息:附加信息用于在告警通知中添加一些额外的、有关告警的详细信息或解决方案。这有助于接收告警的团队成员更好地理解告警背景,快速定位问题并采取相应的解决措施。
屏蔽规则
屏蔽规则是一种在特定情况下暂时禁止告警通知的功能。通过设置屏蔽规则,可以避免在特定场景下不必要的告警通知,减少对我们的打扰。屏蔽规则一般有以下使用场景
- 计划性维护工作:在计划性维护期间,由于系统或服务可能会暂时关闭,这可能导致大量告警触发。通过设置屏蔽规则,可以在维护期间暂时禁止告警通知,避免造成不必要的打扰。
- 已知问题处理:对于已知问题,我们可能已经在处理了,此时不希望接收到重复的告警通知,可以设置屏蔽规则,暂时禁止这些告警通知,直到问题解决。
- 非关键时间段:在某些非关键时间段,如节假日、夜间等,我们可能希望暂时禁止部分非关键告警通知。通过设置规则中的生效时间,可以满足这个需求,确保我们能够专注于关键任务。
下面介绍下每个字段的含义
- 规则备注:一般用来说明创建告警屏蔽的目的
- 业务组:屏蔽规则在哪个业务组下生效
- 告警类型:和告警规则中的类型是一一对应的关系
- 屏蔽时间:支持固定时间和周期时间两种设置方式,对于临时的维护工作和故障处理工作,一样使用固定时间,对于具有周期性的维护工作,比如晚上会停服,可以使用周期性的屏蔽
- 屏蔽事件标签:这里的标签筛选的是告警事件中的标签,告警事件中的标签由三部分组成,时序数据的标签、告警规则中配置的附加标签、告警规则名称。
- 屏蔽原因:作用和规则备注类型,作为更详细的补充
订阅规则
在使用监控平台的时候,有这样一种场景,一些机器和基础组件的告警规则是由基础架构的同学维护管理的,但业务的同学也想接收和自己业务相关的机器和基础组件的告警,如果直接去修改对应的告警规则的话,其实不太合适,这个时候,可以使用订阅规则,来订阅自己感兴趣的告警事件,当告警事件产生之后,通知到自己。
- 告警类型:想要订阅的告警事件的类型
- 订阅告警规则:一种告警事件的订阅筛选方式,根据订阅规则来筛选
- 订阅事件标签:和屏蔽规则中的标签筛选类似,是有和配置的标签匹配的事件,才会走订阅逻辑
- 订阅事件持续时长:这个功能在告警升级的场景比较有用,如果告警事件产生之后,持续了很久还没恢复,再次出发的时候,如果满足的持续时长,可以把告警发送给业务负责人或者备值班人。
- 告警级别、通知媒介、回调地址:对于筛选到的告警事件,在发送的时候,我们可以修改原来的告警级别、通知媒介和回调地址
- 订阅接收组:订阅的告警事件,重新发给哪些团队
内置规则
夜莺监控提供了很多内置的告警规则模板,方便用户快速部署和配置告警策略。内置告警规则模板包含一系列预定义的告警条件,用户可以根据自己的需求进行选择和调整。
活跃告警
夜莺监控活跃告警页面是一个专门用于展示未恢复告警事件的页面。这个页面可以帮助我们快速了解当前存在的告警情况,从而及时响应和处理故障。活跃告警页面提供了两种视图
一种是卡片视图,可以将告警事件根据某个条件进行分组展示,然后从更高的维度了解活跃的告警事件的概况
一种是列表视图,会将指定时间范围内全部的活跃告警都详细地罗列出来
历史告警
夜莺监控的历史告警页面是一个用于展示全部告警的列表页面,包括已恢复的和未恢复的告警。这个页面可以帮助用户了解过去的告警事件,以便分析系统状况和改进运维策略。
告警详情
点击告警事件的标题,可以进去告警事件详情页,查看告警事件的详细信息,以便更好的定位和处理相关问题,下面重点介绍下比较重要的几个字段
- 规则备注:在配置告警规则的时候,可以在备注中详细说明故障原因、影响范围以及解决方案,这样在 oncall 的同学收到告警之后,可以更有效率地跟进处理。
- 对象备注:如果产生的告警事件是一个机器相关的告警事件,如果机器之前有填写一些备注信息,会被放到对象备注中。
- 事件状态:有异常(Triggered)和恢复(Recovered)两种状态
- 事件标签:告警事件中的标签由时序数据的标签、告警规则中配置的附加标签、关联机器的附加标签和告警规则名称标签组成。通过这些标签,可以很方便地对告警事件做筛选过滤和统计分析。比如在配置屏蔽规则和订阅规则时,主要用的就是事件标签来作为筛选条件。
其他字段和告警规则中的类型,不再一一介绍
告警自愈
告警自愈功能和 v5 基本一致,可以参考之前已有的视频教程 https://mp.weixin.qq.com/s/4xlbWjclbSyCn91HpVRT9g ,只有一点需要注意,之前 ibex 地址的配置是写到配置文件中的,在 v6 版本,我们放到了在页面上进行配置,在 故障自愈-自愈配置 页面。