在工作中,我们正在构建一个分布式应用程序(可能跨越局域网上的多台计算机,可能稍后在WAN + VPN上跨越几个大陆)。我们不希望每台机器都有本地日志文件(填满磁盘而无法集中查看),因此我们需要集中通过网络进行日志记录。大多数日志都不重要,因此UDP对他们来说很好,但有些是丢失重要的警报,必须可靠地传递,这意味着TCP。如果日志记录协议过于繁琐,我们担心会造成网络拥塞,或者如果应用程序没有响应,我们会将应用程序拖到抓取状态。
我考虑过的一些可能性是:
你还有其他建议吗?您使用了哪些集中式日志记录解决方案,以及它们的运行情况如何?
编辑:我倾向于抄写员,因为它的存储转发设计将正在运行的应用与网络延迟分离。但是在努力安装它之后,我发现(1)它不能作为二进制包使用 - 现在这是不可原谅的 - 而且(2)它非常依赖于一个不能作为二进制包提供的库(thrift)!最糟糕的是,它甚至无法正常编译。即使在开源中,这也不是发布质量代码。
答案 0 :(得分:10)
我们已成功使用ZeroMQ作为您自己的分布式应用程序方案的日志。它非常可靠,速度极快。在使用Spread进行不太成功的实施后,我们搬到了ZeroMQ。在我们的设置中,单个ZeroMQ服务器能够处理来自中高繁忙分布式应用程序的70多种不同日志。它从LAN和互联网接收数据。
如果您需要详细的队列服务器比较,look at this page from the Second Life wiki。
希望它有所帮助!
答案 1 :(得分:5)
如果您打算只关注基础架构日志(例如,在系统级别),则Syslog很好。我听说KIWI Syslog Server是一个很好的,虽然没有亲自尝试。另一方面,如果要记录与应用程序相关的内容,系统日志可能不是最佳选择。如果你使用apache日志服务(log4j,log4xxx和其他),那么logFaces将是一个很好的解决方案,因为它专门用于在一个地方聚合多个应用程序。适用于TCP或UDP连接,并具有良好的日志查看器和数据库集成。
披露:我是该产品的作者。
答案 2 :(得分:5)
最近有几种选择。值得注意的是,Scribe不再维护。 Facebook开发了名为Caligraphus的继任者,它不是开源的。这是一个替代品清单。
免责声明:我是Fluentd项目的提交者。
答案 3 :(得分:4)
其他例子可能很棒,但我对Syslog-NG祝你好运。它非常灵活和可配置;虽然很容易找到并快速做一些有用的事情。
答案 4 :(得分:1)
您也可以考虑使用SNMP警报。
答案 5 :(得分:1)
审核了此主题中推荐的所有替代方案。寻找蟒蛇动力的东西。用Google搜索更多信息并找到哨兵https://getsentry.com/welcome/开源,有据可查。对于商业应该是可靠的,因为有一个基于此的业务。