在Alertmanager中配置告警邮件发送给多人,通常需要在Alertmanager的配置文件中指定一个或多个收件人列表,这些列表可以包含多个电子邮件地址。以下是一个配置示例,展示了如何设置Alertmanager以向多个收件人发送告警邮件:
alertmanager.yml
global:
resolve_timeout: 5m
route:
group_by: ['alertname', 'cluster', 'service'] # 可根据实际情况调整分组策略
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receiver: 'team-email'
receivers:
- name: 'team-email'
email_configs:
- to: 'user1@example.com,user2@example.com,user3@example.com' # 直接列出多个收件人
# 或者使用逗号分隔的列表
# to: 'team-alerts@example.com,devops@example.com,management@example.com'
from: 'alertmanager@example.com'
smarthost: 'smtp.example.com:587'
auth_username: 'alertmanager-user'
auth_password: 'secret-password'
auth_identity: 'alertmanager@example.com'
tls_config:
insecure_skip_verify: false # 根据实际情况配置是否跳过TLS验证
headers:
Subject: '[ALERT] {{ .Status | toUpper }}: {{ .GroupLabels.alertname }}'
Importance: 'high'
html: |
<html>
<body>
<h1>{{ .Status }}: {{ .GroupLabels.alertname }}</h1>
<p>Summary: {{ .CommonAnnotations.summary }}</p>
<p>Description: {{ .CommonAnnotations.description }}</p>
<p>Details:</p>
<ul>
{{ range .Alerts }}
<li>
<strong>Instance:</strong> {{ .Labels.instance }}
<br>
<strong>Severity:</strong> {{ .Labels.severity }}
<br>
<strong>Value:</strong> {{ .Annotations.value }}
</li>
{{ end }}
</ul>
</body>
</html>
# 可以添加多个邮件配置块,每个块对应不同的收件人列表
# - to: 'oncall@example.com'
# cc: 'secondary-oncall@example.com'
# bcc: 'archive@example.com'
# ...
在这个示例中:
-
global
部分设置了全局的告警处理超时时间。 -
route
部分定义了告警路由规则,包括告警分组、等待时间、重发间隔等。 -
receiver
指定了默认的接收器,即team-email
。 - 在
receivers
部分,定义了一个名为team-email
的接收器,它包含了多个email_configs
:
-
to
字段直接列出了多个收件人的电子邮件地址,用逗号分隔。这些收件人都会收到同一封告警邮件。 - 其他字段如
from
、smarthost
、auth_username
等配置了SMTP服务器连接的相关信息,以便Alertmanager能够通过SMTP发送邮件。 -
headers
和html
字段用于自定义邮件的主题和正文格式,可以使用模板语法来插入告警的具体信息。
如果需要向不同团队或角色发送不同类型的告警,可以定义多个接收器,每个接收器包含其对应的邮件配置,或者在单个接收器内添加多个邮件配置块,每个块针对不同的收件人列表。这样,当告警匹配到相应的路由规则时,就会按照配置发送邮件给相应的收件人。
请确保替换上述示例中的电子邮件地址、SMTP服务器信息以及认证凭据为实际有效的值,并根据您的邮件服务商要求调整TLS配置和其他相关设置。在应用配置变更后,重启Alertmanager服务以使新的邮件发送配置生效。