自动化警报管理器接收器

automation alertmanager receivers

下午好,也许有人从自定义 pod 注释中发现了在 alertmanager 中自动填充接收器?

我的意思是,我希望 alermanager 从 pod 注释中获取接收器,而不是用手来做。例如,如果命名空间是 _,那么接收者是从自定义获取的。io/owner(例如)。

我的意思是它看起来像吗

- 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 访问它。相比之下,由于具有许多不同的警报名称和实例标签的警报可能在这个通知中,我们必须遍历它们以列出所有警报。

https://www.robustperception.io/using-labels-to-direct-email-notifications