当前位置:  开发笔记 > 后端 > 正文

集中式网络日志 - 系统日志和备选方案?

如何解决《集中式网络日志-系统日志和备选方案?》经验,为你挑选了4个好方法。

在工作中,我们正在构建一个分布式应用程序(可能跨越局域网上的多台机器,可能稍后在WAN + VPN上跨越几个大陆).我们不希望每台机器都有本地日志文件(填满磁盘而无法集中查看),因此我们需要集中通过网络进行日志记录.大多数日志都不重要,因此UDP对他们来说很好,但有些是丢失重要的警报,必须可靠地传递,这意味着TCP.如果日志记录协议过于繁琐,我们担心拥塞网络,或者如果应用程序没有响应,则将应用程序拖到爬网中.

我考虑过的一些可能性是:

系统日志(看起来很完美,但我的老板对此有一种敌意,所以我可能无法选择它).

来自facebook的抄写员(但它似乎有点重量级,每台机器上都有一台服务器 - 并非每条日志消息都需要超级可靠性).

使用像rabbitmq这样的消息队列,可以将多个队列调整到不同级别的事务安全性.

最坏的情况,我可以从头开始写自己的.

你有其他建议吗?您使用了哪些集中式日志记录解决方案,以及它们的运行情况如何?

编辑:我倾向于抄写员,因为它的存储转发设计将正在运行的应用程序与网络延迟分离.但是在努力安装它之后,我发现(1)它不能作为二进制包使用 - 现在这是不可原谅的 - 而且(2)它非常依赖于一个不能作为二进制包提供的库(thrift)!最糟糕的是,它甚至无法正常编译.这不是发布质量代码,即使在开源中也是如此.



1> 小智..:

我们已经成功地将ZeroMQ用于像您这样的分布式应用程序场景的日志.它非常可靠,速度极快.在使用Spread实现不太成功后,我们转移到了ZeroMQ .在我们的设置中,单个ZeroMQ服务器能够处理来自中高繁忙分布式应用程序的70多种不同日志.它从LAN和Internet接收数据.

如果您需要详细的队列服务器比较,请从Second Life wiki查看此页面.

希望能帮助到你!



2> Kazuki Ohta..:

最近有几种选择.值得注意的是,Scribe不再维护.Facebook开发了名为Caligraphus的继任者,它不是开源的.这是一个备选列表.

syslog:安装在所有Linux发行版中

Fluentd:基于C + Ruby的轻量级记录器,它将日志作为JSON流处理

Flume:在Cloudera开发,用Java编写,与Hadoop生态系统配合良好

Apache Kafka:在LinkedIn开发的基于拉的架构

Scribe:由Facebook开源,但不再维护

免责声明:我是Fluentd项目的提交者.



3> JasonSmith..:

其他示例可能很棒,但是我对Syslog-NG感到很幸运。它非常灵活且可配置;尽管拿起它并快速做一些有用的事情很容易。



4> Dima..:

如果您打算只关注基础架构日志(例如,在系统级别),则Syslog很好.我听说KIWI系统日志服务器是一个很好的,虽然没有自己尝试.另一方面,如果要记录与应用程序相关的内容,系统日志可能不是最佳选择.如果你使用apache日志服务(log4j,log4xxx和其他),那么logFaces将是一个很好的解决方案,因为它专门用于在一个地方聚合多个应用程序.适用于TCP或UDP连接,并具有不错的日志查看器和数据库集成.

披露:我是这个产品的作者.

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有