基于PromQL/MetricsQL实现Grafana按probe_success过滤显示状态码
解决Blackbox Exporter状态码过滤问题:仅显示probe_success为0的实例状态码
你遇到的问题是union操作会覆盖指标值,这里提供两种更可靠的解决方案:
方法一:用MetricsQL的join函数关联指标
通过join函数基于instance标签关联两个指标,只保留probe_success为0的实例对应的状态码,不会覆盖probe_http_status_code的数值:
join( label_keep(probe_success == 0, "instance"), label_keep(probe_http_status_code, "instance"), "instance" )
如果你的指标还有其他需要关联的标签(比如job、module),可以调整label_keep保留对应标签,或者在join的第三个参数里添加多个标签(用逗号分隔),确保关联的准确性。
方法二:将probe_success转为标签后过滤
用label_set函数把probe_success的数值附加为probe_http_status_code的标签,之后在Grafana中通过标签过滤器筛选:
label_set(probe_http_status_code, "probe_success", probe_success)
执行这个查询后,每个状态码序列会带上probe_success标签(值为0或1)。在Grafana面板的过滤器中添加probe_success = 0的条件,就能只显示探测失败实例的HTTP状态码。
内容的提问来源于stack exchange,提问作者H. Müller
相关产品推荐
相关产品推荐

