首页/云/可观测性速查/clamp 系列:数值截断与展示控制
Prometheus 与采集64 条

clamp 系列:数值截断与展示控制

clamp_max、clamp_min、clamp 把数值限制在区间内;多用于压制异常尖峰对图表坐标轴的影响,或把抖动产生的负值归零。

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

clamp 系列干什么

clamp_max、clamp_min 与 clamp 把查询结果限制在指定区间内:clamp_max 设上界,clamp_min 设下界,clamp 同时设上下界。常见用途有两个,一是压制异常尖峰对图表坐标轴的影响,二是把抖动产生的负值归零让曲线更易读。它们只改变返回数值,不改变底层数据。

用法示例

用法示例
# 展示时压制超过 100 的异常尖峰
clamp_max(some_gauge, 100)

# 把抖动的导数归零到非负区间
clamp_min(deriv(connection_count[5m]), 0)

# 同时限定上下界:低于 0 记 0,高于 50 记 50
clamp(node_load1, 0, 50)

# 百分比边界保护:使用率不超过 100
clamp_max(100 * used / total, 100)

函数对照

函数作用典型用途
clamp_max逐样本取不超过上限的值压尖峰、防坐标轴被单点拉爆
clamp_min逐样本取不低于下限的值负值归零、导数下限保护
clamp同时限定上下界百分比越界保护、显式区间约束
min / max 聚合跨序列取最小或最大值对比不同实例之间的极值
截断只影响展示值,不改变真实数据;告警判定不要使用截断后的表达式,否则超阈值的异常会被静默抹平。
如果尖峰本身就是需要关注的信号(例如 GC 停顿或连接突增),截断会让问题从图上看不见,先确认压制的目的。

使用注意

  • 只作用于瞬时向量:区间向量与标量不能直接传入,需要先聚合出瞬时值
  • 上下界要来自业务定义(例如容量就是 100%),而不是随手取的整数
  • 与 topk、sort 组合时先截断再排序,图表的顺序与显示数值才一致
  • 在记录规则里保留原始指标,只在展示层做截断,原始与可读两头都不丢
排查曲线上限恒定时,先确认面板或记录规则里是否有人加了 clamp,这类“数值太完美”往往不是真实数据。
clamp 的参数顺序是 clamp(向量, 下界, 上界),写反会把上下界互换,图上未必明显但数值语义已经完全错了。

易错点

  • 用 clamp 掩盖尖峰会让容量分析失真,只建议在展示面板使用
  • clamp_max 与 min() 聚合容易混淆:前者逐样本截断,后者跨序列取小值
  • 把截断后的表达式写进告警规则,超过阈值的异常被静默抹平
  • 上下界取值没有依据,随手写 100 会把正常量级的曲线一起压平
  • 多处叠加 clamp 后无人能解释实际显示的上下界来源,容量规划失去依据

数据来源与参考

  • Prometheus 文档 · clamp_max() / clamp_min() / clamp()
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌