Prometheus 教程

Prometheus 模板引用

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

数据结构

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

type sample struct {
        Labels map[string]string
        Value  float64
}

sample 的度量名称由 Labels 映射中一个特殊的 __name__ 标签编码。

[]sample 表示样本列表。

Go 中的 interface{} 类似于 C 语言中的 void 指针。

函数

除了 Go 模板提供的默认函数外,Prometheus 还提供了更易于在模板中处理查询结果的函数。

如果在管道中使用函数,管道值将作为最后一个参数传递。

查询

名称

参数

返回值

备注

query

query string

[]sample

查询数据库,不支持返回范围向量。

first

[]sample

sample

等于索引为0

label

label, sample

string

等同于索引 sample.Labels 标签

value

sample

float64

等同于 sample.Value

sortByLabel

label, []samples

[]sample

根据给定的标签对样本进行排序,稳定。

首先,标签和值的目的是使查询结果在管道中易于使用。

数字

名称

参数

返回值

备注

humanize

number or string

string

使用 metric 前缀将数字转换为更易读的格式。

humanize1024

number or string

string

与 humanize 类似,但使用 1024 作为基数,而不是 1000。

humanizeDuration

number or string

string

将以秒为单位的持续时间转换为更易读的格式。

humanizePercentage

number or string

string

将比率值转换为 100 的分数。

humanizeTimestamp

number or string

string

将以秒为单位的 Unix 时间戳转换为更易读的格式。

toTime

number or string

*time.Time

将Unix时间戳 (以秒为单位) 转换为time.Time。

人性化函数旨在产生供人类使用的合理输出,并不保证不同版本的 Prometheus 会返回相同的结果。

字符串

名称

参数

返回值

备注

title

string

string

strings.Title, 将每个单词的第一个字符大写。

toUpper

string

string

strings.ToUpper, 将所有字符转换为大写字母。

toLower

string

string

strings.ToLower, 将所有字符转换为小写。

stripPort

string

string

net.SplitHostPort, 将字符串拆分为主机和端口,然后只返回主机。

match

pattern, text

boolean

regexp.MatchString,测试非锚定 regexp 匹配。

reReplaceAll

pattern, replacement, text

string

Regexp.ReplaceAllString,Regexp 替换,未锚定。

graphLink

expr

string

返回表达式浏览器中图形视图的路径。

tableLink

expr

string

返回表达式浏览器中表格("Table")视图的路径。

parseDuration

string

float

将持续时间字符串(如 "1h")解析为所代表的秒数。

stripDomain

string

string

删除 FQDN 的域名部分,保留端口不变。

其他

名称

参数

返回值

备注

args

[]interface{}

map[string]interface{}

这将把对象列表转换为包含 arg0、arg1 等键的映射。这样做的目的是允许向模板传递多个参数。

tmpl

string, []interface{}

nothing

与内置模板类似,但允许使用非字母作为模板名称。请注意,结果被假定为安全的,不会自动转码。仅适用于控制台。

safeHtml

string

string

将字符串标记为无需自动换码的 HTML 字符串。

externalURL

none

string

可从外部访问 Prometheus 的外部 URL。

pathPrefix

none

string

控制台模板中使用的外部 URL 路径。

模板类型差异

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

警报字段模板

.Value、.Labels、.ExternalLabels 和 .ExternalURL 分别包含警报值、警报标签、全局配置的外部标签和外部 URL(使用 --web.external-url 配置)。为方便起见,它们也作为 $value、$labels、$externalLabels 和 $externalURL 变量公开。

控制台模板

控制台位于 /consoles/,来源于 -web.console.templates 标志指向的目录。

控制台模板使用 html/template 渲染,它提供了自动转码功能。要绕过自动转码功能,请使用 safe* 函数。

URL 参数可以 .Params 中的映射形式提供。要访问多个同名的 URL 参数,.RawParams 是每个参数的列表值映射。URL 路径在 .Path 中提供,不包括 /consoles/ 前缀。全局配置的外部标签以 .ExternalLabels 形式提供。这四个变量都有快捷变量:$rawParams、$params、$path 和 $externalLabels。

控制台还可以访问以 {{define "templateName"}}...{{end}} 定义的所有模板,这些模板位于 -web.console.libraries 标志指向的目录中的 *.lib 文件中。由于这是一个共享命名空间,请注意避免与其他用户发生冲突。以 prom、_prom 和 ___ 开头的模板名称以及上述函数均保留给 Prometheus 使用。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号