我有一个kubernetes集群,为了监视和发出警报,我正在使用Prometheus。 Prometheus警报管理器会不断重复警报,直到它们处于活动状态为止。 我想将我的alertmanager配置为仅将警报发送到备用服务器一次,并且仅在警报状态发生变化时重复
我尝试仅在特定时间生成警报,如下所示:
(kube_pod_container_status_restarts_total> 3)*((time()%86400/3600> bool 3)== bool(time()%86400/3600 但这对我不起作用 Prometheus服务器配置如下: Alertmanager的配置如下: 我正在尝试实现以下目标: 如果最初有10个Pod已重新启动了3次以上,则它应该仅向闲置状态发出一次警报 如果在一两天之后,如果重新启动的Pod的数量仅增加到20个Pod,则警报管理器应仅发出一次警报以使其放松,从而使该警报失效 关于我可以尝试或更改的任何建议都会有很大帮助 谢谢!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'
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
答案 0 :(得分:0)
您可以使用slack_configs.title
来创建通用消息,而slack_configs.text
可以使用它们来触发/解决警报,因此您可以在一条Slack消息中接收相同类型的多个警报。 / p>
此外,请确保设置slack_configs.send_resolved: true
以便收到有关已解决的警报的通知。
例如:
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
,创建了一个完整的“ 详细信息:”部分,其中涉及触发警报的所有内容。
进一步阅读: