根据响应值计算 Prometheus 中的可用性

Calculating availability in Prometheus based on response value

我正在尝试使用 prometheus 计算 elasticsearch 的可用性。其中一个运行的作业将集群状态作为一个值,可以是 0、1 或 2,其中任何高于 1 的都被认为是不可用的。 使用 的答案不起作用,因为所有作业都成功了,因此查询必须按照以下方式执行某些操作:

avg_over_time(es_cluster_status{cluster="name", instance="my_es"}>1[24h])

然而,由于 >1,这不起作用。

Prometheus 不支持过滤范围向量中的样本,>1 仅适用于根据即时值过滤向量。

最简单的解决方法是定义一个记录规则,其行为与 up 指标相同(0 当您的目标关闭时,1 否则)。类似于 es_cluster_status{cluster="name", instance="my_es"} <= 1。然后您可以对该指标应用 avg_over_time() 并获得任何给定范围内的可用性。