在一次例行检查中,发现一台 CentOS 7 运行 Nginx的实例(配置了syslog和文件日志),内核会有 journal: Suppressed 566 messages from /system.slice/nginx.service 的提示消息,如图所示。
初看提示,似乎和Centos6 上的syslog提示有些相似之处,消息被抑制,不同的是消息来源变成了journal服务, 后面通过资料得知自rhel/centos7 后默认的syslog将逐步被systemd-journal 日志替代,在高并发的nginx服务器上,每秒成千上万条很容易被默认的配置给抑制,导致日志丢失,不完整的现象,要修改限制很简单,即修改速率限制参数,完成后重启即可,命令如下。
echo "RateLimitInterval=0" >> /etc/systemd/journald.conf
echo "RateLimitBurst=0" >> /etc/systemd/journald.conf
systemctl restart systemd-journald.service
补充说明,在syslog中除了/etc/systemd/journald.conf 配置会抑制消息外,如使用syslog发送远程日志还需要修改 /etc/rsyslog.conf 取消发送限制
修改 /etc/rsyslog.conf
# Disable rate-limiting of log entries
$ModLoad imjournal
$imjournalRatelimitInterval 0
$imjournalRatelimitBurst 0
systemctl restart rsyslog.service