与其他日志工具相比,使用syslog的优点是什么?



我们正在使用基于BaseHTTPServer的基本python日志服务器来聚合ubuntu服务器上的python日志。这个解决方案满足了我们的需要。直到现在。转储到此日志服务器的程序数量已经增加,现在日志记录器正在使系统瘫痪。

现在我们回到绘图板,我们正在考虑使用syslog。

使用syslog日志比使用其他日志工具更有利吗?

Thanks for the help

使用syslog可能简单而快速,但它不能让您完全控制日志的聚合方式。

你现在的主要问题是使用BaseHTTPServer,它从来没有打算在生产服务器上使用,或者用于任何需要高性能的东西。

我看到两个选项:

  1. 使用一个更好的http服务器和wsgi支持,连同迷你web框架(我们正在使用gevent+bottle,但http://nichol.as/benchmark-of-python-web-servers是一个很好的解决方案的比较)
  2. 使用消息队列。这将意味着您的代码需要进行更多的更改,但这是针对您的问题的专用解决方案(并且更有效)。(我们使用rabbitmq,但请查看谷歌或http://www.darkcoding.net/software/choosing-a-message-queue-for-python-on-ubuntu-on-a-vps进行比较)

编辑:支持消息队列的专用解决方案是logbook。它也可以直接替代标准库的日志模块。

在可用的情况下(所有现代*nix系统,包括Linux, FreeBSD, OS-X等)使用syslog的优点是很多的:

    性能更好:syslog是C编译的,最重要的是它作为一个单独的进程工作,所以你所有的日志操作对应用程序,进程和线程来说都是非阻塞的
  • 你可以同时从多个进程/线程记录日志,而不用担心锁。所有的日志记录都是安全序列化的,所以你不会丢失数据
  • 您可以免费获得所有日志行上的标准可排序时间戳
  • 您可以免费获得日志旋转
  • 您可以免费获得严重性级别支持(参见man syslog)
  • 你可以用C绑定从任何语言调用日志记录,这实际上是任何语言
  • 您可以从shell脚本或命令行(通过logger)轻松记录日志
  • 你不需要重新发明(如何记录)车轮

我能想到的唯一缺点是syslog是不可移植的(到非*nix系统),但如果你在任何现代*nix上,任何替代方案都更复杂,可能不太可靠。

由于syslog使用UDP而丢失数据包的关注可能是有效的,但在局域网的实践中,我从未发现这是一个问题。

不知道为什么需要HTTP,但这肯定会增加开销。更不用说python实现可能无法胜任这项任务。我可以推荐syslog,但要注意,使用UDP进行传输可能会导致消息丢失,因此强烈建议使用TCP。syslog-ng和rsyslog都可以处理TCP syslog。Nxlog也可以,甚至不绑定到syslog协议。

相关内容

最新更新