prometheus - 如何在特定时间暂停普罗米修斯警报

标签 prometheus prometheus-alertmanager

我在 Prometheus 内存警报方面遇到了一些问题。如果我备份 Gitlab,那么内存使用率将高达​​ 95%。我想在特定时间暂停内存警报。

例如如果我在凌晨 2 点进行备份,那么我需要暂停 Prometheus 内存警报。是否可以?

最佳答案

正如马塞洛所说,没有办法安排静音,但如果备份是定期进行的(比如每晚凌晨 2 点到凌晨 3 点),您可以将其包含在警报表达式中。

- alert: OutOfMemory
  expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10 AND ON() absent(hour() >= 2 <= 3)

如果您想抑制许多规则(或者如果您想要更复杂的抑制时间表),这会很快变得乏味。在这种情况下,您可以使用 inhibition rule警报管理器的以下方式。

第一步是在 Prometheus 中定义一个警报,在您希望抑制发生时触发:
- alert: BackupHours
  expr: hour() >= 2 <= 3
  for: 1m
  labels:
    notification: none
  annotations:
    description: 'This alert fires during backup hours to inhibit others'

请记住在警报管理器中添加路由以避免通知此警报:
routes:
  - match:
      notification: none
    receiver: do_nothing
receivers:
- name: do_nothing

然后在这段时间内使用抑制规则使目标规则静音:
inhibit_rules:
- source_match:
    alertname: BackupHours
  target_match:
    # here can be any other selection of alert
    alertname: OutOfMemory

请注意,它仅适用于 UTC 计算的开箱即用。如果您需要 DST,则需要更多样板(通过示例记录规则)。

附带说明一下,如果您正在监控备份过程,您可能已经有了一个指示备份正在进行的指标。如果是这样,您可以使用此指标来禁止其他警报,而无需维护时间表。

关于prometheus - 如何在特定时间暂停普罗米修斯警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59157537/

相关文章:

kubernetes - 无法从Pod抓取指标

security - 为 Alertmanager 配置 HTTPS 和基本身份验证

Prometheus服务器自动重新加载规则

kubernetes - 在 Prometheus Alertmanager 上设置 MicrosoftTeams 通知

prometheus - 如何在警报规则普罗米修斯中显示指标的值

apache-spark - 如何获得 2 个不同的普罗米修斯指标之间的差异?

docker - prometheus 中未公开自定义指标

prometheus - 使用分隔符连接 Grafana 中的字段

java - 保护 Spring Boot 2 Actuator Prometheus 端点

kubernetes - 使用 prometheus-alertmanager 通过 Grafana UI 发送警报电子邮件