Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
feiyu563 opened this issue Jun 16, 2020 · 79 comments

Comments

@feiyu563
Copy link
Owner

No description provided.

@feiyu563
Copy link
Owner Author

feiyu563 commented Jun 16, 2020

[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
Copy link
Owner Author

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

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

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

@Zhang21
Copy link
Contributor

Zhang21 commented Jul 7, 2020

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

  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



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

@HuangDi1234
Copy link

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

@feiyu563
Copy link
Owner Author

feiyu563 commented Jul 27, 2020 via email

@xujia3111
Copy link

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

@feiyu563
Copy link
Owner Author

feiyu563 commented Dec 1, 2020 via email

@xujia3111
Copy link

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

@feiyu563
Copy link
Owner Author

feiyu563 commented Dec 7, 2020 via email

@Audi-dask
Copy link

{{ $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,比默认模板好看多了。默认模版告警恢复傻傻不分清楚

@feiyu563 feiyu563 pinned this issue Feb 3, 2021
@loveyang2012
Copy link

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}}

@feiyu563
Copy link
Owner Author

feiyu563 commented Apr 19, 2021

显示所有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

@Jonnyan404
Copy link

钉钉告警模板

{{ $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

@liweilijie
Copy link

好看

@Gerrylinux
Copy link

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

@j0ck1e
Copy link

j0ck1e commented Sep 7, 2021

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

这是因为消息合并了

@pycgo
Copy link

pycgo commented Sep 9, 2021

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

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

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

@bestmem
Copy link

bestmem commented Sep 26, 2021

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

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

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

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

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

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

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

@freedomcatjin
Copy link

{{ 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 }}

@guvmao
Copy link
Contributor

guvmao commented Dec 10, 2021

飞书 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 }}

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

@Audi-dask
Copy link

飞书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 }}

有效果图吗

@hucongwei
Copy link

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

@dream-mo
Copy link

【钉钉模板】

{{ $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

@lss144
Copy link

lss144 commented Apr 21, 2022

[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文件中需要修改什么吗

@ifanheng
Copy link

飞书告警模板

{{ 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

@ubuntu821
Copy link

用不了没图案

@aptxhb
Copy link

aptxhb commented May 29, 2023 via email

@wuyanfeiwork
Copy link

wuyanfeiwork commented Jul 7, 2023

企微告警模板:

{{ range $k,$v:=.alerts }}{{if eq $v.status "resolved"}} ## Prometheus-恢复消息
> 事件: **{{$v.labels.alertname}}**
> 告警级别: {{$v.labels.level}}
> 开始时间: {{GetCSTtime $v.startsAt}}
> 结束时间: {{GetCSTtime $v.endsAt}}
> 主机: {{$v.labels.instance}}
> <font color="info">**事件详情: {{$v.annotations.description}}**</font>
{{else}} ## Prometheus-告警消息
> 事件: **{{$v.labels.alertname}}**
> 告警级别: {{$v.labels.level}}
> 开始时间: {{GetCSTtime $v.startsAt}}
> 主机: {{$v.labels.instance}}
> <font color="warning">**事件详情: {{$v.annotations.description}}**</font>
{{end}}{{end}}

效果:

image

@aptxhb
Copy link

aptxhb commented Jul 7, 2023 via email

@ZhangAHe
Copy link

[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 }}

Alerting - Contact points 的Optional WeCom settings 需要怎么引用填写呢

@luyebb
Copy link

luyebb commented Aug 17, 2023

graylog 的模板大家有用到吗,怎么写if else

@aptxhb
Copy link

aptxhb commented Aug 17, 2023 via email

@luyebb
Copy link

luyebb commented Aug 17, 2023

[杭州测试环境日志告警]

{{.event_definition_description}}

{{if {{.event_definition_title}} eq "杭州公测环境fatal日志告警"}}
{{ range $k,$v:=.backlog }}

告警索引:{{$v.index}}
开始时间:{{GetCSTtime $v.timestamp}}
告警主机ip:{{$v.fields.gl2_remote_ip}}
查看链接: [点击链接](http://1.1.1..1/ui/?dump={{$data := $v.message | fromJson}}{{if $data.params.filename}}{{$data.params.filename}}{{end}})
{{$v.message}}

{{end}}
{{else}}
{{ range $k,$v:=.backlog }}

告警索引:{{$v.index}}
开始时间:{{GetCSTtime $v.timestamp}}
告警主机ip:{{$v.fields.gl2_remote_ip}}
{{$v.message}}

{{end}}
{{ end }}

@wuyanfeiwork
Copy link

飞书告警模板:

{{ range $k,$v:=.alerts }}{{if eq $v.status "resolved"}}<font color="green">**告警恢复信息**</font>
事件: **{{$v.labels.alertname}}**
告警类型:{{$v.status}}
告警级别: {{$v.labels.level}}
开始时间: {{GetCSTtime $v.startsAt}}
结束时间: {{GetCSTtime $v.endsAt}}
主机: {{$v.labels.instance}}
<font color="green">**事件详情: {{$v.annotations.description}}**</font>
{{else}}**告警信息**
事件: **{{$v.labels.alertname}}**
告警类型:{{$v.status}}
告警级别: {{$v.labels.level}}
开始时间: {{GetCSTtime $v.startsAt}}
主机: {{$v.labels.instance}}
<font color="red">**事件详情: {{$v.annotations.description}}**</font>
{{end}}
{{ end }}

效果图:

image image

@wilsontly
Copy link

{{ $urimsg:=""}}{{ range $key,$value:=.commonLabels }}{{$urimsg =  print $urimsg $key "%3D%22" $value "%22%2C" }}{{end}}[*** 点我屏蔽该告警]({{$var}}/#/silences/new?filter=%7B{{SplitString $urimsg 0 -3}}%7D)

在飞书借鉴了你的屏蔽告警模板,但是提示function "SplitString" not defined 我尝试定义函数但仍然认不到

t.Funcs(template.FuncMap{"SplitString": func(s string, i, j int) string {return s[i:j]}})

已解决,直接升级版本就支持了。

请问怎么只在告警里面有这个点我屏蔽告警按钮,恢复通知里面就不要带上

@aptxhb
Copy link

aptxhb commented Sep 6, 2023 via email

@yangvipguang
Copy link

yangvipguang commented Sep 21, 2023

`{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
✅✅告警恢复
Prometheus

🚀🚀告警名称:{{$v.labels.alertname}}

🏷️🏷️告警级别: {{$v.labels.severity}}

🙋‍♂️🙋‍♂️告警团队:{{$v.labels.Team}}

🎢🎢告警集群:{{$v.labels.Cluster}}

♨️♨️告警租户:{{$v.annotations.Tanent}}

♨️♨️告警实例:{{$v.labels.instance}}

🙋‍♂️🙋‍♂️告警维护:{{$v.labels.maintainer}}

🕓🕓开始时间:{{GetCSTtime $v.startsAt}}

🕓🕓结束时间:{{GetCSTtime $v.endsAt}}

📝📝{{$v.annotations.Description}}

{{else}}
🔥🔥告警通知
Prometheus

🚀🚀告警名称:{{$v.labels.alertname}}

🏷️🏷️告警级别: {{$v.labels.severity}}

🙋‍♂️🙋‍♂️告警团队:{{$v.labels.Team}}

🎢🎢告警集群:{{$v.labels.Cluster}}

♨️♨️告警租户:{{$v.annotations.Tanent}}

♨️♨️告警实例:{{$v.labels.instance}}

🙋‍♂️🙋‍♂️告警维护:{{$v.labels.maintainer}}

🕓🕓开始时间:{{GetCSTtime $v.startsAt}}

📝📝告警内容:{{$v.annotations.Description}}

{{end}}
{{ end }}`

image

@aptxhb
Copy link

aptxhb commented Sep 21, 2023 via email

@lipaysamart
Copy link

企微告警模板:

{{ $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.severity }}
##### 🌟<font color="#02b340">【恢复级别】</font>
{{- if eq $v.labels.severity "info" }}info 
{{- else if eq $v.labels.severity "warning" }}warning
{{- else if eq $v.labels.severity "critical" }}critical
{{- else if eq $v.labels.severity "error" }}error 
{{ else }}{{ $v.labels.severity }}
{{ 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.number}} in {{$v.labels.channel}}

**<font color="#02b340">{{$v.annotations.description}}</font>**
{{ else -}}
## [Prometheus告警信息]($v.generatorURL)💨

##### 🌟<font color="#FF0000">【告警名称】🔔</font>[{{$v.labels.alertname}}]({{$var}})🔔{{ if $v.labels.severity }}
##### 🌟<font color="#FF0000">【告警级别】</font>
{{- if eq $v.labels.severity "info"}}info
{{- else if eq $v.labels.severity "warning"}}warning 🔥
{{- else if eq $v.labels.severity "critical"}}critical 💔💔
{{- else if eq $v.labels.severity "error"}}error 🔥🔥❌
{{ else }}{{ $v.labels.severity }}
{{ end -}}
{{ end }}
##### 🌟<font color="#FF0000">【当前状态】</font><font color="#E6A23C">需要处理</font>
##### 🌟<font color="#FF0000">【开始时间】</font>{{GetCSTtime $v.startsAt}}
##### 🌟<font color="#FF0000">【故障区域】</font>{{$v.labels.number}} in {{$v.labels.channel}}

**<font color="#E6A23C">{{$v.annotations.description}}</font>**💨💨

## ✨[点我去屏蔽告警]({{$var}})✨
{{ end -}}
{{ end }}

效果图

@chinaboy007
Copy link

看了那么多人的模板,都没有把K8S的告警当回事,重要的namesapce,pod这些都不告警出来,真是无语;
俺也分享一下俺的飞书告警模板吧

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
测试环境Prometheus 恢复通知
🟡【告警名称】{{$v.labels.alertname}}
🚨【告警级别】{{ $v.labels.severity}}
✅【告警状态】{{$v.status}}
🧭【开始时间】{{GetCSTtime $v.startsAt}}
🧭【结束时间】{{GetCSTtime $v.endsAt}}
🏷️【命名空间】 {{$v.labels.namespace}}
📡 【实例名称】 {{$v.labels.host}}{{$v.labels.pod}}{{$v.labels.job}}{{$v.labels.deployment}}{{$v.labels.statefulset}}
📝【告警详情】 {{ $v.annotations.message }}{{ $v.annotations.description}};{{$v.annotations.summary}}
{{else}}
测试环境Prometheus 告警通知
🟡【告警名称】{{$v.labels.alertname}}
🚨【告警级别】{{ $v.labels.severity}}
🔥【告警状态】{{$v.status}}
🧭【开始时间】{{GetCSTtime $v.startsAt}}
🏷️【命名空间】 {{$v.labels.namespace}}
📡 【实例名称】 {{$v.labels.host}}{{$v.labels.pod}}{{$v.labels.job}}{{$v.labels.deployment}}{{$v.labels.statefulset}}
📝【告警详情】 {{ $v.annotations.message }}{{ $v.annotations.description}};{{$v.annotations.summary}}
{{end}}
{{ end }}

效果如下:
image

@aptxhb
Copy link

aptxhb commented Oct 11, 2023 via email

@chinaboy007
Copy link

这是来自QQ邮箱的假期自动回复邮件。   您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。

一个大嘴巴子

@Black-ants
Copy link

How to write a template for Microsoft Teams?

@aptxhb
Copy link

aptxhb commented Oct 30, 2023 via email

@cliffname
Copy link

cliffname commented Nov 29, 2023

显示所有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

我引用该模板,一直循环报警如下图片内容,不知道哪一个环境有问题?奇怪
image

@aptxhb
Copy link

aptxhb commented Nov 29, 2023 via email

@haiya512
Copy link

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

  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

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

为什么我的模板总是无法获取到 {{ $v.labels.severity}} 告警级别这个值

@aptxhb
Copy link

aptxhb commented Feb 20, 2024 via email

@wuyanfeiwork
Copy link

钉钉告警模板:

{{ range $k,$v:=.alerts }}{{if eq $v.status "resolved"}} 
#### Prometheus-恢复消息
- 事件: **{{$v.labels.alertname}}**
- 告警级别: {{$v.labels.level}}
- 开始时间: {{GetCSTtime $v.startsAt}}
- 结束时间: {{GetCSTtime $v.endsAt}}
- 主机: {{$v.labels.instance}}
- <font color="info">**事件详情**: {{$v.annotations.description}}</font>
{{else}} 
#### Prometheus-告警消息
- 事件: **{{$v.labels.alertname}}**
- 告警级别: {{$v.labels.level}}
- 开始时间: {{GetCSTtime $v.startsAt}}
- 主机: {{$v.labels.instance}}
- <font color="warning">**事件详情: {{$v.annotations.description}}**</font>
{{end}}{{end}}

效果示例:

image

@AEGEGE
Copy link

AEGEGE commented Mar 1, 2024

有没有办法计算持续时间?

1 similar comment
@ilanni2460
Copy link

有没有办法计算持续时间?

@aptxhb
Copy link

aptxhb commented Apr 13, 2024 via email

@jicki
Copy link
Collaborator

jicki commented Apr 15, 2024

这是来自QQ邮箱的假期自动回复邮件。   您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。

麻烦把你这个自动回复去掉一下

@chatyeei
Copy link

有没有详细配置教程啊

@yy426
Copy link

yy426 commented May 6, 2024

看了那么多人的模板,都没有把K8S的告警当回事,重要的namesapce,pod这些都不告警出来,真是无语; 俺也分享一下俺的飞书告警模板吧

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }} {{if eq $v.status "resolved"}} 测试环境Prometheus 恢复通知 🟡【告警名称】{{$v.labels.alertname}} 🚨【告警级别】{{ $v.labels.severity}} ✅【告警状态】{{$v.status}} 🧭【开始时间】{{GetCSTtime $v.startsAt}} 🧭【结束时间】{{GetCSTtime $v.endsAt}} 🏷️【命名空间】 {{$v.labels.namespace}} 📡 【实例名称】 {{$v.labels.host}}{{$v.labels.pod}}{{$v.labels.job}}{{$v.labels.deployment}}{{$v.labels.statefulset}} 📝【告警详情】 {{ $v.annotations.message }}{{ $v.annotations.description}};{{$v.annotations.summary}} {{else}} 测试环境Prometheus 告警通知 🟡【告警名称】{{$v.labels.alertname}} 🚨【告警级别】{{ $v.labels.severity}} 🔥【告警状态】{{$v.status}} 🧭【开始时间】{{GetCSTtime $v.startsAt}} 🏷️【命名空间】 {{$v.labels.namespace}} 📡 【实例名称】 {{$v.labels.host}}{{$v.labels.pod}}{{$v.labels.job}}{{$v.labels.deployment}}{{$v.labels.statefulset}} 📝【告警详情】 {{ $v.annotations.message }}{{ $v.annotations.description}};{{$v.annotations.summary}} {{end}} {{ end }}

效果如下: image

接口参数异常

@aptxhb
Copy link

aptxhb commented May 6, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests