2013-05-06 41 views
0

我正在使用Python的模拟引擎工作,我在这里收集了大量指标。模拟运行速度很快,每秒产生大约100K个事件(我可以通过每秒整合这些事件来做一些处理)。我正在寻找一种机制将这些指标记录为时间序列。用于在Python应用程序中处理时间序列数据的RRD库

我的要求是:

  1. 我想在同一个进程这个日志机制 的,而不是外部进程如石墨

  2. 机制必须能够模拟处理100K事件/秒而不会减慢模拟。我想存储的数据如下:每个度量标准相关数据应该以1秒粒度存储60分钟,1分钟粒度为1天,5分钟粒度为2天,1小时粒度为6个月和1天的粒度为3年的持续时间。我希望这个机制按照指定的范围来处理数据的合并。

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

  4. 这将是很好有一个良好测试的库/模块是现成的:)

BTW,我参加了一个粗略地看一下RRDTool的,但是从我的理解,似乎像python库是RRDTool二进制文件的薄包装器。如果可能,我正在寻求更紧密的集成。

TIA

+0

你有没有尝试过的代码或以前看过的东西,你可以告诉我们? – 2013-05-06 22:07:47

+0

我以前使用过http://graphite.wikidot.com/。但正如我在我的问题文字中提到的那样,这是我模拟的外部过程,我宁愿不这样做。现在我正在阅读RRDTool的文档 - http://oss.oetiker.ch/rrdtool/doc/rrdtool.en.html。目前我还没有为此编写任何代码,因为我仍在确定要走哪条路。 – 2013-05-06 22:10:15

+0

http://oss.oetiker.ch/rrdtool/prog/rrdpython.en.html似乎是一个前瞻性的解决方案。任何有经验的人都可以使用这个评论来评论我的用例是否合适? – 2013-05-06 22:17:18

回答

2

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

后来我发现了这个(https://pypi.python.org/pypi/PyRRD)Python库,它将RRDTool功能封装在我觉得很舒服的更时髦的OOPS类型中。链接页面上的文档很好,所以我在使用它时没有遇到任何障碍。

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

+0

由于我没有收到任何其他答案,我将自己的答案标记为已接受的答案。 – 2013-05-10 21:01:27

相关问题