1

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

我的要求是:

  1. 我希望在与模拟相同的进程中使用此日志记录机制,而不是在外部进程(如 Graphite)中

  2. 该机制必须能够处理 100K 事件/秒,而不会减慢模拟速度。

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

  4. 理想情况下,我想维护一个文件来保存一次模拟运行的指标信息。对于模拟的另一次运行,必须创建一个单独的文件。

  5. 拥有一个经过良好测试且随时可用的库/模块会很好:)

顺便说一句,我粗略地看了一下 RRDTool,但据我了解,Python 库似乎是 RRDTool 二进制文件的一个薄包装器。如果可能的话,我正在寻找更紧密的集成。

TIA

4

1 回答 1

3

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 数据库。

于 2013-05-08T22:36:45.697 回答