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