我正在考虑构建一个应用程序来读取我的不同服务器日志文件,将解析的数据保存到数据库中,然后从日志文件中删除该行。
这是我的程序员方面试图想出更好的方法将所有日志文件放入可用/可搜索的应用程序控制台中看起来有些不对劲。
市场上似乎已经有昂贵的解决方案,但我无法证明 500 至 2000 美元/月的高昂价格是合理的。
无论如何,我的问题是如何从主动写入的日志文件中删除行而不引起问题?一些日志文件是旋转的(如 nginx),而另一些则不是。我想最安全的方法是复制文件,然后echo '' > file.log
删除它。不过,我可能会错过 300 毫秒的写入。
另一个问题是我是否甚至想删除日志。我想不删除日志意味着我必须打开文件,跳到最后,然后向后工作,直到我到达最后一个已知条目。
将日志数据通过管道传输到外部应用程序/数据库的好方法是什么?
不要重新发明轮子。
使用 logstash 将您的日志从系统中删除。
让 logstash 将日志发送到 elasticsearch。
使用 kibana 前端进行分析。
这种组合非常常见,被称为 ELK 堆栈。而且都是开源的。
syslog-ng