生效配置

从实际使用场景出发,介绍夜莺告警规则的生效配置:生效时间、跨天窗口、时区、服务日历与仅在本业务组生效。

概述

生效配置决定一条告警规则什么时候工作。它位于告警规则编辑页的第 5 步"生效配置"区块,包含以下几项:

字段 说明
立即启用 规则总开关。关闭后规则不再产生任何告警事件
时区 生效时间、服务日历时间段按哪个时区判断,默认 Local(服务端系统时区)
生效时间 一组或多组"生效周期(星期几)+ 开始时间 + 结束时间",规则只在这些窗口内告警
服务日历(PLUS) 按日历(法定节假日、周末、调休)控制停服日不告警,企业版独有
仅在本业务组生效 仅 Prometheus 类规则显示,按机器归属过滤事件

工作机制:规则本身仍按执行频率正常执行,只是触发时刻不在生效范围内的告警会被直接丢弃——既不产生告警事件,也不发送通知。如果你想要的是"事件照常记录、只是不通知",应该用屏蔽规则并把屏蔽方式设为"只屏蔽通知",而不是生效配置。

下面按实际使用场景介绍各字段的用法。

场景一:测试环境只在工作时间告警

测试、预发环境的告警半夜没人处理,也不值得叫醒人。把生效时间设为工作日的工作时段,非工作时间的告警直接丢弃:

生效周期勾选周一到周五,开始时间 09:00、结束时间 18:00

生效时间-工作日9点到18点

几条判定规则:

  • 时间区间含开始时间、不含结束时间(左闭右开);结束时间填 23:59 时按包含 23:59 处理;
  • 00:00 ~ 00:0000:00 ~ 23:59 都表示全天生效;
  • 点击"生效时间"旁的 ⊕ 可以添加多段,多段之间是的关系,命中任意一段即生效;
  • 删掉所有生效时间段等价于全天生效(默认状态)。

场景二:只关注凌晨备份窗口(跨天时间段)

数据库备份任务每晚 22:00 开始、凌晨 6 点前结束,备份相关的告警规则只需要在这个窗口内生效。开始时间大于结束时间即表示跨天,直接配置一段 22:00 ~ 06:00 即可:

生效时间-跨天22点到6点

注意:星期按告警触发时刻所在的那一天判断。上图勾选了全部星期,效果就是直观的"每天 22:00 到次日 06:00"。如果只勾选部分星期,比如只勾"周一"并配置 22:00 ~ 06:00,含义是"周一的 0:00-6:00 加上周一的 22:00-24:00",而不是"周一晚上到周二早上"。因此像"仅周日 23:00 到周一 02:00 告警"这类精确跨天需求,要拆成两段:周日 23:00 ~ 23:59 + 周一 00:00 ~ 02:00

场景三:海外业务按当地时间生效(时区)

业务部署在美东,希望"当地工作时间才告警",而夜莺服务端跑在国内。把时区选为 America/New_York,生效时间填当地时间 09:00 ~ 17:00,页面会实时换算出对应的本地时间方便核对:

时区-纽约时间

时区只影响生效时间和服务日历时间段的判断,不影响告警事件里各时间字段的显示——事件时间仍按系统默认时区展示。时区留空或选 Local 时,按夜莺服务端所在机器的系统时区判断。

场景四:法定节假日停服不告警(服务日历)

[PLUS] 服务日历是夜莺企业版(PLUS)独有功能。

对内服务(如报销系统、内部工单)节假日整体停服,停服期间的存活探测告警都是噪音。逐条规则临时禁用又容易忘开。服务日历把"哪些天不提供服务"沉淀为一份全年日历,供多条告警规则复用。

第一步:定义服务日历。 点击规则编辑页"服务日历"旁的齿轮图标打开管理面板,创建一份日历。以 2026 年为例:

服务日历-编辑

  • 假期停服日期:按节日分组录入停服日期(如元旦、春节、国庆),支持备注;勾选"是否包含周末"则所有周六周日也视为停服日;
  • 假期服务在线日期:停服日期中的例外——比如调休上班日服务照常在线,这些天正常告警;
  • 左侧全年日历实时预览标注结果,黄色为停服日、绿色为在线日。

第二步:在告警规则里引用。 点击"服务日历"旁的 ⊕ 添加一行,选择日历,并配置每日的服务时间窗(00:00 ~ 00:00 表示全天):

服务日历-规则引用

判定顺序:

  1. 当前时间不在该行的时间窗内 → 不告警(时间窗同样支持跨天写法);
  2. 当天命中"假期停服日期",或勾选了包含周末且当天是周末 → 不告警;
  3. 当天在"假期服务在线日期"里 → 照常告警(优先级高于停服判定)。

上图组合的含义即:每天 09:00 ~ 21:00 提供服务,法定节假日和周末全天停服不告警,调休上班日恢复告警。配置了多行时,任意一行判定为"不告警"就不告警。

场景五:多业务组共用规则,只管自己的机器

多个团队从模板克隆了同一条主机监控规则到各自业务组,但 PromQL 查出来的是全部机器的数据,每个团队只想收到自己机器的告警。打开仅在本业务组生效开关即可:告警事件中包含 ident 标签、且对应机器不属于本业务组时,该事件被丢弃;事件不含 ident 标签时此过滤不生效。该开关仅在数据源类型为 Prometheus 时显示。

立即启用

规则总开关,关闭后规则停止产生新的告警事件。注意一个坑:如果规则已经触发了告警、还没恢复,此时关闭规则,你将收不到恢复通知。临时静音建议优先用屏蔽规则设置时间窗口,而不是直接关规则。

常见问题

Q1:生效时间外触发的告警去哪了?

A:直接丢弃——不产生告警事件、不进历史、不通知。如果希望"事件照常记录,只是别通知我",用屏蔽规则并选择"只屏蔽通知"。

Q2:每天 22:00 到次日 06:00 怎么配?

A:直接配一段 22:00 ~ 06:00(开始大于结束即跨天),勾选全部星期。只有当需求精确到"周 X 晚上到周 Y 早上"时才需要拆成两段(见场景二)。

Q3:关闭"立即启用"后为什么收不到恢复通知?

A:规则关闭后所有事件都不再产生,包括恢复事件。先等告警恢复再关规则,或改用屏蔽规则临时静音。

Q4:节假日不想告警,怎么做?

A:企业版用服务日历(见场景四),一份日历全年生效、多规则复用。开源版可以:① 用屏蔽规则按固定时间窗口屏蔽;② 通过 API 拉取法定节假日表自动创建屏蔽规则。

Q5:时区会影响告警事件里的时间显示吗?

A:不会。时区只用于生效时间、服务日历时间窗的判断,事件的触发时间等字段仍按系统默认时区展示。

参考资料

更新时间 2026-07-15

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云