如何使用PromQL实现Grafana中CPU计算结果的累计趋势图展示
PromQL累计CPU计算值查询解决方案
报错原因
- 你当前使用的CPU利用率计算语句存在语法错误,缺少1个闭合右括号,本身就无法正常返回结果。
sum_over_time函数要求入参为范围向量(matrix类型),你直接传入返回瞬时向量(vector类型)的CPU计算语句,类型不匹配所以抛出expected type matrix in call to function "sum_over_time", got vector报错。
解决方案
方案1:固定/动态窗口累计和
如果需要每个时间点展示指定时间窗口内的所有15s采样值累计和,使用sum_over_time+子查询语法,将瞬时向量转换为范围向量即可:
# 1h为累计窗口大小,可按需调整,15s为采样步长对齐配置 sum_over_time( sum( (1 - avg by (cpu, instance) (rate(node_cpu_seconds_total{mode="idle"}[15s]))) * 2 + 4 ) [1h:15s] )
如果需要适配Grafana仪表盘的全局时间范围,将窗口大小替换为Grafana全局变量$__range即可:
sum_over_time( sum( (1 - avg by (cpu, instance) (rate(node_cpu_seconds_total{mode="idle"}[15s]))) * 2 + 4 ) [$__range:15s] )
方案2:运行总和(匹配你给出的累加示例)
如果你需要的是从查询时间范围起始点开始,每一个采样点的值都和前面所有采样点累加的效果(即你示例中的5→12→18),使用Prometheus 2.33及以上版本支持的running_sum函数即可:
running_sum( sum( (1 - avg by (cpu, instance) (rate(node_cpu_seconds_total{mode="idle"}[15s]))) * 2 + 4 ) )
内容的提问来源于stack exchange,提问作者msts1906
相关产品推荐
相关产品推荐

