首页/云/可观测性速查/sort 与 sort_desc:结果排序
Prometheus 与采集64 条

sort 与 sort_desc:结果排序

sort()/sort_desc() 对瞬时向量按数值排序,影响的是行序而非数值;表格类面板中使用可让结论更直观,对图形面板没有意义。

可观测性速查云更新于 2026-10-13

排序函数做什么

sort 与 sort_desc 对瞬时向量按数值升序或降序排列,改变的是结果的行序而不是数值。在表格类面板里使用可以让结论更直观,例如把错误率最高的实例排在最前;对图形面板没有实际意义,因为曲线是按时间绘制的,行序不影响绘制结果。

基本信息

作用对象瞬时向量,区间向量与标量不可用
排序方向sort 升序,sort_desc 降序
返回内容样本集合不变,仅调整返回顺序
常见搭配与 topk、bottomk 组合先筛选再排序

用法示例

用法示例
# 表格里从高到低展示前 5 名
sort_desc(topk(5, sum by (instance) (rate(http_requests_total{code=~"5.."}[5m]))))

# topk 已带筛选,排序可省略
topk(5, sum by (instance) (rate(http_requests_total{code=~"5.."}[5m])))

# 升序:找出请求量最低的实例,排查采集缺失
sort(sum by (instance) (rate(http_requests_total[5m])))

与 topk 的分工

函数作用是否改变结果集
sort全部结果排序不改变,只调整顺序
sort_desc全部结果降序不改变,只调整顺序
topk取数值最大的前 K 条改变,其余被丢弃
bottomk取数值最小的前 K 条改变,其余被丢弃

典型使用场景

  • 表格面板中把错误率最高或延迟最大的实例排在前面
  • 巡检时按请求量升序查看,快速发现采集缺失的实例
  • 告警排查时先排序再逐个下钻,避免在大列表里人工寻找
  • 配合 topk 限定展示数量,控制面板可读性
排序函数只在实际返回的瞬时向量上生效;查询被聚合或聚簇展开时,最终顺序仍以返回结果为准,面板设置里的排序也可能覆盖查询中的顺序。

使用注意

  • 排序结果受区间参数影响,跨时间点的图表面板本身没有行序概念
  • 想固定展示前若干名,用 topk 控制数量比单纯排序更可靠
  • 排序与分页展示无关,超长的表格仍需要靠筛选来控制信息量
  • 排序对性能有轻微影响,超大规模结果集上优先在查询层收敛范围
  • 需要固定的前 N 名列表时用 topk 控制数量,排序只负责展示顺序

易错点

  • 在图形面板用 sort 看不到任何效果,排序只对表格展示有意义
  • sort 不改变序列集合,需要缩小范围还是得靠 topk 先筛选
  • 对区间向量使用 sort 会直接报错,先聚合出瞬时值再排序
  • 只排序不限制数量,几千条序列的表格本身就无法阅读

数据来源与参考

  • Prometheus 文档 · sort() / sort_desc()
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌