普罗米修斯选择性地抑制alert



我需要创建一个警报系统,它必须在满足特定条件(例如Tomcat关闭)时发出通知。部署在不同位置(具有不同时区)的多个远程服务器托管Tomcat服务,并由Prometheus进行监视。我只需要在当地时间8:05到22:45收到警报,所以我按照以下步骤进行:

  1. 定义自定义规则"check_system_time_in_interval"如果服务器本地时间在[8:05,22:45],则返回1,否则返回0
  2. 使用规则1)定义警报在prometheus.rule.yml":
  3. 中在NO工作时间禁止警报
- name: quite_hours
rules:
- alert: Inhibit alert during NO working hours
expr: check_system_time_in_interval==0
labels:
notification: none
severity: critical
  1. 在"alertmanager.yml"当监视的服务器时间不在
  2. 时间间隔内时,该文件抑制警报TOMCAT down(当TOMCAT服务停止服务时触发警报)。
inhibit_rules:
- source_match:
alertname: Inhibit alert during NO working hours
target_match_re:
alertname: (TOMCAT down)

TOMCAT down使用自定义规则"tomcat_up"检查Tomcat是否启动。现在它似乎工作得很正常,但使用这种方法,我会遇到由于时区的问题:我需要得到通知,如果被监视服务器的本地时间是在[8:05,22:45],即使Prometheus服务器位于不同的时区。

一个简单的解决方案是,只有当check_system_time_in_interval时间序列的"实例"标签等于TOMCAT down的"实例"标签时,才抑制警报(例如,如果check_system_time_in_interval{instance="10.41.0.118"}=0, tomcat_up{instance="10.41.0.118}=1"然后触发警报),但我不知道如何修改&;inhibit_rule&;为了做到这一点。

过了一段时间,我想到了一个简单的解决方案:添加一个新标签"timezone"并仅在"timezone"时禁用警报。标签匹配。

最新更新