如何让PromQL查询返回1/0以判断两个结果是否一致?
解决方案
要实现两个PromQL查询结果相等时返回1、不等时返回0,只需在比较运算符==前添加bool修饰符即可,具体查询语句如下:
sum by (cluster) ( cnp_pg_replication_slots_active{ role="primary", cluster="p-vpt7bgc20z" } == 1 ) == bool sum by (cluster) ( cnp_collector_up { role="replica", cluster="p-vpt7bgc20z" } )
原查询的问题说明
PromQL默认的==是集合匹配模式:只有标签完全匹配且数值相等的元素才会被保留,返回值为1;若数值不等或标签不匹配,对应的序列会被直接过滤,不会返回0。添加bool修饰符后,会切换为标量比较模式,对每个标签匹配的元素直接返回1(相等)或0(不等),确保无论结果是否相等都能得到明确的0/1布尔数值。
内容的提问来源于stack exchange,提问作者Murtuza Z
相关产品推荐
相关产品推荐

