利用python对rrd进行resize
2010-06-22 16:13
447 查看
rrdtool在对时间序列值进行作图方面非常强大。但它也有些小的bug。
最近发现rrdtool resize的时候,会出现莫名其妙的Segmentation Fault
rrdtool定义rrd文件的时候,如果rra的资料数目过少或过多,在以后想要进行“扩容”或“缩容”
rrdtool提供了命令resize来进行。
语法
rrdtool resize rrd_file rra_num GROW|SHRINK rows
但是我在使用这个命令之后,对新文件dump出来的数据进行查看,发现数据全都变了形。因为扩容之后,
开始时间要提前,数据的时间也提前过去了,这是不对的。
由此想到可以先把数据提取出来,然后重新创建一个新的rrd文件再把数据重新update进去。
最近发现rrdtool resize的时候,会出现莫名其妙的Segmentation Fault
rrdtool定义rrd文件的时候,如果rra的资料数目过少或过多,在以后想要进行“扩容”或“缩容”
rrdtool提供了命令resize来进行。
语法
rrdtool resize rrd_file rra_num GROW|SHRINK rows
但是我在使用这个命令之后,对新文件dump出来的数据进行查看,发现数据全都变了形。因为扩容之后,
开始时间要提前,数据的时间也提前过去了,这是不对的。
由此想到可以先把数据提取出来,然后重新创建一个新的rrd文件再把数据重新update进去。
#!/usr/bin/env python import os import rrdtool def create_rrd(filename) : rrdtool.create(filename, '--start', 'now-6mon', 'DS:ds1:GAUGE:600:0:U', 'DS:ds2:GAUGE:600:0:U', 'DS:ds3:GAUGE:600:0:U', 'DS:ds4:GAUGE:600:0:U', 'DS:ds5:GAUGE:600:0:U', 'DS:ds6:GAUGE:600:0:U', 'RRA:AVERAGE:0.5:1:52128', 'RRA:AVERAGE:0.5:12:8784', 'RRA:MIN:0.5:12:8784', 'RRA:MAX:0.5:12:8784') def update_rrd(filename, timestamp, data) : if data[0] is None : return updatestr = '%d:%s' % (timestamp, ':'.join([str(x) for x in data])) rrdtool.update(filename, updatestr) def resize_rrd(rrdfile) : result = rrdtool.fetch(rrdfile, 'AVERAGE', '-s', 'now-1mon', '-e', 'now') filename = rrdfile.replace('/rrd/', '/rrd_resized/') print filename if os.path.exists(filename) : os.remove(filename) if not os.path.exists(os.path.dirname(filename)) : os.makedirs(os.path.dirname(filename)) create_rrd(filename) start_time, end_time, step = result[0] term = end_time - start_time data = result[2] for i in range(len(data)) : update_rrd(filename, start_time + i * 300, data[i]) def main() : for dirpath, dirlist, filelist in os.walk('/data/rrd') : for f in filelist : resize_rrd(os.path.join(dirpath, f), create_vod) if __name__ == '__main__' : main()
相关文章推荐
- 利用python对rrd进行resize
- 利用Python进行数据分析_第六章:…
- 2017.02.18:利用python进行数据分析02
- Python 利用内置set函数对字符串和列表进行去重的方法
- 利用Python进行数据分析
- 利用python进行数据分析-pandas.concat/subplots/gropuby/pivot_table,多文件整合、聚合、分组,子图
- 思维导图-利用Python进行数据分析
- python利用LSTM进行时间序列分析预测
- Python中利用LSTM模型进行时间序列预测分析
- 利用Python进行数据分析——数据导入导出
- 利用python进行数据分析(学习笔记)
- 利用PyCharm进行Python远程调试
- 利用python进行word_count
- 如何利用cURL和python对服务端和web端进行接口测试
- [python和大数据-1]利用爬虫登录知乎进行BFS搜索抓取用户信息本地mysql分析【PART1】
- python中利用logging包进行日志记录时的logging.level设置选择
- 利用python进行数据分析-数据聚合与分组运算1
- 利用Python进行Windows环境下的自动化测试
- caffe-windows利用python对数据进行可视化
- Python split()的用法以及如何利用空格进行输入