如何用PromQL运算符实现带条件逻辑的new_uptime记录规则?
实现Prometheus条件记录规则的方案
核心记录规则
你要的逻辑可以通过Prometheus的max()函数结合基础数学运算实现,完整的记录规则如下:
groups: - name: custom_metrics rules: - record: new_uptime expr: uptime - max(util - 100, 0)
逻辑拆解
这个表达式的运作完全贴合你的需求:
- 当
util ≤ 100时,util - 100的结果小于等于0,max()函数会返回0,最终new_uptime = uptime - 0 = uptime - 当
util > 100时,util - 100得到正数,max()直接返回这个值,最终new_uptime = uptime - (util - 100)
额外注意点
- 如果
uptime和util的标签集不完全一致,需要用on()或ignoring()指定匹配的标签,比如只按instance标签匹配:uptime - max(util - 100, 0) on(instance) - 可以先在Prometheus的表达式浏览器里测试这个公式,代入不同的
util值验证结果是否符合预期,再添加到记录规则中。
内容的提问来源于stack exchange,提问作者user22801927
相关产品推荐
相关产品推荐

