如何pipe所有日志文件条目到Linux上的数据库?

我正在考虑构build一个应用程序来读取我的不同的服务器日志文件,将parsing的数据保存到数据库,然后从日志文件中删除行。

这是我的程序员一边试图想到更好的方式来获取所有的日志文件到一个可用/可search的应用程序控制台我可以一次查看多个服务器,并编写脚本来查找相关性或电子邮件/ txt我,而我不在的时候东西看起来不对

目前市场上似乎有昂贵的解决scheme,但我不能certificate价格高达$ 500- $ 2000 / mo。

无论如何,我的问题是如何从主动写入的日志文件中删除行而不会造成问题? 一些日志文件被旋转(像nginx),而其他的则不是。 我想最安全的事情是复制文件,然后echo '' > file.log擦除它。 我可能会错过300ms的写入。

另一个问题是我是否要删除日志。 我想不擦除日志意味着我将不得不打开文件,跳到最后,然后工作我的方式,直到我到最后一个已知的条目。

将日志数据传输到外部应用程序/数据库的好方法是什么?

不要重新发明轮子。

使用logstash从您的系统中获取您的日志。

有logstash发送日志到elasticsearch。

使用kibana前端进行分析。

这种组合如此常见,被称为ELK堆栈。 这都是开源的。

syslog-ng