[英]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"
的結果。
有沒有辦法告訴普羅米修斯“彌補”丟失的標簽? 這通常相當於coalesce
中的合並。
您可以使用OR 二元運算符完成時間序列:
vector1 或 vector2 生成一個向量,其中包含 vector1 的所有原始元素(標簽集 + 值)以及 vector2 的所有元素,這些元素在 vector1 中沒有匹配的 label 集。
假設您希望將accounts_deleted_total
默認為 0,以下表達式使用accounts_created_total
作為第二個向量來提取標簽並乘以 0 確保值被重置:
accounts_deleted_total OR (accounts_created_total * 0)
在autho0
的情況下,label 存在於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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.