好的,那个标题会有点混乱。让我试着更好地解释它。我正在构建一个日志程序。该程序将有3个主要状态:实现半循环文件,可以根据需要进行扩展和保存
写入循环缓冲区文件,只保留最后10分钟的数据。
写入缓冲区文件,忽略时间(记录所有数据)。
重命名整个缓冲区文件,并用过去10分钟的数据(并将状态更改为1)重新启动一个新缓冲区文件。
现在,用例就是这样。我在我们的网络中不时遇到一些网络瓶颈。所以我想建立一个系统来记录TCP流量,当它检测到瓶颈时(通过Nagios检测)。然而,当它检测到瓶颈时,大部分有用的数据已经被传输。
所以,我想要的是一个deamon总是运行像dumpcap
这样的东西。在正常模式下,它只会保留过去10分钟的数据(因为如果不需要数据的话,保持数据载入没有意义)。但是当Nagios发出警报时,我会在deamon发送一个信号来存储所有内容。然后,当Naigos恢复时,它会发送另一个信号来停止存储并将缓冲区刷新到保存文件。
现在,问题是我看不到如何干净地存储旋转10分钟的数据。我可以每隔10分钟存储一个新文件,并在模式1下删除旧文件。但是这对我来说似乎有点肮脏(特别是在确定文件中发生警报时)。
理想情况下,保存的文件应该使警报总是在文件中的10:00标记处。虽然每10分钟有新文件可能会出现这种情况,但“修复”文件到这一点似乎有点肮脏。
任何想法?我应该只是做一个旋转文件系统,并在最后将它们合并为1(进行相当多的后期处理)?有没有办法实施半循环文件干净,以便不需要任何后处理?
感谢
哦,语言并不重要,多在这个阶段(我倾向于Python,但不反对任何其他语言。它比整体设计不再是一个问题) ...
我会在一分钟内保存过去30分钟的文件,而不仅仅是过去的11分钟 – jcolebrand 2011-02-11 17:29:59
这是对我的特定用例最容易实现的,所以对你的+1和+赏金很好先生... – ircmaxell 2011-02-15 20:49:39