PromQL 语句不起作用,而相同的记录规则起作用
PromQL statement does not work whilst the same Recording Rule does
我有这两个记录规则,它们有效:
- record: job:sum_rate
expr: sum(rate(promhttp_metric_handler_requests_total[5m]))
- record: job:sum_rate:avg_over_time
expr: avg_over_time(job:sum_rate[10m])
当我尝试直接将相同的表达式输入 Prometheus 时(例如在 Grafana 中),这意味着我输入 avg_over_time(sum(rate(promhttp_metric_handler_requests_total[5m]))[10m])
,Prometheus 告诉我:
Error executing query: invalid parameter "query": 1:68: parse error: ranges only allowed for vector selectors
这是为什么?我的误解在哪里?出于测试目的,我想直接输入给定的表达式而不使用记录规则,因为我需要最近三周的数据并且记录规则会从头开始收集数据,尽管数据已经被监控。
我通过反复试验找到了解决方案。据我了解,记录规则将数据保存为范围向量,avg_over_time() 和 rate() 需要作为数据类型。不过,我在 Grafana 中输入的语句会产生即时向量,因此存在不匹配。输入 avg_over_time(sum(rate(promhttp_metric_handler_requests_total[5m:15s]))[10m:15s]) 解决了问题,因为现在这些是范围向量
我有这两个记录规则,它们有效:
- record: job:sum_rate
expr: sum(rate(promhttp_metric_handler_requests_total[5m]))
- record: job:sum_rate:avg_over_time
expr: avg_over_time(job:sum_rate[10m])
当我尝试直接将相同的表达式输入 Prometheus 时(例如在 Grafana 中),这意味着我输入 avg_over_time(sum(rate(promhttp_metric_handler_requests_total[5m]))[10m])
,Prometheus 告诉我:
Error executing query: invalid parameter "query": 1:68: parse error: ranges only allowed for vector selectors
这是为什么?我的误解在哪里?出于测试目的,我想直接输入给定的表达式而不使用记录规则,因为我需要最近三周的数据并且记录规则会从头开始收集数据,尽管数据已经被监控。
我通过反复试验找到了解决方案。据我了解,记录规则将数据保存为范围向量,avg_over_time() 和 rate() 需要作为数据类型。不过,我在 Grafana 中输入的语句会产生即时向量,因此存在不匹配。输入 avg_over_time(sum(rate(promhttp_metric_handler_requests_total[5m:15s]))[10m:15s]) 解决了问题,因为现在这些是范围向量