使用RRD工具,温度曲线中不会显示负温度



我有这个代码来创建图形文件

#!/bin/sh
rrdtool graph /var/www/temp_graph.png 
-w 1024 -h 400 -a PNG --slope-mode 
--start -1d --end now 
--vertical-label "temperature (C)" 
DEF:out=/opt/templog/data/templog.rrd:internal:AVERAGE 
DEF:in=/opt/templog/data/templog.rrd:external:AVERAGE 
LINE2:in#00ff00:"inside" 
LINE2:out#000ff:"outside"

和这个文件创建rrd文件:

#!/bin/sh
rrdtool create /opt/templog/data/templog.rrd --step 300   
DS:internal:GAUGE:600:-55:125  
DS:external:GAUGE:600:-55:125  
RRA:AVERAGE:0.5:1:576    
RRA:AVERAGE:0.5:3:1344   
RRA:AVERAGE:0.5:12:1488  
RRA:AVERAGE:0.5:72:1984  
RRA:MIN:0.5:72:1984      
RRA:MAX:0.5:72:1984

但当我创建图表时,温度曲线只显示正温度,而不是负温度。

当温度低于0摄氏度时,曲线为空白,当温度为正时,曲线变为可见。

我该如何解决这个问题?

这里有两种可能性:

  1. 数据<0不存在于RRD文件中,或者
  2. 数据存在,但未显示在图形中

在第一种情况下,这很可能是因为DS的下限被错误地设置为0。尽管您在上面指定的rrdtool create命令确实给出了一个负的下限,但您应该查看与rrdtool info一起使用的实际RRD文件,以验证它在DS上是否确实具有预期的下限。可能是因为没有按照您的预期进行配置。如果下限为零,则负值将在存储到数据库中之前被丢弃。您也可以使用rrdtool dump来检查RRA中存在的值,以验证它们是否实际被存储。

第二种情况更为复杂,因为它取决于绘图参数。假设您没有使用CDEF来修改或限制源数据的范围,问题将归结为图形Y轴。通常,Y轴应展开以适合要绘制图形的数据,除非使用--rigid选项使其变为刚性。可以设置-u-l的上限和下限来控制这一点——可以尝试-l -10,根据数据的不同,它应该使图形的下限为-10或更小。同样,如果您使用上面给出的命令绘制了图形,则不应该出现此问题。

总之,我猜您的RRD文件被设置为DS的下限为0,尽管您认为是用上面的命令创建的。使用rrdtool info验证实际文件。

相关内容

  • 没有找到相关文章

最新更新