Prometheus支持在警报的注释和标签以及服务的控制台页面中进行模板化。模板具有对本地数据库运行查询,迭代数据,使用条件,格式化数据等功能。Prometheus模板语言基于Go模板系统。
数据结构
时间序列主要处理的数据结构是样本,定义如下:
type sample struct {
Labels map[string]string
Value float64
}
样本的metric name被编码在name这个标签,name这个标签在Lables中是一个特殊的标签。[]sample
表示样本列表。interface{}
在go代码中类似于C中的void指针。
函数功能 Functions
除了Go模板提供的默认函数外,Prometheus还提供了一些函数,以便在模板中更轻松地处理查询结果。
如果在管道中使用函数,则管道值作为最后一个参数传递。
Queries
名字 | 参数 | 返回值 | 说明 |
---|---|---|---|
query | query string | []sample | 查询数据库,不支持返回范围向量 |
first | []sample | sample | 相当于索引 a[0] index a 0 |
lable | lable, sample | string | 相当于index sample.Lables lable |
value | sample | float64 | 相当于sample.Value |
sortByLable | lable, []samples | []sample | 按给定标签对样本排序 |
字符解释: lable : 标签 sample :样本 []sample :样本列表
first
,label
和value
旨在使查询结果易于在管道中使用。
Number
名字 | 参数 | 返回值 | 说明 |
---|---|---|---|
humanize | number | string | 将数字转换为更可读的格式。 |
humanize1024 | number | string | 和humanize类似,但是用1024转化而不用1000。 |
humanizeDuration | number | string | 将以秒为单位的持续时间转换为更可读的格式。 |
humanizePercentage | number | string | 将比值转化为百分数。 |
humanizeTimestamp | number | string | 将Unix时间戳(以秒为单位)转换为更可读的格式。 |
人性化的功能是为了输出合理的数值供人们去查看,并不能保证在不通版本的Prometheus之间返回的结果相同。
strings
名字 | 参数 | 返回值 | 说明 |
---|---|---|---|
title | string | string | strings.Title 将每个单词的第一个字符大写。 |
toUpeer | string | string | string.ToUpeer 将所有的字符转化为大写。 |
toLower | string | string | string.ToLower 将所有字符转化为小写。 |
match | pattern,text | boolean | regexp.Matching 测试未编排的regexp匹配。 |
reReplaceAll | pattern, replacement, text | string | Regexp.ReplaceAllString Regexp替换,未编排。 |
graphLink | expr | string | 返回表达式浏览器中该表达式的图形视图的路径。 |
tableLink | expr | string | 返回表达式浏览器中该表达式的表格(table )视图的路径。 |
Others
名字 | 参数 | 返回值 | 说明 |
---|---|---|---|
args | []interface{} | map[string]interface{} | 这会将对象列表转换为具有键arg0,arg1等的映射。这旨在允许将多个参数传递给模板。 |
tmpl | string, []interface{} | nothing | 与内置模板类似,但允许使用非文本作为模板名称。注意,结果被假定为安全的,不会自动转义。仅在控制台中可用。 |
safeHtml | string | string | 将字符串标记为不需要自动转义的HTML。 |
模板类型的不同
每种类型的模板都提供了可用于参数化模板的不同信息,并且还有其他一些区别。
警报字段模板
`.Value`, `.Lables`和`.ExternalLables`三种值分别为:警报值,警报标签和全局配置的外部标签。为了方便使用,他们也可以写为`$value`, `$lables`和 `$externalLables`。
控制台模板
新手建议使用grafana,这个Prometheus的控制台视图新手很不友好
控制台在上公开/consoles/,并从-web.console.templates标志所指向的目录中获取。
控制台模板使用html / template呈现,该模板提供了自动转义功能。要绕过自动转义,请使用safe功能。
URL参数可在中作为映射使用.Params。要访问具有相同名称的多个URL参数,.RawParams是每个参数的列表值的映射。URL路径可在中使用.Path,但/consoles/前缀除外。全局配置的外部标签为.ExternalLabels。还有所有四个惯用变量:$rawParams,$params,$path,和$externalLabels。
控制台还可以访问在该标志指向的目录{{define “templateName”}}…{{end}}中的.lib文件中找到的所有定义的模板-web.console.libraries。由于这是一个共享的名称空间,因此请注意避免与其他用户发生冲突。模板名称以prom,prom和开头,_保留给Prometheus使用,上面列出的功能也是如此。