普罗米修斯:合并二进制操作中丢失标签的值



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

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二进制运算符完成时间序列:

vector1或vector2产生一个包含所有原始元素的向量向量1的(标签集+值(以及向量2的所有元素其在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

最新更新