★ 进阶用法--自定义模版函数(时区转换、文本操作等)
自定义模版函数和使用(兼容alertmanager模板函数toUpper、toLower、title、join、match、safeHtml、reReplaceAll、stringSlice)
toUpper、toLower、title、join、match、safeHtml、reReplaceAll、stringSlice)1 GetCSTtime 函数仅支持在PrometheusAlert的自定义模版中使用,该函数主要用于强制将时间字段时区从UTC转换到CST
GetCSTtime 函数仅支持在PrometheusAlert的自定义模版中使用,该函数主要用于强制将时间字段时区从UTC转换到CST目前支持两种使用方式:
取的当前时间
{{GetCSTtime ""}},如:
{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
## [Prometheus恢复信息]({{$v.generatorURL}})
#### [{{$v.labels.alertname}}]({{$var}})
###### 告警级别:{{$v.labels.level}}
###### 开始时间:{{GetCSTtime $v.startsAt}}
###### 结束时间:{{GetCSTtime $v.endsAt}}
###### 故障主机IP:{{$v.labels.instance}}
##### 当前时间 {{GetCSTtime ""}} {{$v.annotations.description}} #{{GetCSTtime ""}} 即会自动获取当前的时间嵌入到消息中

{{else}}
## [Prometheus告警信息]({{$v.generatorURL}})
#### [{{$v.labels.alertname}}]({{$var}})
###### 告警级别:{{$v.labels.level}}
###### 开始时间:{{GetCSTtime $v.startsAt}}
###### 结束时间:{{GetCSTtime $v.endsAt}}
###### 故障主机IP:{{$v.labels.instance}}
##### {{$v.annotations.description}}

{{end}}
{{ end }}转换UTC时间到CST时间
{{GetCSTtime $v.startsAt}},如
2 TimeFormat 函数仅支持在PrometheusAlert的自定义模版中使用,该函数主要用于格式化时间显示
TimeFormat 函数仅支持在PrometheusAlert的自定义模版中使用,该函数主要用于格式化时间显示如下示例将prmetheus的告警时间格式改为:2006-01-02T15:04:05
3 GetTime 函数仅支持在PrometheusAlert的自定义模版中使用,该函数主要用于将毫秒或秒级时间戳转换为时间字符
GetTime 函数仅支持在PrometheusAlert的自定义模版中使用,该函数主要用于将毫秒或秒级时间戳转换为时间字符特别说明:GetTime函数支持字符和数值类型参数,字符型支持秒级和毫秒级时间戳的处理,数值类型暂时只支持秒级时间戳处理。
目前支持两种使用方式:
使用默认时间字符串格式输出
{{GetTime .Timestamp}},如:
指定输出时间格式输出
{{GetTime .Timestamp "2006/01/02 15:04:05"}},如
4 SplitString 函数仅支持在PrometheusAlert的自定义模版中使用,该函数主要用于截取字符串
SplitString 函数仅支持在PrometheusAlert的自定义模版中使用,该函数主要用于截取字符串用法示例:
原始json为:{"Instance": "192.168.1.110:9100"}
需求:需要截取IP值 192.168.1.110
示例:{{SplitString .Instance 0 -5}} 或 {{SplitString .Instance 0 13}}
参数解释:SplitString需要三个参数,原始字符串、截取开始位置、截取结束位置;截取结束位置如果为负数,则相当于取字符串总长度+负数得出的位置。
特别说明:SplitString函数
目前支持两种使用方式:
使用默认时间字符串格式输出
{{GetTime .Timestamp}},如:
最后更新于
这有帮助吗?