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'" 之类的错误消息会更好,但这是一个不同的问题...
我编写了一个简单的 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'" 之类的错误消息会更好,但这是一个不同的问题...