Prometheus

56142
下载
Prometheus 是一个开源的监控和告警系统,专注于时间序列数据的采集与存储。由 SoundCloud 开发,配备高级查询语言PromQL,便于数据挖掘与分析,并无缝对接多种可视化平台。

通知模版示例


各种告警示例与对应的 Alertmanager 配置文件设置(alertmanager.yml),均使用了 Go 的模板系统

自定义 Slack 通知

在本示例中,我们自定义了一个 Slack 通知,其中包含指向我们组织内部 wiki 的 URL。该 wiki 提供了如何处理发出的告警的信息。

global:
# 可以将此URL放在文件中。
# 示例:`slack_api_url_file: '/etc/alertmanager/slack_url'`
slack_api_url: '<slack_webhook_url>'
route:
receiver: 'slack-notifications'
group_by: [alertname, datacenter, app]
receivers:
- name: 'slack-notifications'
slack_configs:
- channel: '#alerts'
text: 'https://internal.myorg.net/wiki/alerts/{{ .GroupLabels.app }}/{{ .GroupLabels.alertname }}'

访问 CommonAnnotations 中的注释

在本示例中,我们通过访问由 Alertmanager 发送的数据中存储的 CommonAnnotations 的summarydescription,自定义发送给 Slack 接收器的文本。

Alert
groups:
- name: Instances
rules:
- alert: InstanceDown
expr: up == 0
for: 5m
labels:
severity: page
# Prometheus 模板在这里应用于告警的注释和标签字段。
annotations:
description: '{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes.'
summary: 'Instance {{ $labels.instance }} down'
Receiver
- name: 'team-x'
slack_configs:
- channel: '#alerts'
# Alertmanager 模板在这里应用。
text: "<!channel>
summary: {{ .CommonAnnotations.summary }}
description: {{ .CommonAnnotations.description }}"

遍历接收到的所有告警

假设现有与前一示例相同的告警,我们可以自定义接收器以遍历接收到的所有告警,打印其各自注释的summarydescription

Receiver
- name: 'default-receiver'
slack_configs:
- channel: '#alerts'
title: "{{ range .Alerts }}{{ .Annotations.summary }}
{{ end }}"
text: "{{ range .Alerts }}{{ .Annotations.description }}
{{ end }}"

定义可重用模板

回到第一个示例,我们也可以提供包含命名模板的文件,然后由 Alertmanager 加载,以避免跨多行的复杂模板。首先,创建一个位于 /alertmanager/template/myorg.tmpl 的文件,然后在其内创建一个名为 “slack.myorg.text” 的模板:

{{ define "slack.myorg.text" }}https://internal.myorg.net/wiki/alerts/{{ .GroupLabels.app }}/{{ .GroupLabels.alertname }}{{ end }}

这个配置现在加载了指定名称的模板用于 “text” 字段,并提供了指向自定义模板文件的路径:

global:
slack_api_url: '<slack_webhook_url>'
route:
receiver: 'slack-notifications'
group_by: [alertname, datacenter, app]
receivers:
- name: 'slack-notifications'
slack_configs:
- channel: '#alerts'
text: '{{ template "slack.myorg.text" . }}'
templates:
- '/etc/alertmanager/templates/myorg.tmpl'

这个例子在这篇博客中有更详细的解释。

该文档基于 Prometheus 官方文档翻译而成。


observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32