背景

之前用proms推送了邮件,钉钉,目前公司用飞书,所以也要推送到飞书机器人上。

使用第三方推送工具实现

这种方式免费版只能每天200次请求,

##  推送助手官网
https://push.spug.cc/

## 参考文档
https://blog.51cto.com/fighter/5656648


PrometheusAlert 实现

## 官网
https://feiyu563.github.io/

# Github
https://github.com/feiyu563/PrometheusAlert

飞书模板如下:

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }} {{if eq $v.status "resolved"}} **[Prometheus 恢复通知](http://10.10.10.120:9090)**
告警名称:{{$v.labels.alertname}}
告警状态:{{$v.status}}
开始时间:{{GetCSTtime $v.startsAt}}
结束时间:{{GetCSTtime $v.endsAt}} 
实例地址:{{$v.labels.instance}}
恢复实例:{{$v.labels.instance}}
描述: **{{$v.annotations.description}}**
{{else}} **[Prometheus 报警通知](http://10.10.10.120:9090)**
告警名称:{{$v.labels.alertname}}
告警状态:{{$v.status}}
开始时间:{{GetCSTtime $v.startsAt}}
实例地址:{{$v.labels.instance}}
告警实例:{{$v.labels.instance}}
描述:  **{{$v.annotations.description}}**
{{end}} {{ end }}

上面的告警模板会根据告警和恢复信息,修改主题的颜色:

### 参考官网
https://github.com/feiyu563/PrometheusAlert/issues/30

格式再优化:

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }} {{if eq $v.status "resolved"}} **[Prometheus 恢复通知](http://10.10.10.120:9090)**
【告警名称】{{$v.labels.alertname}}
【告警状态】{{$v.status}}
【开始时间】{{GetCSTtime $v.startsAt}}
【结束时间】{{GetCSTtime $v.endsAt}} 
【恢复实例】{{$v.labels.instance}}
【描述】**{{$v.annotations.description}}**
{{else}} **[Prometheus 报警通知](http://10.10.10.120:9090)**
【告警名称】{{$v.labels.alertname}}
【告警状态】{{$v.status}}
【开始时间】{{GetCSTtime $v.startsAt}}
【恢复实例】{{$v.labels.instance}}
【描述】  **{{$v.annotations.description}}**
{{end}} {{ end }}

有符号的模板示例,但是标题不会改变。

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

生产模板推荐

目前自己使用的模板,仿zabbix的模板

{{ $var := .externalURL}}{{ range $k,$v:=.alerts }} {{if eq $v.status "resolved"}} **[Prometheus 恢复通知](http://10.10.10.120:9090)**
【恢复名称】{{$v.labels.alertname}}
【当前状态】{{$v.status}} ✅
【触发时间】{{GetCSTtime $v.startsAt}}
【恢复时间】{{GetCSTtime $v.endsAt}} 
【恢复实例】{{$v.labels.instance}}
【恢复描述】{{$v.annotations.description}}
{{else}} **[Prometheus 告警通知](http://10.10.10.120:9090)**
【告警名称】{{$v.labels.alertname}}
【当前状态】{{$v.status}} 🔥
【触发时间】{{GetCSTtime $v.startsAt}}
【告警实例】{{$v.labels.instance}}
【告警描述】  {{$v.annotations.description}}
{{end}} {{ end }}

如果想要增加 监控取值字段,可尝试:

##
监控取值: {{$v.annotations.value}}

##
告警阈值: {{$v.labels.threshold}}

## 
当前值为:{{$v.annotations.current_value}}

PrometheusAlert 常见配置

(1)打开历史记录开关:

# 历史记录保存,推荐开启
BARK_ARCHIVE=1


Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐