首页 > 解决方案 > Prometheus:PromQL 减法,相同的标签,不同的值

问题描述

我正在使用 Hystrix、千分尺、普罗米修斯。

以下查询有效,但我需要修改它,我不知道如何:

sum by(group, key) (increase(hystrix_execution_total{event="exception_thrown"}[1m])) / sum by(group, key) (increase(hystrix_execution_terminal_total[1m])) * 100 >= 5

基本上exception_thrown是由 Hystrix 发出的一个事件,但 Hystrix 也发出另一个bad_request表示客户端错误 (400) 的指标。为了准确衡量上游服务器错误,我需要减去两个具有相同标签但值不同的指标,然后获得每分钟的警报率

hystrix_execution_total{job="auth",key="authenticate",event="exception_thrown"} - hystrix_execution_total{job="auth",key="authenticate",event="bad_request"}

如果有可能实现这一目标,有什么想法吗? 需要减去的 2 个指标的 Prometheus 图表

标签: prometheusgrafanahystrix

解决方案


一旦有人指出标签值之间存在超过 1 个差异,忽略就起作用了。

不仅事件标签值不同,终端标签值也有相应的差异。对于exception_throw终端=true,对于bad_request终端=false[!

sum by(group, key) (increase(hystrix_execution_total{job="auth",key="authenticate",event="exception_thrown"}[10m]) - ignoring(event, terminal) increase(hystrix_execution_total{job="auth",key="authenticate",event="bad_request"}[10m])) / sum by(group, key) (increase(hystrix_execution_terminal_total[10m])) * 100 >= 5

推荐阅读