我构建了一个系统,该系统需要每小时从四台机器收集新的 Apache 日志,合并、处理并存储它们。为了完成收集新日志的任务,我编写了一堆 cron 脚本,该脚本读取已发送的行并开始仅发送新行,然后存储新行号。这与使用一些 .lock 文件的合并脚本同步。
虽然这个系统运行得很好,但我想用一个更可靠的系统来替代这个系统,该系统具有良好的错误处理能力,也许可以自动检测新的日志文件(它们每天都会轮换)。有什么我可以做这种任务的吗?谢谢!
答案1
收集/监控日志的解决方案有很多。
其中一些:syslog、syslog-ng、logsurfer、splunk……我想还有很多。但我推荐 syslog-ng。
它非常可配置(例如,他可以在数据库中存储日志,有时非常有用),有弹性,可以做您想做的一切。
使用 syslog-ng 和 MongoDB,您可以使用 mojology(一个简单的应用程序,用于浏览 syslog-ng 记录的存储在 MongoDB 中的 syslog 消息)制作相当有趣的东西。
您可以使用其中的任意一款软件。
Zabbix 可以收集日志,但配置起来要困难得多。
Syslog 是个不错的主意,但 sysylog-ng 的功能更多。以下是 syslog 和 syslog-ng 的比较http://www.balabit.com/network-security/syslog-ng/opensource-logging-system/features/comparison
所以我会选择 syslog-ng :)
答案2
我认为使用 syslog 服务器是个好主意。您可以将所有日志发送到此服务器,然后进行处理。Syslog 还允许您定义过滤器并为记录的信息添加多个目标。
答案3
我不确定 syslog 是否真的是适合 apache 日志的工具。
在四个网络服务器上,我只是每小时轮换一次日志。
然后,从中央日志服务器,我将使用 rsync 获取所有日志,并在一个中心位置执行所有“智能”操作(合并日志等)。
答案4
有一个很好的工具可以汇总 Web 服务器日志,由 Dmitry Koterov 编写。它专门用于克服 syslog 解决方案的一些缺陷。请参阅http://en.dklab.ru/lib/dklab_logreplica/
另一个好方法是使用日志管理软件,如 splunk 或 logstash。