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 · 101 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

用不了没图案

@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

@anshili123
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

请问效果图中的 “告警测试” 这个标题是在哪里配置的,一直找不到

@klllmxx
Copy link

klllmxx commented Jul 2, 2024

优化了自带的模版 感觉更加符合生产需求

代码:
1719890391075

效果图:
c4289233c253bdb01e1f5455d2399848

@aptxhb
Copy link

aptxhb commented Jul 2, 2024 via email

@Zhouxiangqian-hub
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

我使用您的模版样例,发送钉钉通知后为什么变量显示不出来呢
image

@Zhouxiangqian-hub
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

我用您的模版为什么变量没有显示出来呢
image

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

效果图

请问您这个模板里面 “ 故障区域】{{$v.labels.number}} in {{$v.labels.channel}} ” 是如何定义的呢?

@Zhouxiangqian-hub
Copy link

Zhouxiangqian-hub commented Jul 15, 2024 via email

@dellnoantechnp
Copy link

有 telegram 的模板没???

@aptxhb
Copy link

aptxhb commented Aug 23, 2024 via email

@Zhouxiangqian-hub
Copy link

Zhouxiangqian-hub commented Aug 23, 2024 via email

@huangkang123
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

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

告警时间差了8小时,是什么问题呢

@aptxhb
Copy link

aptxhb commented Sep 6, 2024 via email

@Zhouxiangqian-hub
Copy link

Zhouxiangqian-hub commented Sep 6, 2024 via email

@iaiti
Copy link
Contributor

iaiti commented Sep 13, 2024

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

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

飞书没生效的同学,重新理解一下就通了。意思是飞书会自己处理状态显示标题颜色。所以配置的模版那里
告警状态:{{$v.status}}配置这个状态就可以被飞书解析了,没有显示的话是模版里缺少这一项了

@ygqygq2
Copy link

ygqygq2 commented Sep 25, 2024

{{ $externalURL := .externalURL -}}
{{ $alerts := .alerts -}}
{{ range $alert := $alerts -}}
{{ if eq $alert.status "resolved" -}}
💚 Prometheus 恢复通知
🌐【集群名称】{{ $alert.labels.cluster }}
🔵【告警名称】{{ $alert.labels.alertname }}
🔼【告警级别】{{ $alert.labels.severity }}
✅【告警状态】{{ $alert.status }}
🧭【开始时间】{{ GetCSTtime $alert.startsAt }}
🧭【结束时间】{{ GetCSTtime $alert.endsAt }}
🏷️【命名空间】{{ $alert.labels.namespace }}
📡【实例名称】{{ $alert.labels.host }}{{ $alert.labels.pod }}{{ $alert.labels.job }}{{ $alert.labels.deployment }}{{ $alert.labels.statefulset }}
📝【告警详情】{{ $alert.annotations.message }}{{ $alert.annotations.description }};{{ $alert.annotations.summary }}
{{ else -}}
💔 Prometheus 告警通知
🌐【集群名称】{{ $alert.labels.cluster }}
🔵【告警名称】{{ $alert.labels.alertname }}
🔼【告警级别】{{ $alert.labels.severity }}
🔥【告警状态】{{ $alert.status }}
🧭【开始时间】{{ GetCSTtime $alert.startsAt }}
🏷️【命名空间】{{ $alert.labels.namespace }}
📡【实例名称】{{ $alert.labels.host }}{{ $alert.labels.pod }}{{ $alert.labels.job }}{{ $alert.labels.deployment }}{{ $alert.labels.statefulset }}
📝【告警详情】{{ $alert.annotations.message }}{{ $alert.annotations.description }};{{ $alert.annotations.summary }}
{{ end -}}
{{ end -}}

@Zhang21
Copy link
Contributor

Zhang21 commented Sep 26, 2024

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

  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

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

告警时间差了8小时,是什么问题呢

UTC - CST,看文档,有转换时间的配置。

@hedaweiii
Copy link

只能做内容模板吗?飞书不是支持json,卡片的大小颜色都可以自定调节的,我找了半天没看到这东西放哪

@Zhouxiangqian-hub
Copy link

Zhouxiangqian-hub commented Oct 23, 2024 via email

@aptxhb
Copy link

aptxhb commented Oct 23, 2024 via email

@love6875520
Copy link

飞书的同一种告警是不支持合并吗?

@Zhouxiangqian-hub
Copy link

Zhouxiangqian-hub commented Nov 18, 2024 via email

@aptxhb
Copy link

aptxhb commented Nov 18, 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