• Promes 基于飞书的机器人告警推送


    背景

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

    使用第三方推送工具实现

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

    1. ## 推送助手官网
    2. https://push.spug.cc/
    3. ## 参考文档
    4. https://blog.51cto.com/fighter/5656648


    PrometheusAlert 实现

    1. ## 官网
    2. https://feiyu563.github.io/
    3. # Github
    4. https://github.com/feiyu563/PrometheusAlert

    飞书模板如下:

    1. {{ $var := .externalURL}}{{ range $k,$v:=.alerts }} {{if eq $v.status "resolved"}} **[Prometheus 恢复通知](http://10.10.10.120:9090)**
    2. 告警名称:{{$v.labels.alertname}}
    3. 告警状态:{{$v.status}}
    4. 开始时间:{{GetCSTtime $v.startsAt}}
    5. 结束时间:{{GetCSTtime $v.endsAt}}
    6. 实例地址:{{$v.labels.instance}}
    7. 恢复实例:{{$v.labels.instance}}
    8. 描述: **{{$v.annotations.description}}**
    9. {{else}} **[Prometheus 报警通知](http://10.10.10.120:9090)**
    10. 告警名称:{{$v.labels.alertname}}
    11. 告警状态:{{$v.status}}
    12. 开始时间:{{GetCSTtime $v.startsAt}}
    13. 实例地址:{{$v.labels.instance}}
    14. 告警实例:{{$v.labels.instance}}
    15. 描述: **{{$v.annotations.description}}**
    16. {{end}} {{ end }}

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

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

    格式再优化:

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

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

    1. {{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
    2. {{if eq $v.status "resolved"}}
    3. **[Prometheus恢复信息]({{$v.generatorURL}})**
    4. 【恢复名称】[{{$v.labels.alertname}}]({{$var}})✅{{if $v.labels.level}}
    5. 【恢复级别】{{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}}
    6. 【开始时间】{{GetCSTtime $v.startsAt}}
    7. 【结束时间】{{GetCSTtime $v.endsAt}}
    8. 【恢复实例】{{$v.labels.instance}}
    9. **{{$v.annotations.description}}**
    10. {{else}}
    11. **[Prometheus告警信息]({{$v.generatorURL}})**
    12. 【告警名称】[{{$v.labels.alertname}}]({{$var}})🔥{{if $v.labels.level}}
    13. 【告警级别】{{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}}
    14. 【开始时间】{{GetCSTtime $v.startsAt}}
    15. 【告警实例】{{$v.labels.instance}}
    16. **{{$v.annotations.description}}**
    17. {{end}}
    18. {{ end }}

    生产模板推荐

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

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

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

    1. ##
    2. 监控取值: {{$v.annotations.value}}
    3. ##
    4. 告警阈值: {{$v.labels.threshold}}
    5. ##
    6. 当前值为:{{$v.annotations.current_value}}

    PrometheusAlert 常见配置

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

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

  • 相关阅读:
    12 款小众宝藏AI工具,90% 的开发者不了解
    Kamiya丨Kamiya艾美捷大鼠微量白蛋白酶联免疫吸附试验说明书
    Redis为什么这么快?
    rabbitmq发送json格式 utf8编码数据
    PADS(二)更多使用和实战总结
    场景应用:id全局唯一且自增,如何实现?
    Rocketmq讲解以及使用Spring Cloud Stream操作
    【深入理解计算机系统CSAPP】第六章 存储器层次结构
    测试行业3年经验,从大厂裸辞后,面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生
    typeScript--[es6class类实现继承]
  • 原文地址:https://blog.csdn.net/knight_zhou/article/details/128117762