仪表盘配置中能不能拿到当前查询的时间区间变量做计算

Viewed 33

比如我现在查询时间选择了2023-12-10 09:00:00 ~ 2023-12-10 10:00:00
我想要统计这段时间内的接口调用量

用PromQL的话, 我想到: increase(request_called_count[60m] @ 1702173600)
但是这里的[60m]我需要是通过选择的时间区间算出来的一个值, 这个有什么办法吗?

我看到现在有一些变量可以用, 比如${__from}, ${__to}, 我想问一下这样的变量是否支持计算
类似: (${__to} - ${__from}) / 1000 / 60 这样的方式, 我试了下是不行的, 那有没有其他的方式?

或者有什么内置的变量可以拿到选择的时间区间的秒数或分钟数?

或者PromQL有什么语法能支持我的需求?

1 Answers

promql里不需要这样写时间。大盘查询时序库的数据时间范围筛选条件,已经通过其他参数传递给给了后端,你可以打开一个大盘,点击任意一个图表的右上角,排查选项,你可以发现这个图表数据请求的request,其中data.queries可以看到start和end两个参数。

感谢, 我已经解决了, 有内置变量$__range, 表示时间范围筛选的条件

用大盘查询时序库的数据时间范围筛选, 只能查询出每个时间点的increase值, 我想要的是一段时间的第一个和最后一个的差值, 所以要自己加这个时间区间做increase

你可以了解下这篇介绍,里面有介绍Prometheus increase函数,https://time.geekbang.com/column/article/623851