写点什么

Prometheus 基础查询(四)修饰符

用户头像
耳东@Erdong
关注
发布于: 刚刚

offset 偏移量修饰符

offset 偏移量修饰符允许更改查询中单个瞬时向量和范围向量的时间偏移量。


例如,下面的表达式返回 http_requests_total 相对于当前查询计算时间过去 5 分钟的值:


http_requests_total offset 5m
复制代码


注意,偏移量修饰符总是需要紧跟在向量后面,比如下面这个例子


# 正确写法sum(http_requests_total{method="GET"} offset 5m) 
# 错误写法sum(http_requests_total{method="GET"}) offset 5m
复制代码


对于范围向量也是一样的。比如下面这个例子将返回 http_requests_total 一周前的 5 分钟速率:


rate(http_requests_total[5m] offset 1w)
复制代码


为了与时间前移的时间比较,可以指定一个负偏移:


rate(http_requests_total[5m] offset -1w)
复制代码


这个特性可以通过设置 --enable-feature=promql-negative-offset标志来启用。

@ 修饰符

@ 修饰符允许在查询中更改单个瞬时向量和范围向量的计算时间。提供给@ 修饰符的时间是一个 unix 时间戳,用浮点数值。


比如下面这个 例子就会返回 http_requests_total 在 2021-01-04T07:40:00+00:00 的值。


http_requests_total @ 1609746000
复制代码


注意,偏移量修饰符总是需要紧跟在向量后面,比如下面这个例子


# 正确写法sum(http_requests_total{method="GET"} @ 1609746000)
# 错误写法sum(http_requests_total{method="GET"}) @ 1609746000
复制代码


对于范围向量也是一样的。比如下面这个例子将返回 http_requests_total 指定时间的值:


rate(http_requests_total[5m] @ 1609746000)
复制代码


@ 修饰符在 int64 范围内支持上述浮点值的所有表示。它还可以与offset修饰符一起使用,其中offset是相对于@修饰符时间应用的,而不管哪个修饰符先写。这两个查询将产生相同的结果。


# offset after @http_requests_total @ 1609746000 offset 5m# offset before @http_requests_total offset 5m @ 1609746000
复制代码


默认情况下,这个修饰符是禁用的,因为它破坏了 PromQL 不能提前查看示例的评估时间的不变条件。它可以通过设置--enable-feature=promql-at-modifier标志来启用。


另外,start()end()也可以作为@修饰符的值。


对于范围查询,它们分别解析到范围查询的开始和结束,并对所有步骤保持相同。


对于即时查询,start()end()都解析为计算时间。


http_requests_total @ start()rate(http_requests_total[5m] @ end())
复制代码


发布于: 刚刚阅读数: 2
用户头像

耳东@Erdong

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
Prometheus 基础查询(四)修饰符