Prometheus:合并二元运算中缺失标签的值

Prometheus: coalesce values for missing labels in binary operations

我有两个具有匹配标签的指标,都是计数器:

accounts_created_total{provider="auth0"} 738
accounts_created_total{provider="google} 980

accounts_deleted_total{provider="auth0"} 65

我想根据这两个指标计算现有帐户的数量。我想到了这个:

accounts_created_total - accounts_deleted_total

# which results in

{provider="auth0"} 673

# Note the missing provider="Google"

不幸的是,provider="Google" 没有 account_deleted_total,所以我只得到 provider="auth0".

的结果

有什么方法可以告诉普罗米修斯“弥补”缺失的标签吗?这通常等同于 SQL.

中的 coalesce

您可以使用 OR binary operator:

完成时间序列

vector1 or vector2 results in a vector that contains all original elements (label sets + values) of vector1 and additionally all elements of vector2 which do not have matching label sets in vector1.

假设您想将 accounts_deleted_total 默认为 0,以下表达式使用 accounts_created_total 作为第二个向量来提取标签并乘以 0 确保重置值:

accounts_deleted_total OR (accounts_created_total * 0)

autho0的情况下,标签存在于accounts_deleted_total中,第二部分不会被使用;相反,对于 google,第二部分将产生

{provider="google"} 0

最后,你可以在你的表达式中使用它了:

accounts_created_total - (accounts_deleted_total OR (accounts_created_total * 0))

在您的特定情况下,由于您使用相同的指标来提取标签,您甚至可以将表达式简化为:

(accounts_created_total - accounts_deleted_total) OR accounts_created_total