Grafana 8.1.5新时间序列图如何将Prometheus数据源空值设为零
解决方案
方案一:Grafana面板配置(优先推荐)
新版Time Series面板的空值处理配置没有放在和旧版相同的Stacking分组下,你可以通过以下路径配置:
- 打开对应Time Series面板的右侧配置栏,找到Standard options(标准选项)分组
- 找到Missing values(缺失值)配置项,下拉选择Fill with 0(用0填充)即可
该配置和旧版Graph面板的null as zero效果完全一致,无需修改PromQL查询语句,也不会影响图例差值difference的正常计算。
方案二:修改PromQL查询语句
你之前使用的or on() vector(0)写法错误,on()参数清空了匹配用的标签列表,导致Prometheus不会按code标签匹配原序列和0值序列,只会生成一条无任何标签的全局0序列。正确写法如下:
my_metric{code!=""} or sum by (code) (my_metric{code!=""}) * 0
如果需要覆盖查询时间范围内曾经出现过、但当前无数据的code标签序列,可以调整为如下写法(将offset 7d的时间范围调整为你常用的最大查询时间跨度即可):
my_metric{code!=""} or sum by (code) (my_metric{code!=""} offset 7d) * 0
该写法会给每个存在的code标签值生成对应的0值序列,和原序列匹配后即可实现缺失点补0,不会额外生成多余的无标签序列,也不会影响Counter类型指标的差值计算。
内容的提问来源于stack exchange,提问作者pete19
相关产品推荐
相关产品推荐

