如何在 CentOS/RHEL 7 上禁用或者扩展系统日志记录速率限制

CentOS/RHEL 通常使用 rsyslogd 限速机制。
但是,CentOS/RHEL 7.x 集成了 systemd 日志,以提供将结构化日志消息从 systemd 日志导入到 syslog 的能力。

系统 /var/log/messages 文件中的日志消息如下例所示:

Jan 30 03:29:45 hostname rsyslogd: imjournal: 102776 messages lost due to rate-limiting

我们如何在 CentOS/RHEL 7.x 上禁用或者扩展此日志记录速率限制功能?

更多: zhilu jiaocheng

总结

速率限制可防止日志记录使用过多级别的系统资源,并防止用不必要的消息淹没 /var/log/message。
要记录事件,需要将其写入使用系统资源的磁盘。
如果在特定时间段内记录到磁盘的重复事件过多,它们可能会淹没系统并导致更重要的服务响应缓慢甚至意外故障。
因此,通常不建议禁用速率限制,但有时出于诊断目的需要它。

禁用或者扩展系统日志记录速率限制

要在 CentOS/RHEL 7 上禁用 rsyslogd 日志记录速率限制,请执行以下步骤:

  1. 编辑“/etc/rsyslog.conf”文件,修改以下参数。
$SystemLogRateLimitInterval 5
$SystemLogRateLimitBurst    30000

将这些更改为:

$SystemLogRateLimitInterval 0
$SystemLogRateLimitBurst    0
  1. 在“#### MODULES ####”部分下的“$ModLoad imjournal”之后添加以下参数
$ImjournalRateLimitInterval 0

或者

module(load="imjournal" ratelimit.interval="0")

两个参数的作用相同,区别在于第一行是旧语法,第二行是新语法,这是首选。

  1. 编辑“/etc/systemd/journald.conf”文件,注释以下参数:
RateLimitInterval=5s
RateLimitBurst=30000

将这些更改为(在开头添加符号 #):

#RateLimitInterval=5s
#RateLimitBurst=30000
  1. 重启rsyslog和journal服务:
# systemctl restart systemd-journald
# systemctl restart rsyslog
日期:2020-09-17 00:12:30 来源:oir作者:oir