IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

关于Rsyslogd 的一些配置 (高性能、高可用 rsyslogd)

香草的技术博客 2013-09-02 13:30:13 累计浏览 3,669 次
本机暂存

     最近公司的日志传输服务器因网间带宽被调整后出现了日志堵塞的情况,更为严重的是公司大量的业务日志也是通过 PHP 的 syslog接口传输的。这样,因为rsyslog的新版本默认不期望丢弃任何数据,而rsyslog中的日志又传输不出去,导致了业务在写日志的时候“被”堵塞住了。

      拿到rsyslog的配置后,发现仅有一些简单的关于传输逻辑的配置,而关于rsyslog进程、队列、传输效率的配置参数都采用默认,这种仅仅能够 work around 的配置在测试或运行初期是允许存在一段时间的,在系统、环境正常的时候能够运行。一旦出现异常,各种问题就全出来了。

      推荐的文档和我认为比较关键的配置请见下图:

rsyslog_config_opt      几点说明:

  • 推荐仔细阅读 第一篇 关于 rsyslog queue的文档,细节几乎都在这篇文档里。

  • 定义 $MainMsgQueueFilename 可以简单理解为队列入口无限大,$MainMsgQueueMaxDiskSpace来控制大小。

  • 队列的堵塞可能的原因是各种其他原因导致的 MainMsg 满了,而默认配置下,rsyslog不主动丢弃消息。

  • $QueueHighWatermark可以控制 MainMsgQueue 如何使用 disk作为队列存储,而不再是仅仅使用内存。

  • $MainMsgQueueDiscardMark 和 $MainMsgQueueQueueDiscardSeverity 配合控制如何丢弃消息。

  • 在我的 x220i ubuntu 环境下,可以看到几十G的队列文件(网络传输堵塞时以及进入的消息量过大时)、丢弃消息的通知,内存使用的状况。因这一切都不复杂,不再赘述。

  • rsyslogd的RELP(http://www.librelp.com/)相关的内容暂未涉及。

  •    补充:

  • 附加另外两份参考: http://www.gerhards.net/download/LinuxKongress2010rsyslog.pdf      http://mperedim.wordpress.com/2010/01/21/rsyslog-evaluation/

  • 2013-07-24 补充文档:

  • On the (un)reliability of plain tcp syslog   http://blog.gerhards.net/2008/04/on-unreliability-of-plain-tcp-syslog.html
  • The Simple Event Log Protocol (SELP)  http://www.monitorware.com/en/workinprogress/selp.txt
  • RELP - the reliable event logging protocol  http://blog.gerhards.net/2008/03/relp-reliable-event-logging-protocol.html
  •       刚好微博上 @zzyongx  也提供了一个 syslog-safer (https://github.com/zzyongx/syslog-safer) 软件,大家也可以试试。

同分类推荐文章

  1. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)
  2. WARNING: detected duplicate paths to the same disk导致crs无法正常启动故障解决 (2026-05-24 22:24:49)
  3. Terraform 极简入门:从 AWS-CLI 到基础设施即代码(IaC) (2026-05-20 08:00:00)

查看更多 DevOps 文章 →

建议继续学习

  1. 如何成为Python高手 (累计阅读 54,903)
  2. Linux 性能监控、测试、优化工具 (累计阅读 12,951)
  3. include(“./file.php”)和include(“file.php”)区别 (累计阅读 12,721)
  4. Rolling cURL: PHP并发最佳实践 (累计阅读 11,421)
  5. 关于使用STL的红黑树map还是hashmap的问题 (累计阅读 8,808)
  6. jQuery性能优化指南 (累计阅读 8,729)
  7. 提升磁盘IO性能的几个技巧 (累计阅读 8,443)
  8. 关于PHP的编译和执行分离 (累计阅读 8,282)
  9. Mysql的随机读取 (累计阅读 7,802)
  10. redis 运维实际经验纪录之一 (累计阅读 7,642)