Prometheus支持在警报的注释和标签以及服务的控制台页面中进行模板化。模板具有对本地数据库运行查询,迭代数据,使用条件,格式化数据等功能。Prometheus模板语言基于Go模板系统。

数据结构

时间序列主要处理的数据结构是样本,定义如下:

  1. type sample struct {
  2. Labels map[string]string
  3. Value float64
  4. }

样本的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,labelvalue旨在使查询结果易于在管道中使用。

Number

名字 参数 返回值 说明
humanize number string 将数字转换为更可读的格式。
humanize1024 number string 和humanize类似,但是用1024转化而不用1000。
humanizeDuration number string 将以秒为单位的持续时间转换为更可读的格式。
humanizePercentage number string 将比值转化为百分数。
humanizeTimestamp number string 将Unix时间戳(以秒为单位)转换为更可读的格式。
  1. 人性化的功能是为了输出合理的数值供人们去查看,并不能保证在不通版本的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.ReplaceAllStringRegexp替换,未编排。
graphLink expr string 返回表达式浏览器中该表达式的图形视图的路径。
tableLink expr string 返回表达式浏览器中该表达式的表格(table)视图的路径。

Others

名字 参数 返回值 说明
args []interface{} map[string]interface{} 这会将对象列表转换为具有键arg0,arg1等的映射。这旨在允许将多个参数传递给模板。
tmpl string, []interface{} nothing 与内置模板类似,但允许使用非文本作为模板名称。注意,结果被假定为安全的,不会自动转义。仅在控制台中可用。
safeHtml string string 将字符串标记为不需要自动转义的HTML。

模板类型的不同

每种类型的模板都提供了可用于参数化模板的不同信息,并且还有其他一些区别。

警报字段模板

  1. `.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使用,上面列出的功能也是如此。