我需要为 Prometheus 创建一条规则,将某些指标的值与阈值进行比较。大多数实例的阈值是相同的,但有两个或三个实例不同。有没有一种简单可靠的方法来参数化规则?
可能是这样的:
- alert: HighValueAlert
expr: my_metric > my_metric_threshold
for: 5m
其中
my_metric_threshold
是一个“人工”指标,在某处定义,例如使用节点导出器文本文件收集器(或者可能使用我不知道的另一种方法):
my_metric_threshold{instance="special1"} 101
my_metric_threshold{instance="special2"} 102
my_metric_threshold 100 # default for most of instances
希望获得可靠性:
.prom
文件),我应该收到某种有关不正确配置的警报(可能使用单独的规则)。我是普罗米修斯的新手,我找不到任何解决这个问题的例子。
您的总体方法是正确的。但这里有一些建议如何让您的生活更轻松。
my_metric_threshold_special{instance="server1"} 101
my_metric_threshold_special{instance="server42"} 102
my_metric_threshold_default 100
# if you'll expose it through textfile collector too, it will also have an instance label.
# It doesn't matter, just make sure to expose it only once.
- alert: HighValueAlertDefault
expr: my_metric > on() group_left() my_metric_threshold_default unless on(instance) my_metric_threshold_special
- alert: HighValueAlertSpecial
expr: my_metric > on(instance) group_left() my_metric_threshold_special
这里默认警报规则比较忽略所有标签,并忽略具有特殊阈值的实例的指标。
特殊警报规则只是将指标与阈值进行比较。
要检查
my_metric_threshold_default
,您可以使用表达式
absent(my_metric_threshold_default) or count(my_metric_threshold_default)>1