prometheus alarmmanager 里配置了告警邮件发送,但是当告警处理后,恢复的邮件不会发送
时间: 2024-04-22 21:25:56 浏览: 247
如果您已经在 Prometheus 的 Alertmanager 中配置了告警邮件发送,并且可以成功地收到告警邮件,那么在告警恢复时,可以通过设置 `resolved` 标记来触发告警恢复邮件的发送。
具体来说,当告警恢复时,Alertmanager 会发送一个 POST 请求到 `http://<alertmanager-host>:<alertmanager-port>/api/v1/alerts` 接口,并且在请求体中包含一个 JSON 格式的数据,其中包含了恢复的告警信息。在这个 JSON 数据中,您可以通过设置 `status` 字段为 `resolved` 来表示这是一条告警恢复信息。例如:
```
{
"version": "4",
"groupKey": "{...}",
"status": "resolved",
"receiver": "email",
"alerts": [
{
"status": "resolved",
"labels": {...},
"annotations": {...},
"startsAt": "2021-11-01T00:00:00Z",
"endsAt": "2021-11-01T00:05:00Z",
"generatorURL": "http://<prometheus-host>:<prometheus-port>/graph?g0.expr=..."
}
]
}
```
您需要在 Alertmanager 的配置文件中添加一个恢复邮件的通知规则,以便在接收到这样的 POST 请求时触发邮件发送。具体来说,可以在 `route` 部分的 `routes` 字段中添加一个新的规则,使用 `match` 条件匹配 `status="resolved"`,然后指定一个新的 `receiver`,例如:
```
route:
receiver: default-receiver
routes:
- match:
status: resolved
receiver: resolved-email
```
此外,您还需要在 `receivers` 部分中定义一个新的 `resolved-email` 接收器,并配置相应的邮件发送参数,例如:
```
receivers:
- name: resolved-email
email_configs:
- to: 'your-email@example.com'
from: 'alertmanager@example.com'
subject: 'Alertmanager Resolved: {{ .CommonAnnotations.summary }}'
html: '{{ template "email.default.html" . }}'
webhook_configs: []
```
在这个配置中,我们定义了一个名为 `resolved-email` 的接收器,它会发送邮件到指定的收件人。邮件的主题中包含了告警的摘要信息,邮件内容使用了 Alertmanager 提供的默认模板。
注意,为了使 `resolved-email` 接收器生效,您还需要在 `route` 部分的 `routes` 字段中配置相应的规则,指定 `receiver: resolved-email`。例如:
```
route:
receiver: default-receiver
routes:
- match:
status: resolved
receiver: resolved-email
```
这样,当 Alertmanager 接收到告警恢复的 POST 请求时,就可以触发邮件的发送了。
阅读全文