如何暂停特定时间的普罗米修斯警报

时间:2019-12-03 12:49:26

标签: prometheus prometheus-alertmanager

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

例如如果我在凌晨2点进行备份,则需要暂停Prometheus内存警报。有可能吗?

3 个答案:

答案 0 :(得分:1)

不,不能安排无声。

针对您的情况的一些解决方法:

1)也许您可以更改Prometheus配置并增加“ for”子句,以便有更多时间执行备份而无需触发警报。

2)您可以使用REST API在备份开始/结束时创建/删除静默。

查看有关此主题的更多信息here

答案 1 :(得分:1)

您可以将历史条件进行比较,因此,如果此时过去两天的指标相差不超过2次,则不会弹出警报。

df <- structure(list(timestamp = c("01-05-2020 00:01:22", "02-05-2020 00:01:22", 
"03-05-2020 00:01:22", "04-05-2020 00:01:22", "05-05-2020 00:01:22", 
"06-05-2020 00:01:22", "07-05-2020 00:01:22", "08-05-2020 00:01:22", 
"09-05-2020 00:01:22", "10-05-2020 00:01:22", "01-05-2020 00:01:22", 
"02-05-2020 00:01:22", "03-05-2020 00:01:22", "04-05-2020 00:01:22", 
"05-05-2020 00:01:22", "06-05-2020 00:01:22", "07-05-2020 00:01:22", 
"08-05-2020 00:01:22", "09-05-2020 00:01:22", "10-05-2020 00:01:22"
), section = c("A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
"B", "B", "B", "B", "B", "B", "B", "B", "B", "B"), temp = c(45L, 
10L, 98L, 23L, 67L, 89L, 100L, 110L, 123L, 12L, 23L, 44L, 55L, 
12L, 98L, 45L, 87L, 65L, 12L, 8L)), class = "data.frame", row.names = c(NA, 
-20L))

答案 2 :(得分:0)

正如Marcelo所说,无法安排静默时间,但是如果备份是定期进行的(例如每晚从凌晨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,则需要更多样板(以记录规则为例)。

作为附带说明,如果您正在监视备份过程,则可能已经具有一个指标,该指标指示正在进行备份。如果是这样,您可以使用此指标来禁止其他警报,而无需维护计划。