Prometheus 指标比较警报
Prometheus metric comparison alert
我正在尝试创建一个警报表达式,如果给定的指标在所有目标中都不相同,则会触发该表达式。让我们调用我的指标 my_gauge
,其中表达式控制台输出显示:
my_gauge{group="test",instance="huey:9100",job="example"} 10
my_gauge{group="test",instance="duey:9100",job="example"} 10
my_gauge{group="test",instance="luey:9100",job="example"} 7
我对低于最高阈值的目标结果感兴趣。所以我最初的想法是将它与 max (my_gauge)
结果进行比较,结果是:
{} 10
However my_gauge < max(my_gauge)
returns no data
(此处的预期结果将是 luey)。如何编写一个表达式,使 return 目标具有不同的度量?
如果只需要提醒至少有一个值不同,可以比较最小值和最大值是否相同:
expr: min(my_gauge) by(group) != max(my_gauge) by(group)
如果您想提醒每个不同的值,您可以使用中位数来确定共同值(在您的示例中为 10)。然后对比一下。
expr: my_gauge != on(group) group_left quantile(0.5, my_gauge) by(group)
关于你的表达方式,你漏掉了vector matches:
expr: my_gauge < on() group_left max(my_gauge)
我正在尝试创建一个警报表达式,如果给定的指标在所有目标中都不相同,则会触发该表达式。让我们调用我的指标 my_gauge
,其中表达式控制台输出显示:
my_gauge{group="test",instance="huey:9100",job="example"} 10
my_gauge{group="test",instance="duey:9100",job="example"} 10
my_gauge{group="test",instance="luey:9100",job="example"} 7
我对低于最高阈值的目标结果感兴趣。所以我最初的想法是将它与 max (my_gauge)
结果进行比较,结果是:
{} 10
However my_gauge < max(my_gauge)
returns no data
(此处的预期结果将是 luey)。如何编写一个表达式,使 return 目标具有不同的度量?
如果只需要提醒至少有一个值不同,可以比较最小值和最大值是否相同:
expr: min(my_gauge) by(group) != max(my_gauge) by(group)
如果您想提醒每个不同的值,您可以使用中位数来确定共同值(在您的示例中为 10)。然后对比一下。
expr: my_gauge != on(group) group_left quantile(0.5, my_gauge) by(group)
关于你的表达方式,你漏掉了vector matches:
expr: my_gauge < on() group_left max(my_gauge)