PrometheusAlert
PrometheusAlert copied to clipboard
通用自定义模版专用:欢迎共享大家的自定义模版,方便其他人也可以直接使用
[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}}

{{else}}
## [Prometheus告警信息]({{$v.generatorURL}})
#### [{{$v.labels.alertname}}]({{$var}})
###### 告警级别:{{$v.labels.level}}
###### 开始时间:{{$v.startsAt}}
###### 结束时间:{{$v.endsAt}}
###### 故障主机IP:{{$v.labels.instance}}
##### {{$v.annotations.description}}

{{end}}
{{ end }}
[自定义模版中只取指定长度的告警消息写法]
{{ $v.annotations.description | printf "%.20s" }}
上面数字就表示需要取的文本长度,超出的会被截断
微信机器人自定义告警模板:
- 告警红色
- 恢复绿色
- 告警级别我用的
severity
,可以修改为level
。请自己定义labels - 使用
hostname
,请自己定义labels - 我将故障主机IP改为实例地址,因为有些探针运行在本地,但告警对象不是它,所以修改为实例地址
-
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 }}
效果图:
备注: 此模板稍微修改也可以适用于钉钉。
请问自定义的消息模板能否通过什么方式注入到服务中,想把自定义的模板加入到自动部署的流程中
这方面就需要自己实现接口了
---原始邮件--- 发件人: "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.
请问下,我在配置prometheus 邮件告警,使用自定义模板,是碰到这个错误,“2020/12/01 18:22:20.357 [E] [value.go:460] [1606818140356848598] 接口参数缺失!”,我在alertmanager配置的是“ - url: 'http://ip:port/prometheusalert' ”,是哪里配置不对导致参数缺失?我找不到原因所在。
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,你好;腾讯云的短信接口中需要输入多个参数,请问下在模板中需要怎么配置这些参数呢?
目前只支持一个模版参数,具体可以参考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.
{{ $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,比默认模板好看多了。默认模版告警恢复傻傻不分清楚
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}}
显示所有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}}

{{else}}
## [Prometheus告警信息]({{$v.generatorURL}})
#### [{{$v.labels.alertname}}]({{$var}})
{{ range $key,$value:=$v.labels }}
###### {{$key}}:{{$value}}
{{end}}
###### 开始时间:{{$v.startsAt}}
###### 结束时间:{{$v.endsAt}}
##### {{$v.annotations.description}}

{{end}}
{{ end }}
效果如下图:
钉钉告警模板
{{ $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原生参数支持.
效果图如下
好看
我用这个模板,钉钉告警,在有触发告警时,会携带历史的恢复告警信息,导致一条告警消息,其中三四条恢复内容,一条告警消息。请问各位大佬有发现这个问题嘛。
我用这个模板,钉钉告警,在有触发告警时,会携带历史的恢复告警信息,导致一条告警消息,其中三四条恢复内容,一条告警消息。请问各位大佬有发现这个问题嘛。
这是因为消息合并了
json里面字符串取部分拼接怎么做啊 数据:
'event': { 'id': '01FF4FDZJQJTG1JAN450JXF9BT', 'origin_context': 'urn:graylog:message:es:graylog_178:4ed1ca06-1120-11ec-8c7e-a2ca6eaea137', }
想拿出来 graylog_178 4ed1ca06-1120-11ec-8c7e-a2ca6eaea137
[自定义模版中只取指定长度的告警消息写法]
{{ $v.annotations.description | printf "%.20s" }}
上面数字就表示需要取的文本长度,超出的会被截断
[自定义模版中只取指定长度的告警消息写法]
{{ $v.annotations.description | printf "%.20s" }}
上面数字就表示需要取的文本长度,超出的会被截断
您好,请问,针对ip:port这种针对匹配到的符号:进行截取的话,应该怎样写
{{ 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 }}
飞书 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 }}
效果图
飞书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 }}
有效果图吗
这段飞书的配置段,写到哪儿?
【钉钉模板】
{{ $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 }}
【样例】
[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}}  {{else}} ## [Prometheus告警信息]({{$v.generatorURL}}) #### [{{$v.labels.alertname}}]({{$var}}) ###### 告警级别:{{$v.labels.level}} ###### 开始时间:{{$v.startsAt}} ###### 结束时间:{{$v.endsAt}} ###### 故障主机IP:{{$v.labels.instance}} ##### {{$v.annotations.description}}  {{end}} {{ end }}
你好,这个是直接复制到template.tmpl模板中吗,但是我的告警还是原模板的,自定义的没有生效,config文件中需要修改什么吗
飞书告警模板
{{ 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 }}
用不了没图案
用不了没图案
模板除了会判断{{ 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
飞书
{{ $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}}
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 }}
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 }}
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 }}
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
- 修改后打印“告警当前仍然存在!”
- 告警恢复通知打印正常恢复时间