PrometheusAlert icon indicating copy to clipboard operation
PrometheusAlert copied to clipboard

通用自定义模版专用:欢迎共享大家的自定义模版,方便其他人也可以直接使用

Open feiyu563 opened this issue 4 years ago • 95 comments

feiyu563 avatar Jun 16 '20 09:06 feiyu563

[prometheus自定义模版,支持恢复通知模版]

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
## [Prometheus恢复信息]({{$v.generatorURL}})
#### [{{$v.labels.alertname}}]({{$var}})
###### 告警级别:{{$v.labels.level}}
###### 开始时间:{{$v.startsAt}}
###### 结束时间:{{$v.endsAt}}
###### 故障主机IP:{{$v.labels.instance}}
##### {{$v.annotations.description}}
![Prometheus](https://raw.githubusercontent.com/feiyu563/PrometheusAlert/master/doc/alert-center.png)
{{else}}
## [Prometheus告警信息]({{$v.generatorURL}})
#### [{{$v.labels.alertname}}]({{$var}})
###### 告警级别:{{$v.labels.level}}
###### 开始时间:{{$v.startsAt}}
###### 结束时间:{{$v.endsAt}}
###### 故障主机IP:{{$v.labels.instance}}
##### {{$v.annotations.description}}
![Prometheus](https://raw.githubusercontent.com/feiyu563/PrometheusAlert/master/doc/alert-center.png)
{{end}}
{{ end }}

feiyu563 avatar Jun 16 '20 09:06 feiyu563

[自定义模版中只取指定长度的告警消息写法]

{{ $v.annotations.description | printf "%.20s" }}

上面数字就表示需要取的文本长度,超出的会被截断

feiyu563 avatar Jun 16 '20 09:06 feiyu563

微信机器人自定义告警模板:

  1. 告警红色
  2. 恢复绿色
  3. 告警级别我用的severity,可以修改为level。请自己定义labels
  4. 使用hostname,请自己定义labels
  5. 我将故障主机IP改为实例地址,因为有些探针运行在本地,但告警对象不是它,所以修改为实例地址
  6. description是自定义的告警详细信息
{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
#### [Prometheus恢复信息]({{$v.generatorURL}})

> <font color="info">告警名称</font>:[{{$v.labels.alertname}}]({{$var}})
> <font color="info">告警级别</font>:{{$v.labels.severity}}
> <font color="info">开始时间</font>:{{$v.startsAt}}
> <font color="info">结束时间</font>:{{$v.endsAt}}
> <font color="info">实例地址</font>:{{$v.labels.instance}}
> <font color="info">主机名称</font>:{{$v.labels.hostname}}

**{{$v.annotations.description}}**
{{else}}
#### [Prometheus告警信息]({{$v.generatorURL}})

> <font color="#FF0000">告警名称</font>:[{{$v.labels.alertname}}]({{$var}})
> <font color="#FF0000">告警级别</font>:{{$v.labels.severity}}
> <font color="#FF0000">开始时间</font>:{{$v.startsAt}}
> <font color="#FF0000">结束时间</font>:{{$v.endsAt}}
> <font color="#FF0000">实例地址</font>:{{$v.labels.instance}}
> <font color="#FF0000">主机名称</font>:{{$v.labels.hostname}}

**{{$v.annotations.description}}**
{{end}}
{{ end }}


效果图:

image



备注: 此模板稍微修改也可以适用于钉钉。

Zhang21 avatar Jul 07 '20 03:07 Zhang21

请问自定义的消息模板能否通过什么方式注入到服务中,想把自定义的模板加入到自动部署的流程中

HuangDi1234 avatar Jul 27 '20 12:07 HuangDi1234

这方面就需要自己实现接口了

---原始邮件--- 发件人: "HuangDi"<[email protected]> 发送时间: 2020年7月27日(周一) 晚上8:45 收件人: "feiyu563/PrometheusAlert"<[email protected]>; 抄送: "feiyu563"<[email protected]>;"Author"<[email protected]>; 主题: Re: [feiyu563/PrometheusAlert] 通用自定义模版专用:欢迎共享大家的自定义模版,方便其他人也可以直接使用 (#30)

请问自定义的消息模板能否通过什么方式注入到服务中,想把自定义的模板加入到自动部署的流程中

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

feiyu563 avatar Jul 27 '20 12:07 feiyu563

请问下,我在配置prometheus 邮件告警,使用自定义模板,是碰到这个错误,“2020/12/01 18:22:20.357 [E] [value.go:460] [1606818140356848598] 接口参数缺失!”,我在alertmanager配置的是“ - url: 'http://ip:port/prometheusalert' ”,是哪里配置不对导致参数缺失?我找不到原因所在。

xujia3111 avatar Dec 01 '20 11:12 xujia3111

http://ip:port/prometheusalert  这个URL是测试时候使用的,正式使用的时候找下Prometheusalert  web页面上显示的那个URL

---原始邮件--- 发件人: "xujia3111"<[email protected]> 发送时间: 2020年12月1日(周二) 晚上7:38 收件人: "feiyu563/PrometheusAlert"<[email protected]>; 抄送: "feiyu563"<[email protected]>;"Author"<[email protected]>; 主题: Re: [feiyu563/PrometheusAlert] 通用自定义模版专用:欢迎共享大家的自定义模版,方便其他人也可以直接使用 (#30)

请问下,我在配置prometheus 邮件告警,使用自定义模板,是碰到这个错误,“2020/12/01 18:22:20.357 [E] [value.go:460] [1606818140356848598] 接口参数缺失!”,我在alertmanager配置的是“ - url: 'http://ip:port/prometheusalert' ”,是哪里配置不对导致参数缺失?我找不到原因所在。

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

feiyu563 avatar Dec 01 '20 11:12 feiyu563

feiyu563,你好;腾讯云的短信接口中需要输入多个参数,请问下在模板中需要怎么配置这些参数呢?

xujia3111 avatar Dec 07 '20 07:12 xujia3111

目前只支持一个模版参数,具体可以参考PrometheusAlert的腾讯云短信说明中的参考模版

------------------ 原始邮件 ------------------ 发件人: "xujia3111"<[email protected]>; 发送时间: 2020年12月7日(星期一) 下午3:33 收件人: "feiyu563/PrometheusAlert"<[email protected]>; 抄送: "244217140"<[email protected]>; "Author"<[email protected]>; 主题: Re: [feiyu563/PrometheusAlert] 通用自定义模版专用:欢迎共享大家的自定义模版,方便其他人也可以直接使用 (#30)

feiyu563,你好;腾讯云的短信接口中需要输入多个参数,请问下在模板中需要怎么配置这些参数呢?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

feiyu563 avatar Dec 07 '20 07:12 feiyu563

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }} {{if eq $v.status "resolved"}}

Prometheus恢复信息

告警名称{{$v.labels.alertname}} 告警级别:{{$v.labels.severity}} 开始时间:{{$v.startsAt}} 结束时间:{{$v.endsAt}} 实例地址:{{$v.labels.instance}} 主机名称:{{$v.labels.hostname}}

{{$v.annotations.description}} {{else}}

Prometheus告警信息

告警名称{{$v.labels.alertname}} 告警级别:{{$v.labels.severity}} 开始时间:{{$v.startsAt}} 结束时间:{{$v.endsAt}} 实例地址:{{$v.labels.instance}} 主机名称:{{$v.labels.hostname}}

{{$v.annotations.description}} {{end}} {{ end }}

大佬牛b,比默认模板好看多了。默认模版告警恢复傻傻不分清楚

Audi-dask avatar Dec 12 '20 02:12 Audi-dask

prometheus 报警自定义模版

{{ range $k,$v:=.alerts }}{{if eq $v.status "resolved"}}**<font color="info"> [恢复信息] From Prome</font>**
 **{{$v.labels.alertname}}**
开始时间:{{GetCSTtime $v.startsAt}}
结束时间:{{GetCSTtime $v.endsAt}}
主机IP:{{$v.labels.kubernetes_node}}
{{else}}**<font color="#FF0000"> [告警信息] From Prome</font>**
** {{$v.labels.alertname}}**
告警级别:{{$v.labels.level}}
开始时间:{{GetCSTtime  $v.startsAt}}
主机IP:{{$v.labels.kubernetes_node}}
**{{$v.annotations.description}}**
{{end}}
{{ end }}

graylog3 报警自定义模版

<font color="warning">[告警信息] From Graylog</font> 
>**{{.event_definition_description}}**
{{ range $k,$v:=.backlog }}
>告警索引:{{$v.index}}
开始时间:{{GetCSTtime $v.timestamp}}
告警主机:{{$v.fields.gl2_remote_ip}}
**{{$v.message}}**
{{end}}

loveyang2012 avatar Apr 16 '21 12:04 loveyang2012

显示所有prometheus告警label的自定义模版:

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
## [Prometheus恢复信息]({{$v.generatorURL}})
#### [{{$v.labels.alertname}}]({{$var}})
{{ range $key,$value:=$v.labels }}
###### {{$key}}:{{$value}}
{{end}}
###### 开始时间:{{$v.startsAt}}
###### 结束时间:{{$v.endsAt}}
##### {{$v.annotations.description}}
![Prometheus](https://raw.githubusercontent.com/feiyu563/PrometheusAlert/master/doc/alert-center.png)
{{else}}
## [Prometheus告警信息]({{$v.generatorURL}})
#### [{{$v.labels.alertname}}]({{$var}})
{{ range $key,$value:=$v.labels }}
###### {{$key}}:{{$value}}
{{end}}
###### 开始时间:{{$v.startsAt}}
###### 结束时间:{{$v.endsAt}}
##### {{$v.annotations.description}}
![Prometheus](https://raw.githubusercontent.com/feiyu563/PrometheusAlert/master/doc/alert-center.png)
{{end}}
{{ end }}

效果如下图:

image

feiyu563 avatar Apr 19 '21 03:04 feiyu563

钉钉告警模板

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
#### [Prometheus恢复信息]({{$v.generatorURL}})

##### <font color="#02b340">告警名称</font>:[{{$v.labels.alertname}}]({{$var}})
##### <font color="#02b340">告警级别</font>:{{$v.labels.severity}}
##### <font color="#02b340">触发时间</font>:{{GetCSTtime $v.startsAt}}
##### <font color="#02b340">结束时间</font>:{{GetCSTtime $v.endsAt}}
##### <font color="#02b340">主机名称</font>:{{$v.labels.nodename}} {{$v.labels.hostname}}

**{{$v.annotations.summary}}**
[点击打开grafana]($v.annotations.grafana)
{{else}}
#### [Prometheus告警信息]({{$v.generatorURL}})

##### <font color="#FF0000">告警名称</font>:[{{$v.labels.alertname}}]({{$var}})
##### <font color="#FF0000">告警级别</font>:{{$v.labels.severity}}
##### <font color="#FF0000">触发时间</font>:{{GetCSTtime $v.startsAt}}
##### <font color="#FF0000">主机名称</font>:{{$v.labels.nodename}} {{$v.labels.hostname}}

**{{$v.annotations.summary}}**
[点击打开grafana]($v.annotations.grafana)
{{end}}
{{ end }}
  • 其中hostname需要自行定义或者各种xxx_exporter原生参数支持.

效果图如下

image

Jonnyan404 avatar Jul 29 '21 03:07 Jonnyan404

好看

liweilijie avatar Jul 29 '21 08:07 liweilijie

我用这个模板,钉钉告警,在有触发告警时,会携带历史的恢复告警信息,导致一条告警消息,其中三四条恢复内容,一条告警消息。请问各位大佬有发现这个问题嘛。

Gerrylinux avatar Aug 27 '21 02:08 Gerrylinux

我用这个模板,钉钉告警,在有触发告警时,会携带历史的恢复告警信息,导致一条告警消息,其中三四条恢复内容,一条告警消息。请问各位大佬有发现这个问题嘛。

这是因为消息合并了

j0ck1e avatar Sep 07 '21 10:09 j0ck1e

json里面字符串取部分拼接怎么做啊 数据:

'event': { 'id': '01FF4FDZJQJTG1JAN450JXF9BT', 'origin_context': 'urn:graylog:message:es:graylog_178:4ed1ca06-1120-11ec-8c7e-a2ca6eaea137', }

想拿出来 graylog_178 4ed1ca06-1120-11ec-8c7e-a2ca6eaea137

pycgo avatar Sep 09 '21 09:09 pycgo

[自定义模版中只取指定长度的告警消息写法]

{{ $v.annotations.description | printf "%.20s" }}

上面数字就表示需要取的文本长度,超出的会被截断

[自定义模版中只取指定长度的告警消息写法]

{{ $v.annotations.description | printf "%.20s" }}

上面数字就表示需要取的文本长度,超出的会被截断

您好,请问,针对ip:port这种针对匹配到的符号:进行截取的话,应该怎样写

bestmem avatar Sep 26 '21 08:09 bestmem

{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
### [Prometheus恢复通知]({{$v.generatorURL}})

<font color="info">告警类型</font>:{{$v.labels.alertname}}
<font color="info">告警级别</font>:{{$v.labels.severity}}
<font color="info">故障时间</font>:{{GetCSTtime $v.startsAt}}
<font color="info">恢复时间</font>:{{GetCSTtime $v.endsAt}}
<font color="info">告警IP</font>:{{$v.labels.instance}}
<font color="info">告警主机</font>:{{$v.labels.hostname}}
#### =======<font color="info">告警详情</font>=======
**<font color="info">告警主题</font>:{{$v.annotations.summary}}**
**<font color="info">告警内容</font>:{{$v.annotations.description}}**
{{else}}
### [Prometheus告警通知]({{$v.generatorURL}})

<font color="#FF0000">告警类型</font>:{{$v.labels.alertname}}
<font color="#FF0000">告警级别</font>:{{$v.labels.severity}}
<font color="#FF0000">故障时间</font>:{{GetCSTtime $v.startsAt}}
<font color="#FF0000">告警IP</font>:{{$v.labels.instance}}
<font color="#FF0000">告警主机</font>:{{$v.labels.hostname}}
#### =======<font color="#FF0000">告警详情</font>=======
**<font color="#FF0000">告警主题</font>:{{$v.annotations.summary}}**
**<font color="#FF0000">告警内容</font>:{{$v.annotations.description}}**
**<font color="#FF0000">告警值</font>:{{$v.annotations.value}}**
{{end}}
{{ end }}

freedomcatjin avatar Oct 13 '21 16:10 freedomcatjin

飞书 V2 报警模板,之所以将 {{$v.status}} 放进去,是因为飞书报警可以根据报警状态实现不同的 title color

// 飞书相关的代码
	var color string
	if strings.Count(text, "resolved") > 0 && strings.Count(text, "firing") > 0 {
		color = "orange"
	} else if strings.Count(text, "resolved") > 0 {
		color = "green"
	} else {
		color = "red"
	}
{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
**[Prometheus 恢复通知]({{$v.generatorURL}})**
告警名称:{{$v.labels.alertname}}
告警状态:{{$v.status}}
开始时间:{{TimeFormat $v.startsAt "2006-01-02 15:04:05"}}
结束时间:{{TimeFormat $v.endsAt "2006-01-02 15:04:05"}} 
实例地址:{{$v.labels.instance}}
主机名称:{{$v.labels.hostname}}
**{{$v.annotations.description}}**
{{else}}
**[Prometheus 报警通知]({{$v.generatorURL}})**
告警名称:{{$v.labels.alertname}}
告警状态:{{$v.status}} > {{$v.labels.severity}}
开始时间:{{TimeFormat $v.startsAt "2006-01-02 15:04:05"}}
结束时间:{{TimeFormat $v.endsAt "2006-01-02 15:04:05"}} 
实例地址:{{$v.labels.instance}}
主机名称:{{$v.labels.hostname}}
**{{$v.annotations.description}}**
{{end}}
{{ end }}

效果图 报警通知 橙色 恢复通知

guvmao avatar Dec 10 '21 08:12 guvmao

飞书V2报警模板,结束将{{$v.status}}去,是因为飞书可以报警根据报警状态实现不同的标题颜色

//飞书相关的代码
	变种 颜色 字符串
	,如果 字符串。计数(文本,“已解决”)>  0  && 字符串。Count ( text , "firing" ) >  0 {
		 color  =  "orange" 
	} else  if  strings。计数(文本,“已解决”)>  0 {
		 color  =  “green” =  “红色” 
	}
{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
**[Prometheus 恢复通知]({{$v.generatorURL}})**
告警名称:{{$v.labels.alertname}}
告警状态:{{$v.status}}
开始时间:{{TimeFormat $v.startsAt "2006-01-02 15:04:05"}}
结束时间:{{TimeFormat $v.endsAt "2006-01-02 15:04:05"}} 
实例地址:{{$v.labels.instance}}
主机名称:{{$v.labels.hostname}}
**{{$v.annotations.description}}**
{{else}}
**[Prometheus 报警通知]({{$v.generatorURL}})**
告警名称:{{$v.labels.alertname}}
告警状态:{{$v.status}} > {{$v.labels.severity}}
开始时间:{{TimeFormat $v.startsAt "2006-01-02 15:04:05"}}
结束时间:{{TimeFormat $v.endsAt "2006-01-02 15:04:05"}} 
实例地址:{{$v.labels.instance}}
主机名称:{{$v.labels.hostname}}
**{{$v.annotations.description}}**
{{end}}
{{ end }}

有效果图吗

Audi-dask avatar Dec 11 '21 04:12 Audi-dask

这段飞书的配置段,写到哪儿?

hucongwei avatar Jan 10 '22 09:01 hucongwei

【钉钉模板】

{{ $var := .externalURL}}{{ $status := .status}}{{ range $k,$v:=.alerts }} {{if eq $status "resolved"}}
## [告警恢复-通知]({{$var}})
#### 监控指标: {{$v.labels.alertname}}
{{ if eq $v.labels.severity "warning" }}
#### 告警级别: **<font color="#E6A23C">{{$v.labels.severity}}</font>**
{{ else if eq $v.labels.severity "critical"  }}
#### 告警级别: **<font color="#F56C6C">{{$v.labels.severity}}</font>**
{{ end }}
#### 当前状态: **<font color="#67C23A" size=4>已恢复</font>**
#### 故障主机: {{$v.labels.instance}}
* ###### 告警阈值: {{$v.labels.threshold}}
* ###### 开始时间: {{GetCSTtime $v.startsAt}}
* ###### 恢复时间: {{GetCSTtime $v.endsAt}}

#### 告警恢复: <font color="#67C23A">已恢复,{{$v.annotations.description}}</font>
{{ else }}
## [监控告警-通知]({{$var}})
#### 监控指标: {{$v.labels.alertname}}
{{ if eq $v.labels.severity "warning" }}
#### 告警级别: **<font color="#E6A23C" size=4>{{$v.labels.severity}}</font>**
#### 当前状态: **<font color="#E6A23C">需要处理</font>**
{{ else if eq $v.labels.severity "critical"  }}
#### 告警级别: **<font color="#F56C6C" size=4>{{$v.labels.severity}}</font>**
#### 当前状态: **<font color="#F56C6C">需要处理</font>**
{{ end }}
#### 故障主机: {{$v.labels.instance}}
* ###### 告警阈值: {{$v.labels.threshold}}
* ###### 持续时间: {{$v.labels.for_time}}
* ###### 触发时间: {{GetCSTtime $v.startsAt}}
{{ if eq $v.labels.severity "warning" }}
#### 告警触发: <font color="#E6A23C">{{$v.annotations.description}}</font>
{{ else if eq $v.labels.severity "critical" }}
#### 告警触发: <font color="#F56C6C">{{$v.annotations.description}}</font>
{{ end }}
{{ end }}
{{ end }}

【样例】

image

dream-mo avatar Jan 27 '22 08:01 dream-mo

[prometheus自定义模版,支持恢复通知模版]

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
## [Prometheus恢复信息]({{$v.generatorURL}})
#### [{{$v.labels.alertname}}]({{$var}})
###### 告警级别:{{$v.labels.level}}
###### 开始时间:{{$v.startsAt}}
###### 结束时间:{{$v.endsAt}}
###### 故障主机IP:{{$v.labels.instance}}
##### {{$v.annotations.description}}
![Prometheus](https://raw.githubusercontent.com/feiyu563/PrometheusAlert/master/doc/alert-center.png)
{{else}}
## [Prometheus告警信息]({{$v.generatorURL}})
#### [{{$v.labels.alertname}}]({{$var}})
###### 告警级别:{{$v.labels.level}}
###### 开始时间:{{$v.startsAt}}
###### 结束时间:{{$v.endsAt}}
###### 故障主机IP:{{$v.labels.instance}}
##### {{$v.annotations.description}}
![Prometheus](https://raw.githubusercontent.com/feiyu563/PrometheusAlert/master/doc/alert-center.png)
{{end}}
{{ end }}

你好,这个是直接复制到template.tmpl模板中吗,但是我的告警还是原模板的,自定义的没有生效,config文件中需要修改什么吗

lss144 avatar Apr 21 '22 07:04 lss144

飞书告警模板

{{ range $k,$v:=.alerts }}{{ if eq $v.status "resolved" }}✅{{ $v.labels.alertname }}
告警级别:{{ $v.labels.severity }}
开始时间:{{ GetCSTtime $v.startsAt }} 
结束时间:{{ GetCSTtime $v.endsAt }}
故障主机IP:{{ $v.labels.instance }}
告警内容:
{{ $v.annotations.description }}{{ else }}{{ if eq $v.labels.severity "warning" }}🟡{{$v.labels.alertname}}
告警级别🟡:{{ $v.labels.severity }}
{{ else if eq $v.labels.severity "critical"  }}❌{{$v.labels.alertname}}
告警级别❌:{{ $v.labels.severity }}
{{ else if eq $v.labels.severity "emergency"  }}❌🔥🔥{{ $v.labels.alertname }}
告警级别❌🔥🔥:{{ $v.labels.severity }}
{{ end }}开始时间:{{ GetCSTtime $v.startsAt }} 
故障主机IP:{{ $v.labels.instance }}
告警内容:
{{ $v.annotations.summary }}
{{ $v.annotations.description }}{{ end }}{{ end }}

image

ifanheng avatar Apr 25 '22 11:04 ifanheng

用不了没图案

ubuntu821 avatar Apr 25 '22 12:04 ubuntu821

用不了没图案

模板除了会判断{{ if eq $v.status "resolved" }},还需继续判断这里:{{ if eq $v.labels.severity "warning" }}。 如果没有图案,可能是你的 severity标签 的值不一致。 比如,我的这里只有三个级别 {{ if eq $v.labels.severity "warning" }}

  • alert: "主机失联" expr: up == 0 for: 1m labels: severity: emergency annotations: summary: "{{ $labels.instance }} 失联" description: "超过5分钟没有响应!"

    labels: severity: emergency

    labels: severity: critical

    labels: severity: warning

ifanheng avatar Apr 26 '22 03:04 ifanheng

飞书

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{- if eq $v.status "firing"}}[{{$v.labels.alertname}}]({{$var}}) **😈{{$v.status}}**
{{- range $key,$value:=$v.annotations }}
{{if eq $key "summary" }} **☎SUMM: {{ $value}}**{{ end -}}
{{if eq $key "description" }} **✍DESC:** {{ $value}}{{ end -}}
{{if eq $key "message" }} **✉MSG:** {{ $value}}{{ end -}}
{{- end}}
 **⏱Start:** {{GetCSTtime $v.startsAt}}
*[view details]({{$v.generatorURL}})*
{{- range $key,$value:=$v.labels }}
> {{- $key}}:{{$value -}}
{{end}}
{{else}}[{{$v.labels.alertname}}]({{$var}}) **😎{{$v.status}}** 
{{- range $key,$value:=$v.annotations }}
{{if eq $key "summary" }} **☎SUMM:** {{ $value}}{{ end -}}
{{if eq $key "description" }} **✍DESC:** {{ $value}}{{ end -}}
{{if eq $key "message" }} **✉MSG:** {{ $value}}{{ end -}}
{{- end}}
 **⏱Start:** {{GetCSTtime $v.startsAt}}
 **⏲End:** {{GetCSTtime $v.endsAt}}
[view details]({{$v.generatorURL}})
{{- end }}{{end}}

Aaron-kk avatar May 05 '22 02:05 Aaron-kk

prometheus-fs

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
**[Prometheus恢复信息]({{$v.generatorURL}})**

【恢复名称】[{{$v.labels.alertname}}]({{$var}})✅{{if $v.labels.level}}
【恢复级别】{{if eq $v.labels.level "0"}}提示{{else if eq $v.labels.level "1"}}警告{{else if eq $v.labels.level "2"}}一般严重{{else if eq $v.labels.level "3"}}严重{{else if eq $v.labels.level "4"}}灾难{{else}}{{$v.labels.level}}{{end}}{{end}}
【开始时间】{{GetCSTtime $v.startsAt}}
【结束时间】{{GetCSTtime $v.endsAt}}
【恢复实例】{{$v.labels.instance}}

**{{$v.annotations.description}}**
{{else}}
**[Prometheus告警信息]({{$v.generatorURL}})**

【告警名称】[{{$v.labels.alertname}}]({{$var}})🔥{{if $v.labels.level}}
【告警级别】{{if eq $v.labels.level "0"}}提示{{else if eq $v.labels.level "1"}}警告🟡{{else if eq $v.labels.level "2"}}一般严重🔥{{else if eq $v.labels.level "3"}}严重🔥🔥{{else if eq $v.labels.level "4"}}灾难🔥🔥❌{{else}}{{$v.labels.level}}{{end}}{{end}}
【开始时间】{{GetCSTtime $v.startsAt}}
【告警实例】{{$v.labels.instance}}

**{{$v.annotations.description}}**
{{end}}
{{ end }}

image

prometheus-dd

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
## [Prometheus恢复信息]({{$v.generatorURL}})
--------------------------------------------------------
#### 【恢复名称】[{{$v.labels.alertname}}]({{$var}}) ✅{{if $v.labels.level}}
#### 【恢复级别】{{if eq $v.labels.level "0"}}提示{{else if eq $v.labels.level "1"}}警告{{else if eq $v.labels.level "2"}}一般严重{{else if eq $v.labels.level "3"}}严重{{else if eq $v.labels.level "4"}}灾难{{else}}{{$v.labels.level}}{{end}}{{end}}
#### 【当前状态】**<font color="#67C23A" size=4>已恢复</font>**
#### 【开始时间】{{GetCSTtime $v.startsAt}}
#### 【结束时间】{{GetCSTtime $v.endsAt}}
#### 【恢复实例】{{$v.labels.instance}}
--------------------------------------------------------
**{{$v.annotations.description}}**
{{else}}
## [Prometheus告警信息]({{$v.generatorURL}})
--------------------------------------------------------
#### 【告警名称】[{{$v.labels.alertname}}]({{$var}}) 🔥{{if $v.labels.level}}
#### 【告警级别】{{if eq $v.labels.level "0"}}提示{{else if eq $v.labels.level "1"}}警告🟡{{else if eq $v.labels.level "2"}}一般严重🔥{{else if eq $v.labels.level "3"}}严重🔥🔥{{else if eq $v.labels.level "4"}}灾难🔥🔥❌{{else}}{{$v.labels.level}}{{end}}{{end}}
#### 【当前状态】**<font color="#E6A23C">需要处理</font>**
#### 【开始时间】{{GetCSTtime $v.startsAt}}
#### 【告警实例】{{$v.labels.instance}}
--------------------------------------------------------
**{{$v.annotations.description}}**
{{end}}
{{ end }}

image

prometheus-wx

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
## [Prometheus恢复信息]({{$v.generatorURL}})

#### <font color="#02b340">【恢复名称】</font>[{{$v.labels.alertname}}]({{$var}}) ✅{{if $v.labels.level}}
#### <font color="#02b340">【恢复级别】</font>{{if eq $v.labels.level "0"}}提示{{else if eq $v.labels.level "1"}}警告{{else if eq $v.labels.level "2"}}一般严重{{else if eq $v.labels.level "3"}}严重{{else if eq $v.labels.level "4"}}灾难{{else}}{{$v.labels.level}}{{end}}{{end}}
#### <font color="#02b340">【当前状态】</font><font color="#67C23A">已恢复</font>
#### <font color="#02b340">【开始时间】</font>{{GetCSTtime $v.startsAt}}
#### <font color="#02b340">【结束时间】</font>{{GetCSTtime $v.endsAt}}
#### <font color="#02b340">【恢复实例】</font>{{$v.labels.instance}}

**{{$v.annotations.description}}**
{{else}}
## [Prometheus告警信息]({{$v.generatorURL}})

#### <font color="#FF0000">【告警名称】</font>[{{$v.labels.alertname}}]({{$var}}) 🔥{{if $v.labels.level}}
#### <font color="#FF0000">【告警级别】</font>{{if eq $v.labels.level "0"}}提示{{else if eq $v.labels.level "1"}}警告🟡{{else if eq $v.labels.level "2"}}一般严重🔥{{else if eq $v.labels.level "3"}}严重🔥🔥{{else if eq $v.labels.level "4"}}灾难🔥🔥❌{{else}}{{$v.labels.level}}{{end}}{{end}}
#### <font color="#FF0000">【当前状态】</font><font color="#E6A23C">需要处理</font>
#### <font color="#FF0000">【开始时间】</font>{{GetCSTtime $v.startsAt}}
#### <font color="#FF0000">【告警实例】</font>{{$v.labels.instance}}

**{{$v.annotations.description}}**
{{end}}
{{ end }}

image

michael-liumh avatar May 14 '22 13:05 michael-liumh

SUSE Rancher Webhook消息发送到飞书模版

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
**[Rancher容器云平台恢复告警信息]({{$v.labels.server_url}})**
*[{{$v.labels.alertname}}]({{$var}})*
告警级别:{{$v.labels.severity}}
开始时间:{{TimeFormat $v.startsAt "2006-01-02 15:04:05 UTC"}}
结束时间:{{TimeFormat $v.endsAt "2006-01-02 15:04:05 UTC"}}
集群ID: {{$v.labels.cluster_name}} 
故障主机IP: {{$v.labels.instance}}
PromQL: {{$v.alert.expression}}
触发告警持续时间: {{$v.labels.duration}}
当前值为:**{{$v.annotations.current_value}}**
{{else}}
**[Rancher容器云平台告警信息]({{$v.labels.server_url}})**
*[{{$v.labels.alertname}}]({{$var}})*
告警级别:{{$v.labels.severity}}
开始时间:{{TimeFormat $v.startsAt "2006-01-02 15:04:05 UTC"}}
{{if eq $v.endsAt "0001-01-01T00:00:00Z"}}
结束时间: {{ printf "告警当前仍然存在!"}}
{{else}}
结束时间: {{TimeFormat $v.endsAt "2006-01-02 15:04:05 UTC"}}
{{end}}
集群ID: {{$v.labels.cluster_name}}
故障主机IP: {{$v.labels.instance}}
PromQL: {{$v.labels.expression}}
触发告警持续时间: {{$v.labels.duration}}
当前值为:**{{$v.annotations.current_value}}**
{{end}}
{{ end }}

修改告警消息中的结束时间

  • 默认为0001-01-01 00:00:00
  • 修改后打印“告警当前仍然存在!”
  • 告警恢复通知打印正常恢复时间

截图

image

MrYuanZhen avatar May 19 '22 09:05 MrYuanZhen