我写了一个简单的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 个名称定义了 4 个 DS,您应该在更新时将所有四个放在一起。 只能为更新指定一个模板,其他参数应采用该格式。
此外,请检查您的 DS 的名称是否正确,因为您的变量被称为$ulmcs15
但 DS 被命名为mcsul15
。
rrdtool update ./somefile.rrd --template
rssi:noisefloor:mcsul15:mcsul14
N:$rssi:$noisefloor:$ulmcs15:$ulmcs14
错误消息是因为在原始命令行中,mcsul15:mcsul14
被视为更新向量,而不是模板。 因此,它是一个时间戳和一个值,其中两个是预期的。 说"'mcsul15'中无法识别时间戳"之类的错误消息会更好,但这是一个不同的问题......