我有这段代码来创建图形文件
#!/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℃时,曲线为空白,然后在温度为正时变为可见。
我该如何解决这个问题?
答案 0 :(得分:1)
这里有两种可能性:
在第一种情况下,这可能是因为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
验证实际文件。