📋
PrometheusAlert
  • README
  • 【PrometheusAlert入门】
    • 安装部署PrometheusAlert
    • 接口说明
    • Metrics指标
    • 其他配置
  • 【 app.conf 默认参数配置】
    • 钉钉告警配置
    • 飞书告警配置
    • 企业微信告警配置
    • 企业微信应用告警配置
    • 阿里云短信和电话告警配置
    • 腾讯云短信和电话告警配置
    • 容联云电话告警配置
    • 华为云短信配置
    • 百度云短信配置
    • Email配置
    • 七陌短信和电话告警配置
    • TeleGram告警配置
    • Bark告警配置
    • 百度Hi(如流)告警配置
    • 告警记录-ES接入配置
    • 语音播报
    • 飞书机器人应用
  • 【告警系统接入PrometheusAlert配置】
    • Prometheus 接入配置
    • graylog接入配置
    • grafana接入配置
    • zabbix(内置固定消息模版)接入配置
    • sonarqube接入配置
    • jenkins接入配置
    • 阿里云-云监控(自定义消息模版)接入配置
    • Gitlab webhook接入配置
    • 【WebHook】
    • ★ 进阶用法--自定义模版
    • ★ 进阶用法--自定义模版函数(时区转换、文本操作等)
    • ★ 进阶用法--自定义模版参数说明
    • ★ 进阶用法--go模版语法
  • 【Dashboard页面功能使用】
    • 【告警路由功能】
  • 【版本更新说明】
  • 【如何对PrometheusAlert进行二次开发】
  • 通用自定义模板共享链接
  • Prometheus rules共享链接
  • 【如何捐赠】
由 GitBook 提供支持
在本页

这有帮助吗?

  1. 【告警系统接入PrometheusAlert配置】

★ 进阶用法--go模版语法


PrometheusAlert的自定义模板基于go template而来,go template主要将json数据渲染成用户需要的文本

比如下面例子:

{
  "name": "张三",
  "age": 18,
  "teacher": ["TC1","TC2","TC3"],
  "like": {
    "balls": "football",
    "other": ["swim","climb"]
  }
}

比如我们现在需要在输出的文本(或者发送的消息文本)中要获取到json消息内的name、age、teacher,那么我们可以在模版内通过

用户名:{{.name}}
年龄:{{.age}}
老师:{{.teacher}}

模版中{{}}是模版取值的固定标记,.表示当前变量,渲染后输出的文本效果:

用户名:张三 年龄:18 老师:[TC1 TC2 TC3]

输出的结果似乎并不太美观,我们试着增加下换行,以及把各个老师的名字单独输出:

用户名:{{.name}}

年龄:{{.age}}

{{ range $k,$v:=.teacher }}
老师_{{$k}}:{{$v}}
{{end}}

渲染后的效果:

用户名:张三

年龄:18

老师_0:TC1

老师_1:TC2

老师_2:TC3

这里我们用到了比较简单的循环{{range}}(range可以遍历map{}、slice[])

继续我们在试试只输出一位老师,比如仅输出TC2:

用户名:{{.name}}

年龄:{{.age}}

{{ range $k,$v:=.teacher }}
{{if eq $v "TC2"}}
老师_{{$k}}:{{$v}}
{{end}}
{{end}}

渲染后的效果:

用户名:张三

年龄:18

老师_1:TC2

这里我们使用了简单的判断,判断老师的名字是否是TC2,只有TC2的情况下,才会输出(一般可用于判断告警的状态)。

接着我们尝试把like做下处理:

用户名:{{.name}}

年龄:{{.age}}

{{ range $k,$v:=.teacher }}
{{if eq $v "TC2"}}
老师_{{$k}}:{{$v}}
{{end}}{{end}}
爱好:{{.like.balls}}

输出结果:

用户名:张三

年龄:18

老师_1:TC2

爱好:football

{{.like.balls}}这样的用法是取like下面的balls的值

如果要取other里面的swim,我们可以使用{{index}}函数,比如:

用户名:{{.name}}

年龄:{{.age}}

{{ range $k,$v:=.teacher }}
{{if eq $v "TC2"}}
老师_{{$k}}:{{$v}}
{{end}}{{end}}
爱好:{{index .like.other 0}}

输出结果:

用户名:张三

年龄:18

老师_1:TC2

爱好:swim

备注:原始的json通常都是各种告警系统或者WebHook系统主动发送给PrometheusAlert自定义模板接口,提取json可以去PrometheusAlert的日志中查看

上一页★ 进阶用法--自定义模版参数说明下一页【Dashboard页面功能使用】

最后更新于2年前

这有帮助吗?