使用RRD工具在温度曲线中不显示负温度?

时间:2015-11-19 01:49:39

标签: rrdtool

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

#!/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 :(得分:1)

这里有两种可能性:

  1. 数据< 0不存在于RRD文件中,或
  2. 数据存在,但未在图表中显示。
  3. 在第一种情况下,这可能是因为DS的下限被错误地设置为0.尽管上面指定的rrdtool create命令确实给出了负下限,但您应该查看实际的RRD您与rrdtool info一起使用的文件,以验证它确实具有DS上的预期下限。可能是事情未按预期配置。如果下限为零,则在存储到数据库中之前将丢弃负值。您还可以使用rrdtool dump检查RRA中存在的值,以验证它们是否实际存储。

    第二种情况更复杂,因为它取决于图形参数。假设您没有使用CDEF来修改或限制源数据的范围,问题将是图表Y轴。通常,Y轴应该展开以适合绘制的数据,除非您使用--rigid选项使其变得僵硬。 -u-l上限和下限可以设置为控制此值 - 也许请尝试-l -10,这应该使图表下限为-10 或更低取决于数据。同样,如果您使用上面给出的命令绘制图表,则不应该遇到此问题。

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