我有RRDTool的创建了几个图表,期间的几个小时的时间内收集的错误数据。
我怎么能在这段时间内,使其不再显示删除从RRD的数据?
我有RRDTool的创建了几个图表,期间的几个小时的时间内收集的错误数据。
我怎么能在这段时间内,使其不再显示删除从RRD的数据?
最好的方法我发现做到这一点...
我有我想要的地方丢弃我RRDtool的数据库的最近几个小时了类似的问题,所以我写了一个快速脚本来做到这一点(的道歉非常规的变量名 - 编码从工作作风继承,叹气):
#!/usr/bin/env python2
"""
Modify XML data generated by `rrdtool dump` such that the last update was at
the unixtime specified (decimal). Data newer than this is simply omitted.
Sample usage::
rrdtool dump foo.rrd \
| python remove_samples_newer_than.py 1414782122 \
| rrdtool restore - foo_trimmed.rrd
"""
import sys
assert sys.argv[1:], "Must specify maximum Unix timestamp in decimal"
iMaxUpdate = int(sys.argv[1])
for rLine in iter(sys.stdin.readline, ''):
if "<lastupdate>" in rLine:
# <lastupdate>1414782122</lastupdate> <!-- 2014-10-31 19:02:02 GMT -->
_, _, rData = rLine.partition("<lastupdate>")
rData, _, _ = rData.partition("</lastupdate")
iLastUpdate = int(rData)
assert iLastUpdate < iMaxUpdate, "Last update in RRD older than " \
"the time you provided, nothing to do"
print "<lastupdate>{0}</lastupdate>".format(iMaxUpdate)
elif "<row>" in rLine:
# <!-- 2014-10-17 20:04:00 BST / 1413572640 --> <row><v>9.8244774011e+01</v><v>8.5748587571e-01</v><v>4.2046610169e+00</v><v>9.3016101695e+01</v><v>5.0000000000e-02</v><v>1.6652542373e-01</ v><v>1.1757062147e+00</v><v>1.6901226735e+10</v><v>4.2023108608e+09</v><v>2.1457537707e+08</v><v>3.9597816832e+09</v><v>6.8812800000e+05</v><v>3.0433198080e+09</v><v>6.0198912250e+06</v><v>2. 0000000000e+00</v><v>0.0000000000e+00</v></row>
rData, _, _ = rLine.partition("<row>")
_, _, rData = rData.partition("/")
rData, _, _ = rData.partition("--")
rData = rData.strip()
iUpdate = int(rData)
if iUpdate < iMaxUpdate:
print rLine,
else:
print rLine,
为我工作。 希望它可以帮助别人。
如果你想避免写作和XML文件的编辑,因为这可能需要一些文件IO要求(根据你有多少坏数据都有),你也可以阅读整个RRD到使用抓取和内存更新值存储。
我做了类似的任务使用python + rrdtool的我落得这样做:
- 读取内存RRD在字典
- 在字典中固定值
- 删除现有RRD文件
- 创建具有相同名称的新RRD。
所提出的仅是谁,究竟编辑,是ROBM。 我想他的解决方案,并没有对我的rrdtool 1.4.7工作
我的数据库使用AVERAGE,MAX和MIN。 它包含DERIVE,仪表和计算机。 间隔:第二(70),分(70),小时(25),日(367)。 我的任务:删除一些最后一部分(典型的原因:时钟搬回)。
我申请ROBM的解决方案:改变我的新的结束时间,后全部删除。 还原的数据库似乎是正常的。 但它并没有接受新的补充。 我研究了新创建的空数据库。 而且我在里面发现了70条NaN的第二记录,同为分钟和小时。
所以,我的工作解决方案 - 如果我在某些期末删除记录,我想补充相同数量的NaN的记录在这个时期开始,用正确递减倍。 例外 - 日常记录,他们只是删除不加。 如果时期的删除后变成空,我与南纪录结束我的新的结束时间(四舍五入到的周期边界)填充它。