在工作中,我们正在构建一个分布式应用程序(可能跨越局域网上的多台机器,可能稍后跨越广域网+VPN上的多个洲际)。我们不希望每台机器都有日志文件(占满了它的磁盘并且无法聚合查看),因此需要通过网络集中记录日志。大多数日志并不重要,因此对于它们使用UDP就可以了,但是其中一些日志是与赚钱相关的重要警报,必须可靠地传递,这意味着要使用TCP。我们担心如果日志记录协议过于繁琐会拥塞网络,或者如果它不响应将拖慢应用程序。
我考虑过以下几种可能性:
- syslog(似乎很完美,但是我的老板对此持有敌意,所以我可能无法选择它)。
- 来自Facebook的scribe(但它似乎有点重量级,每个机器上都要安装一个服务器-不是每个日志消息都需要超高的可靠性)。
- 使用像rabbitmq这样的消息队列,它可以具有多个调整为不同事务安全级别的队列。
- 最坏的情况下,我可以自己从头开始编写。
你有其他建议吗?您使用过哪些集中式日志记录解决方案,它们的效果如何?
编辑:我倾向于使用scribe,因为其存储和转发设计将运行的应用程序与网络延迟分离开来。但是在努力安装它后,我发现(1)它不可用作二进制包-现在这是不可原谅的-而且(2)它依赖于一个库(thrift),该库也不可用作二进制包!最糟糕的是,它甚至无法正确编译。即使在开源中,那也不是发布质量的代码。