我正在使用Python开发一个模拟引擎,在那里我收集了很多指标。模拟以高速运行并每秒生成大约100K个事件(我可以通过以每秒为基础合并这些事件来进行一些处理)。我正在寻找一种机制来记录这些指标作为一个时间序列。
我的要求是:
-
我想在同一进程中有这个日志机制作为模拟,而不是外部进程,如石墨
-
机制必须能够处理100K事件/秒而不减慢模拟。
-
我希望按照如下方式存储数据:每个度量相关数据应以1秒粒度存储60分钟,1分钟粒度存储1天,5分钟粒度存储2天,1小时粒度存储6个月,1天粒度存储3年。我希望这个机制能够按照指定的范围处理数据的合并。
-
理想情况下,我希望维护一个文件来保存一次模拟运行的度量信息。对于另一次模拟运行,必须创建一个单独的文件。
-
如果有一个经过良好测试的库/模块可以随时使用,那就太好了
顺便说一句,我粗略地看了一下RRDTool,但从我的理解来看,Python库似乎是RRDTool二进制文件的薄包装。如果可能的话,我正在寻找一个更紧密的集成。
TIA
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数据库时配置RRD。