clamp() 函数是一个向量函数,用于将向量中的每个样本值限制在指定的最小值和最大值之间。如果样本值小于最小值,则将其设置为最小值;如果样本值大于最大值,则将其设置为最大值;如果样本值在最小值和最大值之间,则保持不变。
clamp() 函数在 Prometheus 中通常用于数据清洗或准备数据以进行可视化,以确保数据的范围符合特定的需求或期望。在处理可能包含异常值的指标时,这个函数特别有用。
clamp() 函数的语法如下:
clamp(v instant-vector, min scalar, max scalar)
参数说明:
v range-vector: 是要限制值范围的向量。
low: 是设定的最小值。
high: 是设定的最大值。
假设你有一个名为 prometheus_http_requests_total 的指标,它记录了 HTTP 请求的总数,你希望将这个指标的值限制在 10 到 100 之间,以避免因异常高的值导致的图表显示问题或警报误报。你可以使用以下 PromQL 查询来实现这一点:
clamp(prometheus_http_requests_total, 10, 100)
这将返回一个新的向量,其中 prometheus_http_requests_total 的每个样本值都被限制在 10 到 100 之间。
如果原始值小于 10,则结果为 10。
如果原始值大于 100,则结果为 100。
如果原始值在 10 到 100 之间,则结果保持不变。
示例: