下午好,也许有人遇到了在alertmanager中自定义pod注释中填写接收器的自动化?
我的意思是,我希望alermanager从pod注释中获取接收器,不喜欢用手做。例如,如果命名空间为_,则接收器从自定义获取。io/所有者(例如)。
我的意思是它可以看起来像
- name: smthg
email_configs:
- to: "__meta_kubernetes_pod_annotation_custom_io_owner"
提前谢谢你
使用标签直接发送邮件通知Alertmanager的一个方便特性是,几乎所有通知字段都是可模板化的。这可以用于基于标签路由电子邮件。
如果您直接向客户发送电子邮件通知,则不必在Alertmanager中为每个客户创建路由和接收器。无论您是在您出租的机器上提供警报的托管公司,还是在公司内提供共享服务的提供商,这都很有用。
我假设你已经有了一个工作的电子邮件通知设置,比如前面的Gmail。
我们从普罗米修斯开始。我们需要将目标电子邮件地址放入警报标签中。假设您已经构造了如下的时间序列:
mymetric{job="myjob",email_to="foo@example.org",instance="host1"}
mymetric{job="myjob",email_to="bar@example.org",instance="host2"}
然后你可以写一个警报来传播这个email_to标签,比如:
groups:
- name: test.rules
rules:
- alert: MyAlert
expr: mymetric > 1
现在在Alertmanager中我们需要做两件事。我们需要确保每个唯一的电子邮件地址通过分组获得自己的通知,我们需要使它然后转到该电子邮件地址。
route:
group_by: [email_to]
receiver: email_router
receivers:
- name: email_router
email_configs:
- to: "{{ .GroupLabels.email_to }}"
from: alerts@example.org
# Add whatever other settings you need to talk to your SMTP server
headers:
subject: "You have {{ .Alerts.Firing | len }} firing alerts"
html: |
Hi {{ .GroupLabels.email_to }},
<p>
You have the following firing alerts:
<ul>
{{ range .Alerts }}
<li>{{.Labels.alertname}} on {{ .Labels.instance }}</li>
{{ end }}
</ul>
</p>
由于email_to在group_by中,我们可以通过. grouplabels访问它。相比之下,由于一个通知中可能包含许多不同的Alertname和instance标签的警报,因此我们必须遍历它们以列出所有警报。
https://www.robustperception.io/using-labels-to-direct-email-notifications