限制 SLS告警通知时段的几种常见方法

前言

在对系统进行监控告警的过程中,有时候并非在任何时候都要接收告警通知,例如以下场景:

  • 计划内变更触发的已知告警可以无需通知
  • 非工作时间不接收不严重的告警
  • 夜里不接收电话告警
  • 等等

本文会介绍几种常见的限制告警通知时段的方法,以及它们各自所适用的场景。

方案比较

各种方案的比较参考如下,在实际配置告警过程中,可以按照实际需求选择合适的方案。

Cron表达式 临时关闭 静默策略 全局日历 值班组
作用阶段 影响告警评估,从而影响通知 影响告警评估,从而影响通知 仅影响通知 仅影响通知 仅影响通知
支持的通知渠道 不限制 不限制 不限制 不限制 支持所有与人相关的通知渠道,例如短信、电话、邮件,以及钉钉等可以@用户的场景。
是否可以复用 无法复用,需要针对每个告警规则单独配置 无法复用,需要针对每个告警规则单独配置 可以 可以 可以
是否临时设置
支持的场景 较复杂 简单 简单 较复杂 复杂
配置复杂度 简单 简单 较复杂 简单 较复杂

通过 Cron 表达式限制告警触发时间段

在配置告警规则的时候,需要设置告警规则的检查频率,例如设置为固定5分钟间隔,则梅5分钟该规则就会对数据进行一次检查评估,判断是否需要触发告警。

限制 SLS告警通知时段的几种常见方法_第1张图片

这里除了设置固定间隔外,还支持设置 Cron 表达式。这里使用的是标准的 Cron 表达式,最小时间粒度为分钟。一共分为5段,分别表示:分钟、小时、日、月、周。例如:

  • 0/5 * * * *表示从0分钟开始,每隔5分钟检查一次
  • 0 0/1 * * *表示从0点0分开始,每个1小时检查一次
  • 0 18 * * *表示每天18点0分检查一次
  • 0 0 1 * *表示每月1日的0点0分检查一次

除了这些基础的使用之外,还可以使用稍微复杂一些的 Cron 表达式,实现更加灵活的告警时间段限制。

  • 例如只希望白天8点到18点之间触发告警,则可以设置为 0/5 8-17 * * *,这个配置表示从 08:00 开始,到 17:59 结束,每5分钟会执行一次告警检查,其余时间则不执行。
  • 例如希望周一到周五的上午8点到12点,下午14点到18点之间,每分钟都执行一次告警,则可以配置为* 8-11,14-17 * * 1-5

关于 Cron 表达式的更多使用以及介绍,可以参考 https://crontab.guru/

通过临时关闭告警来限制告警触发时间段

针对某些预期内的告警(例如临时做系统变更,会有一些已知告警),我们希望它们在今后的一段时间内不再通知,那么可以通过临时关闭功能,暂时关闭某个告警。

限制 SLS告警通知时段的几种常见方法_第2张图片

临时关闭后,在该时间之内,告警规则就不会继续检查和触发,超过该时候之后,告警规则会恢复正常。

限制 SLS告警通知时段的几种常见方法_第3张图片

如果想要提起中断该作用,只需要点击“恢复”操作即可。

通过静默策略限制告警通知时间

通过临时关闭告警,作用的只是某一个告警规则。如果需要针对多个告警规则都需要在接下来的一段时间内不通知,可以通过静默策略来实现。例如在某集群升级过程中,可能会有一系列的预期内告警,希望对这些告警做屏蔽。

如果这些告警使用的都是同一个告警策略,则可以在告警策略中设置静默规则,例如针对所有 test-project 这个项目产生的告警,临时屏蔽一段时间,则可以设置如下:

限制 SLS告警通知时段的几种常见方法_第4张图片

该配置即表示,对于 test-project 这个项目产生的告警,会在 2022年12月2日的12点到18之间进行屏蔽,不会通知。

通过日历设置工作日与工作时间

如果希望针对全局告警实现相同的通知时间配置,可以使用全局日历功能。例如在全局日历中设置工作日和工作时间:

限制 SLS告警通知时段的几种常见方法_第5张图片

然后就可以在行动策略中设置发送时段:

限制 SLS告警通知时段的几种常见方法_第6张图片

这样所有使用了该行动策略的告警都会遵守该时间段设置,只会在工作时间(根据上图的示例配置,即每周一到周五的9点到18点之间)发送告警,超出该时间范围则不会通知。

更多关于全局日历以及日期重置的使用,可以参考文档:

  • https://help.aliyun.com/document_detail/207706.html
  • https://help.aliyun.com/document_detail/209961.html

通过值班组实现灵活的值班时间

全局日历主要解决的是全局工作日、工作时间相关的配置。如果针对个别告警,需要使用不同的发送时段设置,可以考虑使用值班组来实现完全灵活且自定义的发送时段。

例如需要每天夜间(0点到7点)接收通知,则可以新建值班组,然后添加轮岗,配置参考如下:

限制 SLS告警通知时段的几种常见方法_第7张图片

保存后切换到“最终排班”模式查看,可以看到每天只有特定时间段是值班的,即只在这个特定时间段内才会接收到告警通知。

限制 SLS告警通知时段的几种常见方法_第8张图片

然后行动策略中选择该值班组即可,例如:

限制 SLS告警通知时段的几种常见方法_第9张图片

需要注意的是,由于值班组里已经设定了时间段,所以行动策略里的“发送时段”选择“任意”即可,这样时间段就完全由值班组控制。如果这里“发送时段”选择了其它选项,那么最终的效果是,先使用全局日历判断是否发送通知,如果需要发送通知,才会使用值班组的时间段做二次判断。

更多关于值班组的使用,可以参考文档 https://help.aliyun.com/document_detail/207705.html

参考文档

  • 告警静默机制
  • 修改全局默认日历
  • 日历重置机制
  • 轮岗与代班场景

原文链接

本文为阿里云原创内容,未经允许不得转载。

你可能感兴趣的:(java,数据库,linux,阿里云,云计算)