Grafana面板中Prometheus指标相减返回无数据的问题求解
Prometheus指标相减返回无数据的解决方法
当单独查询selection_cnt_success_by_source{source="selection_cnt_success_ui"}和selection_cnt_success_by_source{source="selection_cnt_success_by_source_total"}均有数据,但两者执行减法运算时返回「无数据」,核心原因是PromQL的标签匹配规则限制。
问题根源
PromQL执行二元运算(如减法)时,默认要求左右两边的时间序列所有标签完全匹配才能进行运算。这两个指标的source标签值不同,没有符合匹配条件的序列对,因此返回空结果。
解决办法
方法1:忽略指定标签匹配(推荐)
使用ignoring(source)关键字跳过source标签的匹配检查,让两个时间序列直接完成运算:
selection_cnt_success_by_source{source="selection_cnt_success_by_source_total"} - ignoring(source) selection_cnt_success_by_source{source="selection_cnt_success_ui"}
方法2:统一标签后运算
如果需要保留标签一致性,可通过label_replace修改其中一个指标的标签,再执行减法:
selection_cnt_success_by_source{source="selection_cnt_success_by_source_total"} - label_replace(selection_cnt_success_by_source{source="selection_cnt_success_ui"}, "source", "selection_cnt_success_by_source_total", ".*", "$1")
方法3:聚合后运算
通过sum聚合去掉标签,直接对指标数值进行运算:
sum(selection_cnt_success_by_source{source="selection_cnt_success_by_source_total"}) - sum(selection_cnt_success_by_source{source="selection_cnt_success_ui"})
内容的提问来源于stack exchange,提问作者Nikolay Baranenko
相关产品推荐
相关产品推荐

