CnOps 智能运维与可观测社区
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题

CnOps 智能运维与可观测社区

愿景

CnOps 智能运维与可观测社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页/开源项目/Prometheus/通知模板示例
文档目录
告警概述AlertmanagerAlertmanager 配置高可用性通知集成告警 API通知模板参考通知模板示例管理 APIHTTPS 和认证

Prometheus

通知模板示例

以下是各种不同的告警示例以及相应的 Alertmanager 配置文件设置(alertmanager.yml)。每个示例都使用了 Go 模板系统。 在此示例中,我们自定义了 Slack 通知,使其发送一个链接到我们组织的 Wiki 页面的 URL,该页面描述了如何处理已发送的特定告警。 在此示例中,我们再次自定义发送到 Slack 接收器的文本,访问 Alertmanager 发送的数据中...

以下是各种不同的告警示例以及相应的 Alertmanager 配置文件设置(alertmanager.yml)。每个示例都使用了 Go 模板系统。

自定义 Slack 通知

在此示例中,我们自定义了 Slack 通知,使其发送一个链接到我们组织的 Wiki 页面的 URL,该页面描述了如何处理已发送的特定告警。

global:
  # Also possible to place this URL in a file.
  # Ex: `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 中的注解

在此示例中,我们再次自定义发送到 Slack 接收器的文本,访问 Alertmanager 发送的数据中 CommonAnnotations 里存储的 summary 和 description。

告警

groups:
- name: Instances
  rules:
  - alert: InstanceDown
    expr: up == 0
    for: 5m
    labels:
      severity: page
    # Prometheus templates apply here in the annotation and label fields of the alert.
    annotations:
      description: '{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes.'
      summary: 'Instance {{ $labels.instance }} down'

接收器

- name: 'team-x'
  slack_configs:
  - channel: '#alerts'
    # Alertmanager templates apply here.
    text: "<!channel> \nsummary: {{ .CommonAnnotations.summary }}\ndescription: {{ .CommonAnnotations.description }}"

遍历所有接收到的告警

最后,假设使用与上一个示例相同的告警,我们自定义接收器以遍历从 Alertmanager 接收到的所有告警,在新行上打印它们各自的注解摘要和描述。

接收器

- name: 'default-receiver'
  slack_configs:
  - channel: '#alerts'
    title: "{{ range .Alerts }}{{ .Annotations.summary }}\n{{ end }}"
    text: "{{ range .Alerts }}{{ .Annotations.description }}\n{{ 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'

此示例在这篇博客文章中有更详细的解释。

文章大纲