You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Prometheus Alertmanager中配置指定时间段触发的告警规则

Prometheus 仅指定时间范围触发告警配置方案

方案1:Prometheus告警规则嵌入时间判断(推荐)

该方案直接在告警触发条件中增加时间校验,非指定时间段不会生成告警事件,是最常用的实现方式。
核心逻辑是通过PromQL内置的hour()、minute()函数计算当前时间的分钟数总和,和目标区间做比对,再和原有告警条件做逻辑与绑定。

示例配置(每日09:15~15:30检测告警):

groups:
- name: business-alert-rule
  rules:
  - alert: 业务指标异常告警
    # 原有告警条件和时间判断用and关联
    expr: (your_alert_expr) and ((hour() * 60 + minute()) >= 555 and (hour() * 60 + minute()) <= 930)
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "实例{{ $labels.instance }}指标异常"
      description: "当前值为{{ $value }}"

参数说明:

  • 555是09:15对应的分钟总和:9*60 +15 =555
  • 930是15:30对应的分钟总和:15*60 +30 =930
  • 若使用东八区时区,需要把hour()替换为hour(time() + 8*3600),对齐本地时间。

方案2:Alertmanager限制通知时间

如果需要Prometheus持续检测告警,仅在指定时间段发送通知,可以用Alertmanager的时间区间配置实现。
示例配置(Alertmanager v0.22及以上版本支持):

  1. 先定义时间区间
time_intervals:
  - name: trading-hours
    time_intervals:
      - times:
          - start_time: 09:15
            end_time: 15:30
        # 仅工作日生效则加下面这行,不需要可删除
        weekdays: ['monday', 'tuesday', 'wednesday', 'thursday', 'friday']
  1. 绑定到通知路由
route:
  group_by: ['alertname']
  receiver: 'wecom-notify'
  matchers:
    - alertname = "业务指标异常告警"
  # 仅在指定时间区间发送通知
  active_time_intervals:
    - trading-hours

特殊场景适配

如果是跨天的时间区间(比如22:00到次日06:00),把方案1的时间判断条件替换为如下即可:

((hour() * 60 + minute()) >= 1320 or (hour() * 60 + minute()) <= 360)

内容的提问来源于stack exchange,提问作者ARK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:36:04