Alertmanager 通知模板

通知模板


告警通知使用的是默认模版,因为它已经编译到二进制包了,所以我们不需要额外配置。如果我们想自定义模版,这又该如何配置呢?

Alertmanager 默认使用的通知模板可以从 alertmanager/default.tmpl at main · prometheus/alertmanager · GitHub 

获取,Alertmanager 的通知模板是基于 Golang 的模板系统,当然也支持用户自定义和使用自己的模板。

第一种方式是基于模板字符串,直接在 Alertmanager 的配置文件中使用模板字符串,如下所示:

receivers:
  - name: "slack-notifications"
    slack_configs:
      - channel: "#alerts"
        text: "https://internal.myorg.net/wiki/alerts/{
   
   { .GroupLabels.app }}/{
   
   { .GroupLabels.alertname }}"

直接在配置文件中可以使用一些模板字符串,比如获取 { { .GroupLabels }} 下面的一些属性。

另外一种方法就是直接修改官方默认的模板,此外也可以自定义可复用的模板文件,比如针对 email 的模板,我们可以创建一个名为 template_email.tmpl 的自定义模板文件,如下所示:

apiVersion: v1
kind: ConfigMap
metadata:
  name: alert-config
  namespace: kube-mon
data:
  config.yml: |-
    global:  # 全局配置
      ......
    route:  # 路由
      ......
    templates:  # 增加 templates 配置,指定模板文件
    - '/etc/alertmanager/template_email.tmpl'

    receivers:  # 接收器
    - name: 'email'
      email_configs:
      - to: '[email protected]'
        send_resolved: true
        html: '{
   
   { template "email.html" . }}' # 此处通过 html 指定模板文件中定义的 email.html 模板

  # 下面定义 email.html 必须和上面指定的一致,注释不能写进模板文件中
  template_email.tmpl: |-
    {
   
   { define "email.html" }}  
    {
   
   {- if gt (len .Alerts.Firing) 0 -}}{
   
   { range .Alerts }}
    @报警<br>
    <strong>实例:</strong> {
   
   { .Labels.instance }}<br>
    <strong>概述:</strong> {
   
   { .Annotations.summary }}<br>
    <strong>详情:</strong> {
   
   { .Annotations.description }}<br>
    <strong>时间:</strong> {
   
   { (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}<br>
    {
   
   { end }}{
   
   { end -}}<br>
    {
   
   {- if gt (len .Alerts.Resolved) 0 -}}{
   
   { range .Alerts }}<br>
    @恢复<br>
    <strong>实例:</strong> {
   
   { .Labels.instance }}<br>
    <strong>信息:</strong> {
   
   { .Annotations.summary }}<br>
    <strong>恢复:</strong> {
   
   { (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}<br>
    {
   
   { end }}{
   
   { end -}}
    {
   
   {- end }}

在 Alertmanager 配置中通过 templates 属性来指定我们自定义的模板路径,这里我们定义的 template_email.tmpl 模板会通过 Configmap 挂载到 /etc/alertmanager 路径下,模板中通过 { { define "email.html" }} 定义了一个名为 email.html 的命名模板,然后在 email 的接收器中通过 email_configs.html 来指定定义的命名模板即可。更新上面 Alertmanager 的配置对象,重启 Alertmanager 服务,然后等待告警发出,即可看到我们如下所示自定义的模板信息:

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/124592695