目标: 想要通过topk 展示cpu使用率最高的5台机器
使用排行榜这个图表格式, 设置查询语句为 topk(5,system_cpu_usage)
发现会展示出所有机器的排序数据,而不是期望的5台机器
换一个写法 topk(5,last_over_time(system_cpu_usage[5m]))倒是可以正常展示最近5分钟内的top5的机器了,但这样就写死了只查询最近5分钟的数据,无法根据右上角的时间范围联动查询
想问一下,有联动查询方式么,或者有没有内置的变量表示查询时间范围的
P.S
通过排查按钮, 可以看到__range确实是生效了, 但是返回的数据却还是有多条, 应该是服务端的问题
P.P.S
查看了一下这个地方走的是 /api/n9e/query-range-batch 接口, 即prometheus的query_range接口, 以vm cluster版本为例子,最终效果类似于
curl -G 'http://xxx:xxx/select/0/prometheus/api/v1/query_range?' --data-urlencode "query=topk(5,last_over_time(system_load1[1800s]))"
会返回多条数据(即有可能返回超过5条数据)
如果修改为使用query接口, 而不是query_range, 则可以正确的返回5条数据, 比如
curl -G 'http://xxx:xxx/select/0/prometheus/api/v1/query?' --data-urlencode "query=topk(5,last_over_time(system_load1[1800s]))"