在Slack中自定义Prometheus AlertManager通知

时间:2018-10-21 18:02:53

标签: yaml slack prometheus prometheus-alertmanager

我很少安装和配置WMI的Win服务器(如Build,DB,App等),并且能够在Prometheus仪表板上读取度量标准(基于诸如磁盘空间> 90的规则)。

在同一盒子上设置一个Altermanager,然后将度量标准(磁盘空间> 90)详细信息写入我的Slack Channel。

route:
 group_by: [cluster]
 # If an alert isn't caught by a route, send it slack.
 receiver: slack
 routes:
  # Send severity=slack alerts to slack.
  - match:
      severity: critical
    receiver: slack
receivers:
- name: slack
  slack_configs:
  - api_url: 'https://hooks.slack.com/services/Token'
    channel: '#alerts'

Slack通知的输出是- 实际

enter image description here 有没有一种方法可以准备计算机名称-以及与标记名称进行区分-如Build,Db等?

我希望通知更具可读性,如下所示(我是从某个博客获得的),能否请您提出建议?

预期 enter image description here

任何输入都受到高度赞赏。

谢谢

2 个答案:

答案 0 :(得分:1)

您可以从这个好例子开始。将此添加到slack_configs下:

        text: >-
          {{ range .Alerts }}
             *Alert:* {{ .Annotations.summary }} - `{{ .Labels.severity }}`
            *Description:* {{ .Annotations.description }}
            *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:> *Runbook:* <{{ .Annotations.runbook }}|:spiral_note_pad:>
            *Details:*
            {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`
            {{ end }}
          {{ end }}

答案 1 :(得分:0)

在接收者部分添加一个“文本”字段。这将使您能够从prometheus-rules.yaml文件中提取信息。

receivers:
- name: slack
  slack_configs:
  - api_url: 'https://hooks.slack.com/services/Token'
    channel: '#alerts'
    text: "<!channel> \n summary: {{ .CommonAnnotations.summary }}\n description: {{ .CommonAnnotations.description }}"