要修改 Alertmanager 的默认邮件模板页面,您需要编辑 Alertmanager 的配置文件,具体步骤如下:

  1. 找到 Alertmanager 配置文件
    默认情况下,Alertmanager 的配置文件通常位于 /etc/alertmanager/alertmanager.yml(Linux 系统)或 C:\Program Files\alertmanager\alertmanager.yml(Windows 系统)。如果您使用的是 Docker 容器部署,配置文件可能在挂载的 volume 中。请根据您的实际部署情况找到对应的配置文件。
  2. 备份原配置文件
    在修改前,建议先备份当前的配置文件,以便在必要时恢复。
  3. 编辑配置文件
    使用您熟悉的文本编辑器(如 vim, nano, notepad++ 等)打开 Alertmanager 配置文件。
  4. 定位邮件通知相关部分
    在配置文件中找到与邮件通知相关的 receivers 部分。如果您还没有配置邮件通知,可以参考以下示例添加一个基本的邮件接收器:
receivers:
  - name: 'email_notifications'
    email_configs:
      - to: 'your.email@example.com'
        from: 'alertmanager@example.com'
        smarthost: 'smtp.example.com:587'
        auth_username: 'username'
        auth_password: 'password'
        auth_identity: 'username'
        html: '{{ template "email.default.html" . }}'

其中,html: '{{ template "email.default.html" . }}' 行指定了使用的邮件模板。

  1. 自定义邮件模板
    Alertmanager 使用 Go 的 text/template 包来处理模板。默认的邮件模板文件通常位于 Alertmanager 安装目录下的 templates/ 目录中,例如 /usr/local/alertmanager-<version>/templates/email.default.html。您需要找到并编辑这个文件以满足您的需求。
    如果您希望使用自定义模板路径而不是默认模板,可以在 html: 字段中指定您的模板文件路径,如:
html: '/path/to/your/custom/email_template.html'

您也可以直接在配置文件中嵌入 HTML 模板内容,如下所示:

html: |
  <html>
  <head></head>
  <body>
    <!-- 这里编写您的自定义邮件模板内容 -->
  </body>
  </html>
  1. 编写自定义邮件模板
    在自定义邮件模板中,您可以使用 Alertmanager 提供的模板函数和变量来动态生成邮件内容。这些变量和函数文档通常可以在 Alertmanager 的官方文档中找到,或者参考内置模板作为起点。
    一个基本的模板可能包含以下部分:
  • 邮件标题:使用 {{ .CommonAnnotations.Title }}{{ .GroupLabels.alertname }} 获取。
  • 警报详情:使用 {{ range .Alerts }}...{{ end }} 循环遍历每个警报,并展示其详细信息(如状态、级别、消息、标签等)。
  • 警报上下文信息:如 {{ .ExternalURL }} 提供访问 Alertmanager UI 的链接。
  • 样式与格式:根据需要编写 HTML 标签、CSS 样式等以美化邮件外观。

示例模板代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>{{ .CommonAnnotations.Title }}</title>
  <style>
    /* 在这里编写 CSS 样式 */
  </style>
</head>
<body>
  <h1>{{ .CommonAnnotations.Title }}</h1>
  <p>Timestamp: {{ .ExternalURL }}/#/alerts?receiver={{ .Receiver }}</p>

  <ul>
    {{ range .Alerts }}
      <li>
        <h2>{{ .Labels.alertname }} ({{ .Status.State }})</h2>
        <p>{{ .Annotations.description }}</p>
        <p>Labels:</p>
        <ul>
          {{ range $labelName, $labelValue := .Labels.SortedPairs }}
            <li><strong>{{ $labelName }}:</strong> {{ $labelValue }}</li>
          {{ end }}
        </ul>
      </li>
    {{ end }}
  </ul>
</body>
</html>
  1. 保存并重启 Alertmanager
    保存修改后的配置文件和(或)模板文件。然后,根据您的部署方式重启 Alertmanager 服务,使更改生效。如果是 Docker 容器,可以执行 docker restart alertmanager_container_name;如果是 systemd 服务,可以运行 systemctl restart alertmanager.service

通过以上步骤,您已经成功修改了 Alertmanager 的默认邮件模板页面。现在,当触发警报时,Alertmanager 将使用您自定义的模板生成并发送邮件通知。