用于处理Python应用程序中的时间序列数据的RRD库

时间:2013-05-06 22:05:08

标签: python metrics rrdtool graphite rrd

我正在使用Python的模拟引擎,我收集了很多指标。模拟以高速运行并产生大约100K事件/秒(我可以通过每秒合并这些事件来进行一些处理)。我正在寻找一种机制来将这些指标记录为时间序列。

我的要求是:

  1. 我想在同一个过程中使用此日志记录机制 作为模拟,而不是像Graphite

  2. 这样的外部过程
  3. 该机制必须能够在不减慢模拟速度的情况下处理100K事件/秒。

  4. 我想将数据存储如下:每个指标相关数据应以1秒粒度存储60分钟,1分钟粒度1天,5分钟粒度2天,1小时粒度6个月和1天的粒度,持续3年。我希望这种机制能够按照指定的范围处理数据合并。

  5. 理想情况下,我想维护一个文件,其中包含一次模拟运行的指标信息。对于另一次模拟运行,必须创建一个单独的文件。

  6. 如果有一个经过充分测试的库/模块可以随时使用,那就太好了。)

  7. BTW,我粗略地看了一下RRDTool,但据我所知,似乎Python库是RRDTool二进制文件的一个薄包装器。如果可能的话,我正在寻找更紧密的整合。

    TIA

1 个答案:

答案 0 :(得分:2)

RRDTool提供的功能符合我的要求。最初我发现了一个Python库https://pypi.python.org/pypi/python-rrdtool/并且误解了集成的本质。我认为它正在执行RRDTool的二进制文件作为一个单独的进程,但文档说这是一个适当的Python可访问包装器,它调用同一进程空间中的功能。

后来我找到了这个(https://pypi.python.org/pypi/PyRRD)Python库,它以更加pythonic的OOPS方式包装了RRDTool功能,我觉得这很方便。链接页面上提供的文档很好,所以我在使用它时没有遇到任何障碍。

此链接(http://www.vandenbogaerdt.nl/rrdtool/tutorial/rrdcreate.php)有助于确定如何在创建期间配置RRD数据库。