Python and RRD

712 次查看

RRD是Round Robin Database的意思,RRDTool是用来管理RRD的一个工具。RRDTool主页在这里,Wikipedia的页面在这里。RRD其实就是一个时序数据库,使用一个固定大小的环型buffer,适用于存储一些统计性的信息,如CPU负载呀,气温变化呀。我为什么要说这个东西呢,因为XenServer里的性能统计是用的RRD,你可以访问诸如http://xenserver-host/rrd_updates?cf=AVERAGE&interval=5&start=123131321形式的网址来获取统计信息。XenServer将返回一个XML文件,这个XML文件其实就是用rrdtool里的export工具导出的。

好,下载完成了这个文件以后,我们假设文件名是data.xml,你可以使用rrdtool restore data.xml data.rrd的方式将数据重新恢复成rrd的格式,然后就可以使用rrdtool进行一系列操作。rrdtool的操作可以写十篇博客,这不是我今天想说的重点。

我今天想说的是,当我把rrdtool跟Python集成的时候,发现Python提供了若干封装的工具,比如Python-PyRRD,Python-rrd,Python-rrdtool,我想没几个人能搞明白这几者之间的关系吧。我来说一下。

Python-rrdtool,这个就是rrdtool的一个Python封装,调用方式与rrdtool里命令的格式是一致的。

Python-rrd,这个据说应该是rrdtool的前身,命名方式不符合Python的命名策略,所以改名成了Python-rrdtool,但是debian和ubuntu的源里还保留了一个过渡性质的傀儡包(transitional dummy package),其实就是Python-rrdtool

Python-PyRRD,这个是OO化的rrdtool封装,个人比较推荐用这个包,方便,代码也更容易让人理解。

另外,Java也提供了两个rrdtool的封装,一个是JRobin,一个是rrd4j,后者是在前者的基础上做的,提供了更好的OO的支持和性能。但是这两个项目似乎更新得很慢,XenServer导出的rrd数据(version 0003)他们现在不支持(只支持到version 0001)。所以想用Java分析XenServer的性能,还是自己去解析那个xml文件吧。

Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • 豆瓣
  • 豆瓣九点
  • QQ书签
  • Twitter
  • Add to favorites
  • email
  • FriendFeed
  • Live
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading ... Loading ...
  1. 2010年1月10日 00:43 | #1

    写的日志越来越多,相关日志现在也开始有结果了。

  2. sarah
    2010年1月11日 11:44 | #2

    您好!我现在准备用java版的RRD,研究了半天JRobin和rrd4j的关系,JRobin的主页http://oldwww.jrobin.org说项目已经停了,停的时候的版本是1.5.2,可是又看到http://www.jrobin.org上有1.5.9的版本,不知道是怎么回事,请问楼主rrd4j是换了人继续做的JRobin吗?

    我是不是用rrd4j就可以呢?

    十分感谢!

    • 2010年1月11日 13:33 | #3

      rrd4j是在jrobin的基础上做了些改进,是一个新的分支。http://oldwww.jrobin.org这个是旧的网站,http://www.jrobin.org这个是新的网站。
      好像两个版本都比较低了,最新的rrdtool导出的都支持的不好。但是你如果是在他的代码上做开发,应该没有问题吧。

发表评论

XHTML: 您可以使用这些标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">