Linux 下 syslog 优化通常从性能、磁盘占用、日志安全、可维护性几个角度来做。下面按“常见场景 + 可操作项”给你一份较完整的优化清单(以 rsyslog 为主,也兼顾 syslog-ng / journald)。
ps -ef | grep -E "rsyslog|syslog-ng|systemd-journal"
常见组合:
rsyslog + journaldrsyslog + journaldsyslog-ng编辑 /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none /var/log/messages
优化为:
*.warning;mail.none;authpriv.none;cron.none /var/log/messages
或:
*.err /var/log/messages
例如关闭 cron 噪声:
cron.* stop
或:
:msg, contains, "session opened" stop
$ActionFileEnableSync off
(rsyslog 默认就是异步,但有些发行版会开 sync)
编辑 /etc/logrotate.d/syslog 或新建:
/var/log/messages {
missingok
notifempty
size 100M
rotate 5
compress
delaycompress
postrotate
/usr/bin/systemctl kill -s HUP rsyslog.service
endscript
}
建议:
compress$WorkDirectory /var/spool/rsyslog
$ActionQueueType LinkedList
$ActionQueueFileName syslogqueue
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
作用:
*.* @@logserver:514
$ActionCompression on
编辑 /etc/systemd/journald.conf
Storage=persistent
Compress=yes
SystemMaxUse=500M
SystemKeepFree=1G
MaxRetentionSec=2week
然后:
systemctl restart systemd-journald
mount -o remount,size=512M /run/log
:msg, regex, ".*(error|fail).*" stop
(谨慎使用)
# IO 是否瓶颈
iostat -x 1
# rsyslog 是否阻塞
systemctl status rsyslog
# 查看队列
ls -l /var/spool/rsyslog
✅ warning 级别
✅ 日志轮转 + 压缩
✅ 队列缓冲
✅ journald 限制大小
✅ 不用 UDP 远程
如果你愿意,可以告诉我:
我可以给你一套可直接 copy 的配置。