基于Blackbox Exporter与Grafana计算网站30天可用率的PromQL查询方案
解决Blackbox Exporter计算30天网站可用率的PromQL方案
针对你用Blackbox Exporter的http_probe_status_code指标计算30天可用率,且需要处理非200状态码无数据的场景,最优的PromQL查询可以这样写:
基础查询(单网站)
100 * ( count_over_time(http_probe_status_code == 200 [30d]) / ( count_over_time(http_probe_status_code == 200 [30d]) + (count_over_time(http_probe_status_code != 200 [30d]) or vector(0)) ) )
多网站分组查询(按instance标签区分)
如果监控多个网站,需要按标签分组统计:
100 * ( count_over_time(http_probe_status_code == 200 [30d]) by (instance) / ( count_over_time(http_probe_status_code == 200 [30d]) by (instance) + (count_over_time(http_probe_status_code != 200 [30d]) by (instance) or vector(0)) ) )
关键逻辑说明
count_over_time(http_probe_status_code == 200 [30d]):统计30天内返回200(成功)的探针执行次数count_over_time(http_probe_status_code != 200 [30d]) or vector(0):统计非200(失败)的探针次数,当无失败数据时,or vector(0)会把空结果转为0,避免分母计算出错- 整体公式通过「成功次数/(成功+失败次数)×100」得到可用率百分比
额外注意事项
- 确保Blackbox Exporter的采集间隔稳定,这样
count_over_time的统计结果才准确 - 如果出现总探针次数为0的极端情况(比如网站完全未被探测),查询会返回NaN,可以在末尾追加
or vector(0)或者clamp_min(..., 0)处理,根据需求调整显示逻辑 - 在Grafana仪表盘配置时,记得将面板单位设置为「百分比」,并可在面板选项中设置NaN值的显示规则(比如显示100%)
内容的提问来源于stack exchange,提问作者Arch
相关产品推荐
相关产品推荐

