Prometheus 基本查询时序数据的瞬时向量
瞬时向量
瞬时向量允许在给定的时间戳中选择一组时间序列和每个时间序列的单个数值:在最简单的形式中,只指定一个指标名称。这将得到一个包含所有时间序列元素的瞬时向量,这些元素具有这个指标名称。
比如 http_requests_total 这个指标名称的时间序列:
可以通过在花括号({})中添加逗号分隔的标签匹配器列表来进一步筛选这些时间序列。
这次依然选择 http_requests_total 指标名称的时间序列,这些时间序列的 job
标签(label)设置为 prometheus
,group 标签(label)设置为canary
:
在匹配过程中可以使用否定匹配标签值,或者使用正则表达式匹配标签值。存在以下的标签匹配操作符:
=: 选择与提供的字符串完全相等的标签。
!=: 选择不等于提供的字符串的标签。
=~: 选择与提供的字符串正则表达式匹配的标签。
~: 选择与提供的字符串不匹配的标签。
例如下列的语句可以查询 http_requests_total 时间序列数据,将环境变量为 staging, testing, development 的数据查询出来 ,并且排除掉 HTTP 方法为 GET 的数据。
匹配空标签值的标签匹配器也会选择完全没有特定标签集的所有时间序列。正则表达式匹配完全锚定。对于相同的标签名,可以有多个匹配器。
向量查询必须指定与空字符串不匹配的名称或至少一个标签,不能匹配到并且只匹配到空的字符串。比如下面的表达式是错误的:
相反,下面这些表达式是有效的,因为它们都有不匹配空标签值的选择器。
通过匹配内部的__name__
标签(双下划线开头的名称都是内部保留的指标名称),标签也可以应用于指标名称。例如,表达式 http_requests_total 等价于{__name__="http_requests_total"}
。
=
, !=
, =~
, !~
这些都可以使用。下面的表达式选择所有名称以 job 开头的指标
指标名称不能是 bool、on、ignore、group_left 和 group_right 这些关键字之一。下面的表达式是错误的:
解决这个限制的方法是使用__name__
标签:
版权声明: 本文为 InfoQ 作者【耳东@Erdong】的原创文章。
原文链接:【http://xie.infoq.cn/article/b19957d3b756c5c12a2cdf48b】。未经作者许可,禁止转载。
评论 (1 条评论)