我有两个标签匹配的度量,两个计数器都是:
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