Prometheus查询语法学习总结[类翻译:)]

ps: 该文章会持续更新,如有理解错误,有劳指正

I.表达式语言的数据类型

prometheus存储的是时间序列,包含了timestamp,metric name,label,value等。timestamp类似于主键,时间序列是按timestamp存储的。

标量(Scalar)

1. 概念

就是一个浮点数

字符串(String)

1. 概念

字符串

瞬时向量(instant vector)

1. 概念

在同一时刻的包含单个样本的一组时间序列。

2. selector使用

用metric name查询,返回数据库的当前时刻的所有包含这个metric name的时间序列。
例:http_requests_total
这个查询会返回http_requests_total{label1="xxx",label2="xxx"} value这种格式的数据库当前时刻的时间序列。这里的label是区分包含同样metric name序列的标识,可以理解为这个指标下时间序列的不同维度。
tip:这里有一个等价写法,用一个内部的label,叫"__name__"
例:{__name__="http_requests_total", label1=~"xxx"}

我们可以在这个语句的基础上使用一点过滤语法。
例:http_requests_total{label1="xxx"}
这个查询语句就会返回维度label1为xxx的序列。
tip:过滤语句经常会使用的操作符有:
1. =:精确匹配,等于
2. !=:精确匹配,不等于
3. =~:正则匹配,等于
4. !~:正则匹配,不等于
如:http_requests_total{label1=~"aaa|bbb", label2!="ccc"}

区间向量(instant vector)

1. 概念

一组时间序列,每个时间序列包含了一段时间内的样本数据。

2. selector使用

在metric name后加上一个时间范围,用[]包含。
例:http_requests_total{label1="xxx"}[5m]
代表的是数据库中有该metric name和label1为xxx的一组时间序列的最新5分钟的样本的值。
返回的数据样式是:
http_requests_total{label1="xxx"}[5m] value_1@timestamp_1
                    value_2@timestamp_2
                    ...
                    value_n@timestamp_n
tip:时间偏移查询
获取当前时间向前一段时间内的时间序列的值
例:http_requests_total{label1="xxx"} offset 5m
offset必须跟在selector后面,如:
sum(http_requests_total{label1="xxx"} offset 5m)

未完待续...

你可能感兴趣的:(Prometheus查询语法学习总结[类翻译:)])