2

NaN在我的 rrdb 中得到了所有的信息。为什么?

rrdtool create temps.rrd --step 120 \
  DS:temp:GAUGE:250:-10:212 \
  DS:rate:DERIVE:250:-10:212 \
  DS:setpoint:GAUGE:250:-10:212 \
  RRA:AVERAGE:0.3:1:43200

经过一晚收集数据并每 2 分钟更新一次,如下所示:

 /usr/bin/rrdupdate temps.rrd N:30.8:30.8:9.6

DS 正在更改,但 RRA 没有任何条目。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rrd SYSTEM "http://oss.oetiker.ch/rrdtool/rrdtool.dtd">
<!-- Round Robin Database Dump -->
<rrd>
        <version>0003</version>
        <step>120</step> <!-- Seconds -->
        <lastupdate>1375360140</lastupdate> <!-- 2013-08-01 07:29:00 CDT -->

        <ds>
                <name> temp </name>
                <type> GAUGE </type>
                <minimal_heartbeat>250</minimal_heartbeat>
                <min>-1.0000000000e+01</min>
                <max>2.1200000000e+02</max>

                <!-- PDP Status -->
                <last_ds>60.1</last_ds>
                <value>NaN</value>
                <unknown_sec> 60 </unknown_sec>
        </ds>

        <ds>
                <name> rate </name>
                <type> DERIVE </type>
                <minimal_heartbeat>250</minimal_heartbeat>
                <min>-1.0000000000e+01</min>
                <max>2.1200000000e+02</max>

                <!-- PDP Status -->
                <last_ds>59.9</last_ds>
                <value>NaN</value>
                <unknown_sec> 60 </unknown_sec>
        </ds>

        <ds>
                <name> setpoint </name>
                <type> GAUGE </type>
                <minimal_heartbeat>250</minimal_heartbeat>
                <min>-1.0000000000e+01</min>
                <max>2.1200000000e+02</max>

                <!-- PDP Status -->
                <last_ds>60.0</last_ds>
                <value>NaN</value>
                <unknown_sec> 60 </unknown_sec>
        </ds>
        <!-- Round Robin Archives -->
        <rra>
                <cf>AVERAGE</cf>
                <pdp_per_row>1</pdp_per_row> <!-- 120 seconds -->

                <params>
                <xff>3.0000000000e-01</xff>
                </params>
                <cdp_prep>
                        <ds>
                        <primary_value>NaN</primary_value>
                        <secondary_value>NaN</secondary_value>
                        <value>NaN</value>
                        <unknown_datapoints>0</unknown_datapoints>
                        </ds>
                        <ds>
                        <primary_value>NaN</primary_value>
                        <secondary_value>NaN</secondary_value>
                        <value>NaN</value>
                        <unknown_datapoints>0</unknown_datapoints>
                        </ds>
                        <ds>
                        <primary_value>NaN</primary_value>
                        <secondary_value>NaN</secondary_value>
                        <value>NaN</value>
                        <unknown_datapoints>0</unknown_datapoints>
                        </ds>
                </cdp_prep>
                <database>
                        <!-- 2013-06-02 07:30:00 CDT / 1370176200 --> <row><v>NaN</v><v>NaN</v><v>NaN</v></row>
                        <!-- 2013-06-02 07:32:00 CDT / 1370176320 --> <row><v>NaN</v><v>NaN</v><v>NaN</v></row>
                        <!-- 2013-06-02 07:34:00 CDT / 1370176440 --> <row><v>NaN</v><v>NaN</v><v>NaN</v></row>

many lines, all NaN

                        <!-- 2013-08-01 07:26:00 CDT / 1375359960 --> <row><v>NaN</v><v>NaN</v><v>NaN</v></row>
                        <!-- 2013-08-01 07:28:00 CDT / 1375360080 --> <row><v>NaN</v><v>NaN</v><v>NaN</v></row>
                </database>
        </rra>
</rrd>
4

1 回答 1

1

您的问题是您实际上没有存储任何数据;您的 rrdupdate 调用失败。

如果从命令行运行rrdupdate命令,您将立即看到错误:

$ rrdtool update temps.rrd N:30.8:31.2:9.1
ERROR: temps.rrd: not a simple signed integer: '31.2'

这样做的原因是,虽然第一个和第三个 DS 是 type GAUGE,第二个是 type DERIVE。当数据类型为GAUGE.

所以,你有四个选择——

  • 确保您的第二个值(用于“速率”)始终是整数
  • 将其更改为键入GAUGE并传递速率而不是值
  • 完全删除第二个 DS,并在显示数据时即时计算
  • rateDS 替换为 COMPUTE DS 类型以在存储时计算

最后一个可能是最好的选择,但需要一些工作。

于 2019-04-03T04:01:33.220 回答