模板参考
Prometheus 支持在告警的的注解和标签以及服务的控制台页面中进行模板化。模板有对本地数据库运行查询,遍历数据,使用条件语句,格式化数据等功能。Prometheus 模板语言基于Go模板系统。
数据结构
处理时间序列的的主要数据结构是 sample,定义如下:
type sample struct {
Labels map[string]string
Value float64
}样本的数据指标名称在Labels字典映射的特殊__name__标签中进行编码。
[]sample表示 sample 的列表
Go 里的interface{}类似于 C 语言中的方法指针
函数
除了 Go 模板提供的默认功能外,Prometheus 还提供简化模板中查询结果处理的功能。
如果在管道中使用函数,则管道值将作为最后一个参数传递。
查询相关
名称
参数
返回值
解析
query
query string
[]sample
查询数据库,不知道返回范围向量
first
[]sample
sample
相当于index a 0
label
label,sample
string
相当于index sample.Labels label
value
sample
float64
相当于sample.Value
sortByLabel
label,[]sample
[]sample
根据给出的 label(标签)对 samples(数据样本)列表进行排序。是稳定排序
first, label和value旨在使查询结果易于在管道中使用。
数字相关
名称
参数
返回值
解析
humanize1024
number
string
类似于humanize,但使用 1024 作为基准而不是 1000
humanizeDuration
number
string
将持续时间(以秒为单位)转换为更可读的格式
humanizePercentage
number
string
将比值转化为百分数
humanizeTimestamp
number
string
将 Unix 时间戳转化为易读的格式
Humanizing 相关函数旨在产生合理的输出以供人们使用,并且不能保证在不同 Prometheus 版本之间返回相同的结果。
字符相关
名称
参数
返回值
解析
其它
名称
参数
返回值
解析
args
[]interface{}
map[string]interface{}
这会将对象列表转换为具有键 arg0, arg1 等的映射。旨在允许将多个参数传递给模板。
tmpl
string, []interface{}
nothing
类似于内置的template函数,但允许使用非文字作为模板名称。注意,假定其结果是安全的,并且不会自动转义。仅在控制台中可用。
safeHtml
string
string
将字符串标记为 HTML,不需要自动转义
模版类型差异
每种类型的模板都提供了可用于参数化模板的不同信息,且有一些其它的区别。
告警字段模板
.Value, .Labels和.ExternalLabels分别包含告警值,告警标签和全局匹配的扩展标签。为了方便起见,他们也暴露为$value, $labels和$externalLabels变量。
控制台模板
控制台暴露在/consoles/上,并且模板文件来源于-web.console.templates参数指向的目录。
控制台模板使用 html/template 渲染,且提供了自动转义功能。要绕过自动转义,请使用safe*函数。
URL 参数可作为.Params中字典映射使用。要访问具有相同的名称的多个 URL 参数,.RawParams是每个参数的列表值的映射。URL 路径在.Path中可用,不包括/consoles/前缀。全局配置的外部扩展标签可作为.ExternalLabels使用。对于这四个变量,还有便捷变量:$rawParams,$params, $path和$externalLabels。
控制台还可以访问在-web.console.libraries参数指向的目录中的*.lib文件中找到的{{define"templateName"}}...{{end}}定义的所有模板。由于这是一个共享的空间,请注意避免与其他用户发生冲突。以prom,_prom和__开头的模板名称保留供 Prometheus 使用,上面列出的函数也是如此。
最后更新于