Zum Inhalt springen

维护窗口

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

一个维护窗口(在 API 中称为静默)会在一段时间内停止针对某个监控项、 或所有监控项的通知。底层的评估仍会继续:当窗口结束时,一条仍处于 活动状态的告警会被通知一次,而不是在两小时后突然冒出来。

  • 告警 → 维护:窗口列表,标注当前生效或已计划, 以及添加窗口的表单。
  • 监控项页面 → 静默 1 小时 / 静默至…:针对整个监控项的一次性 快速维护窗口。
  • ++ctrl+k++ → 计划维护。

暂缓,在当前标签的某条告警上或监控项页面上,是同一机制 的一个较小版本:一次性窗口只针对该条告警的精确标签,而不是整台 监控项,因此相邻的规则仍会继续发声。它也会出现在这里,名称为 Snooze · …。参见处理告警。

字段含义
名称显示在列表和历史记录中。
监控项留空则覆盖所有监控项。
开始、结束绝对时间。窗口包含开始时刻,不包含结束时刻。
备注可选。说明该窗口存在的原因。

一次性窗口结束后会被清除。

字段含义
星期一周中的哪几天(周一到周日)。
起、止该窗口时区下的本地时间。如果止小于或等于起,窗口会跨越午夜(“23:00 → 01:00” 属于它开始的那一天)。
时区IANA 名称,例如 Europe/Paris。默认预填为你浏览器所在的时区。
字段含义
按星期几第一个、第二个……第五个或最后一个,再加上星期几——“第一个星期日”、“最后一个星期五”。
按日期一个月中的一天或多天,1 到 31,用逗号分隔(“1, 15”)。
起始该窗口时区下的本地起始时间。
持续窗口持续多久,以实际经过的时间计算。每月窗口可能持续超过一天。
时区同上。

某个月如果不包含该次出现,会被直接跳过,而不是做近似处理: 二月没有 31 日,2026 年 4 月没有第五个星期日,因此该窗口那个月 就不会打开。列表会显示服务器计算出的下一次出现时间,方便一眼 确认。

DumbMonit 故意没有使用 cron 表达式:cron 表达式描述的是时刻, 而维护窗口需要的是持续时间。“每月的某几天”和”第 n 个星期几” 覆盖了人们实际使用的日历方式,并且读起来一目了然。

一个循环窗口会在其本地的墙上时钟时间打开,然后以真实时间持续其 设定的时长。两个方面都很重要:

  • 本地时刻不会偏移。“每周日 Europe/Paris 时间 02:00”在冬季 对应 UTC 01:00,在夏季对应 UTC 00:00——窗口会跟随时钟变化, 而不是每年两次偏移一小时。
  • 持续时间不会被拉长或压缩。 在时钟回拨的那一夜,墙上时钟的 02:00 到 04:00 实际会持续三个真实小时;窗口仍然只持续两小时。 在时钟前跳、02:00 这个时刻不存在的那一夜,窗口会在时钟恢复后 立即打开。

在时区功能出现之前保存的窗口会保留其固定的 UTC 偏移量,行为与 之前完全一致。重新保存并设置一个时区,即可让它跟随时钟变化。 服务器不认识的时区名称会在保存时被拒绝,并给出一个示例。

窗口也可以通过精确的标签匹配来限定(API 中的 matchers):所有 匹配条件都必须与该告警的标签相符,例如 tag_role = lab 和 __name__ = dumbmonit_up。一个没有监控项也没有匹配器的窗口会使整个 实例静默。重叠的窗口没有问题;覆盖该时刻的第一个窗口会说明静默 的原因。

该告警仍保留其阶段,并显示 silenced: true;历史记录中会记录 这次转换,带有 notified: false 和原因。禁用某个窗口 (enabled: false)会使其仍留在列表中但不产生任何效果。

受维护窗口覆盖的监控项,在列出它的任何状态页面 上会显示为维护中,而不是红色。如果页面上没有其他内容宕机 或降级,该页面的整体状态也会显示为维护中。只有指定了监控项—— 或其匹配器是监控项级标签——的窗口才会以这种方式显示;只针对单个 指标的窗口仍属于告警层面的事务。