clamp_max() 函数是一个标量函数,用于将给定的标量值限制在指定的最大值以下。如果原始值小于或等于提供的最大值,则返回值就是原始值本身;如果原始值大于最大值,则返回最大值。
clamp_max() 函数在处理可能超出预期范围的指标时非常有用,特别是当这些超出范围的值可能导致计算错误或警报误报时。通过使用 clamp_max(),你可以确保这些值不会超过指定的上限。
clamp_max() 函数在与其他 PromQL 函数结合使用时特别有用,例如与聚合函数(如 sum() 或 avg())结合,以在计算总和或平均值时排除异常高的值。
clamp_max() 函数的语法如下:
clamp_max(v scalar, max scalar)
参数说明:
v scalar: 是你想要限制最大值的原始标量值。
max scalar: 是你想要作为上限的标量值。
假设你有一个名为 prometheus_http_requests_total 的指标,它记录了 HTTP 请求总数。由于某种原因,这个指标偶尔会产生异常高的值。你想要在分析这个指标时忽略这些异常值,因此你可以使用 clamp_max() 函数来限制这些值:
clamp_max(prometheus_http_requests_total, 5)
在这个查询中,任何 prometheus_http_requests_total 值大于 5 的都会被替换为 5。这样,你就可以在分析或警报中使用这个被限制过的指标,而不用担心异常值的影响。如下图: