rrdtool 更新预期 2 个数据源

rrdtool update expected 2 data sources

我编写了一个简单的 rrdtool 数据库来绘制 Wi-Fi 信号强度和调制图。信号强度有效,但是当我尝试使用 MCS 信息更新数据库时,我得到:

ERROR: ./somefile.rrd: expected 2 data source readings (got 1) from mcsul15

这是我的更新代码:

rssi=`snmpget -v 2c -c communityname 1.2.3.4 .1.3.6.1.4.1.17713.21.1.2.3.0 | awk -v x=4 '{print $x}' | tr -d -`
noisefloor=`snmpget -v 2c -c communityname 1.2.3.4 .1.3.6.1.4.1.17713.21.1.2.20.1.9.1 | awk -v x=4 '{print $x}' | tr -d -`
ulmcs14=`snmpget -v 2c -c communityname 1.2.3.4 CAMBIUM-PMP80211-MIB::ulWLanMCS14Packets.0 | awk -v x=4 '{print $x}'`
ulmcs15=`snmpget -v 2c -c communityname 1.2.3.4 CAMBIUM-PMP80211-MIB::ulWLanMCS15Packets.0 | awk -v x=4 '{print $x}'`
echo $rssi
echo $noisefloor
echo $ulmcs14
echo $ulmcs15
rrdtool update ./somefile.rrd --template \
    rssi:noisefloor N:$rssi:$noisefloor \
    mcsul15:mcsul14 N:$ulmcs15:$ulmcs14

这给了我:

68
94
143679
17602658
ERROR: ./somefile.rrd: expected 2 data source readings (got 1) from mcsul15

我错过了什么?

假设 somefile.rrd 中定义了 4 个 DS,其中包含这 4 个名称,更新时应同时提供这四个名称。您只能为更新指定一个模板,其他参数应采用该格式。

此外,请检查您的 DS 名称是否正确,因为您的变量名为 $ulmcs15,但 DS 被命名为 mcsul15

rrdtool update ./somefile.rrd --template \
  rssi:noisefloor:mcsul15:mcsul14 \
  N:$rssi:$noisefloor:$ulmcs15:$ulmcs14

错误消息是因为在您的原始命令行中,mcsul15:mcsul14 被视为更新向量,而不是模板。因此它是一个时间戳和一个值,而预期是两个。说 "timestamp not recognised in 'mcsul15'" 之类的错误消息会更好,但这是一个不同的问题...