利用python对rrd进行resize
来源:互联网 发布:背包推荐 知乎 编辑:程序博客网 时间:2024/06/06 19:36
rrdtool在对时间序列值进行作图方面非常强大。但它也有些小的bug。
最近发现rrdtool resize的时候,会出现莫名其妙的Segmentation Fault
rrdtool定义rrd文件的时候,如果rra的资料数目过少或过多,在以后想要进行“扩容”或“缩容”
rrdtool提供了命令resize来进行。
语法
rrdtool resize rrd_file rra_num GROW|SHRINK rows
但是我在使用这个命令之后,对新文件dump出来的数据进行查看,发现数据全都变了形。因为扩容之后,
开始时间要提前,数据的时间也提前过去了,这是不对的。
由此想到可以先把数据提取出来,然后重新创建一个新的rrd文件再把数据重新update进去。
#!/usr/bin/env pythonimport osimport rrdtooldef 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()
转自:http://blog.csdn.net/jakieyoung/article/details/5686814
- 利用python对rrd进行resize
- 利用python对rrd进行resize
- 利用Python对文件进行解压缩
- 利用python对c++进行编译
- Python and RRD
- Python and RRD
- 利用SWIG对C++库进行Python包装
- 利用SWIG对C++库进行Python包装
- 利用SWIG对C++库进行Python包装
- 利用Pycharm对python代码进行远程调试
- 利用python对DNS进行的一系列操作
- 利用SWIG对C++库进行Python包装
- 利用Python对二进制数据进行按位处理
- 利用python与nagios对服务器进行监控。
- 利用StegSolve、Python对.jpg文件进行分析
- 如何利用python中的langid,对文本语种进行分类
- 利用 python 对文件夹下图片数据进行批量改名
- 利用SWIG对C++库进行Python包装
- 我读Mongoose源码----程序框架
- Hanoi塔
- get call callable
- 原码、反码、补码及移码的作用与区别
- php Smarty 高级 模板继承
- 利用python对rrd进行resize
- 用myeclipse打war包
- 学习C++通过使用MinGW+Eclipse(windows下)
- 模板元编程
- ffmpeg数据结构解释
- Android_03
- 转android gralloc流程分析for msm8960
- Opengl中光照、材质
- HDU 4602 Partition (整数拆分&找规律&快速幂取模)