我在Prometheus内存警报方面遇到了一些问题。如果我备份Gitlab,则内存使用率将高达95%。我想暂停记忆警报特定时间。
例如如果我在凌晨2点进行备份,则需要暂停Prometheus内存警报。有可能吗?
答案 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,则需要更多样板(以记录规则为例)。
作为附带说明,如果您正在监视备份过程,则可能已经具有一个指标,该指标指示正在进行备份。如果是这样,您可以使用此指标来禁止其他警报,而无需维护计划。