【发布时间】:2017-11-06 07:05:40
【问题描述】:
我在这里的第一篇文章,所以我希望我没有太冗长。 我发现我丢失了数据点,因为我的 rrdtool 配置中只有 10 行,并且想要使用旧数据从备份源文件进行更新。 修复行数后,创建配置:
rrdtool create dailySolax.rrd \
--start 1451606400 \
--step 21600 \
DS:toGrid:GAUGE:172800:0:100000 \
DS:fromGrid:GAUGE:172800:0:100000 \
DS:totalEnerg:GAUGE:172800:0:100000 \
DS:BattNow:GAUGE:1200:0:300 \
RRA:LAST:0.5:1d:1010 \
RRA:MAX:0.5:1d:1010 \
RRA:MAX:0.5:1M:1010
而python中的更新行是
newline = ToGrid + ':' + FromGrid + ':' + TotalEnergy + ':' + battNow
UpdateE = 'N:'+ (newline)
print UpdateE
try:
rrdtool.update(
"%s/dailySolax.rrd" % (os.path.dirname(os.path.abspath(__file__))),
UpdateE)
这对于输入原始数据(来自 crontabbed 网站抓取)都很好,但正如我所说,我丢失了数据并想添加回早期的数据点。 从我的备份源中,我有一个纯文本文件,其中的行看起来像
1509386401:10876.9:3446.22:18489.2:19.0
1509408001:10879.76:3446.99:18495.7:100.0
第一个字段是时间戳。然后使用此代码读取更新的行:
with open("rrdRecovery.txt","r") as fp:
for line in fp:
print line
## newline = ToGrid + ':' + FromGrid + ':' + TotalEnergy + ':' + battNow
UpdateE = line
try:
rrdtool.updatev(
"%s/dailySolax.rrd" % (os.path.dirname(os.path.abspath(__file__))),
UpdateE)
当它不能与当前版本的数据库的副本一起正常工作时,我在使用相同配置创建的空数据库上再次尝试。 在每种情况下,更新仅导致数据库中的时间戳数据,而没有来自其他字段的数据。 Python 没有抱怨,我期待
1509386401:10876.9:3446.22:18489.2:19.0
会和之前一样更新
N:10876.9:3446.22:18489.2:19.0
转储显示所有字段的 lastupdate 数据,但随后显示的是 rra 数据库
<!-- 2017-10-31 11:00:00 AEDT / 1509408000 --> <row><v>NaN</v><v>NaN</v><v>NaN</v><v>NaN</v></row>
不确定我是否有 python 问题 - 更可能是 rrdtool 理解问题。感谢您的任何指点。
【问题讨论】:
标签: python-2.7 rrdtool