我有一个kubernetes集群,用于监控和警报,我正在使用普罗米修斯。 Prometheus alertmanager不断重复警报,直到它们处于活动状态。我想配置我的alertmanager只将一次警报发送到松弛状态,并仅在警报状态发生变化时重复警报
我尝试仅在特定时间生成警报,如下所示
(kube_pod_container_status_restarts_total> 3)*((time()%86400/3600> bool 3)== bool(time()%86400/3600 <bool 4))
但这对我不起作用
Prometheus服务器配置如下:
prometheus-server.yml
alert: PodRestartAlert
expr: kube_pod_container_status_restarts_total >3
for: 5m
labels:
severity:
annotations:
description: ""
summary: 'The pods that are restarted more than 3 times'
Alertmanager配置如下:
global:
slack_api_url: "http://"
receivers:
- name: default-receiver
slack_configs:
- channel: '#abc'
text: Prometheus Alert generated
route:
group_by:
- alertname
- datacenter
- app
group_interval: 5m
receiver: default-receiver
repeat_interval: 0
我正在努力实现以下目标:
如果最初有10个已经重启超过3次的吊舱,那么它应该仅对松弛一次警报
如果在一两天之后,如果重新启动的pod的数量增加到只有20个pod,那么警报管理器应该抛出一个警报来松弛
关于我可以尝试或改变的任何建议都会有很大的帮助
提前致谢!
您可以使用slack_configs.title
创建通用消息,并通过触发/解决警报来使用slack_configs.text
,这样您就可以在单个Slack消息中接收多个相同类型的警报。
此外,请务必设置slack_configs.send_resolved: true
以获得有关已解决警报的通知。
e.f.:
alertmanager:
config:
global:
resolve_timeout: 5m
route:
group_by:
- alertname
- datacenter
- app
group_wait: 30s
group_interval: 5m
repeat_interval: 12h
receiver: 'default-receiver'
receivers:
- name: 'default-receiver'
slack_configs:
- channel: '#abc'
send_resolved: true
title: '[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] Monitoring Event Notification'
text: |-
{{ range .Alerts }}
*Alert:* {{ .Labels.alertname }} - `{{ .Labels.severity }}`
*Description:* {{ .Annotations.summary }}
*Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:> *Runbook:* <{{ .Annotations.runbook_url }}|:spiral_note_pad:>
*Details:*
{{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`
{{ end }}
{{ end }}
上面的例子也在.Labels.SortedPairs
的范围内,创建一个完整的“详细信息:”部分,其中包含所有涉及触发警报的内容。
进一步阅读: