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

2024-09-30 22:12:21 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的要求是:

  1. 我希望这个日志记录机制在同一个进程中 与石墨等外部过程相反的模拟

  2. 该机制必须能够在不减慢模拟速度的情况下处理每秒100K个事件。

  3. 我希望存储的数据如下:每个与指标相关的数据应以1秒粒度存储60分钟,1分钟粒度用于1天,5分钟粒度用于两天,1小时粒度用于6个月,1天粒度用于3年时间。我希望这个机制按照指定的范围来处理数据的合并。

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

  5. 最好有一个经过良好测试的库/模块,随时可用:)

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

TIA公司


Tags: 文件数据引擎度量记录粒度时间事件
1条回答
网友
1楼 · 发布于 2024-09-30 22:12:21

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

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

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

相关问题 更多 >