10分钟后停用Prometheus警报

时间:2019-04-21 01:17:37

标签: prometheus prometheus-alertmanager

我有一个kubernetes集群,为了监视和发出警报,我正在使用Prometheus。 Prometheus警报管理器会不断重复警报,直到它们处于活动状态为止。 我想将我的alertmanager配置为仅将警报发送到备用服务器一次,并且仅在警报状态发生变化时重复

我尝试仅在特定时间生成警报,如下所示:

(kube_pod_container_status_restarts_total> 3)*((ti​​me()%86400/3600> bool 3)== bool(time()%86400/3600

但这对我不起作用

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个Pod已重新启动了3次以上,则它应该仅向闲置状态发出一次警报

如果在一两天之后,如果重新启动的Pod的数量仅增加到20个Pod,则警报管理器应仅发出一次警报以使其放松,从而使该警报失效

关于我可以尝试或更改的任何建议都会有很大帮助

谢谢!

1 个答案:

答案 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,创建了一个完整的“ 详细信息:”部分,其中涉及触发警报的所有内容。

警报应如下所示: slack_alert_example


进一步阅读: