温馨提示×

linux syslog怎么优化

小樊
35
2026-10-28 17:41:09
栏目: 智能运维

Linux 下 syslog 优化通常从性能、磁盘占用、日志安全、可维护性几个角度来做。下面按“常见场景 + 可操作项”给你一份较完整的优化清单(以 rsyslog 为主,也兼顾 syslog-ng / journald)。


一、先确认你用的是哪种 syslog

ps -ef | grep -E "rsyslog|syslog-ng|systemd-journal"

常见组合:

  • CentOS/RHEL 7+:rsyslog + journald
  • Ubuntu 18+:rsyslog + journald
  • 老系统:syslog-ng

二、减少日志量(最重要)

1️⃣ 降低日志级别

编辑 /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

2️⃣ 屏蔽无用日志

例如关闭 cron 噪声:

cron.*  stop

或:

:msg, contains, "session opened" stop

三、磁盘与 IO 优化

3️⃣ 使用异步写入

$ActionFileEnableSync off

(rsyslog 默认就是异步,但有些发行版会开 sync)

4️⃣ 日志轮转(必须做)

编辑 /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
}

建议:

  • 单文件 ≤ 100–200MB
  • 保留 5–10 个
  • 开启 compress

四、高性能配置(高并发服务器)

5️⃣ 使用队列(核心优化)

$WorkDirectory /var/spool/rsyslog
$ActionQueueType LinkedList
$ActionQueueFileName syslogqueue
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on

作用:

  • 防止阻塞主进程
  • 宕机不丢日志

五、远程日志优化(集中采集)

6️⃣ TCP + 队列(替代 UDP)

*.* @@logserver:514

7️⃣ 压缩远程日志

$ActionCompression on

六、systemd journald 优化(常被忽视)

编辑 /etc/systemd/journald.conf

Storage=persistent
Compress=yes
SystemMaxUse=500M
SystemKeepFree=1G
MaxRetentionSec=2week

然后:

systemctl restart systemd-journald

七、安全与稳定

8️⃣ 防止日志被写满

mount -o remount,size=512M /run/log

9️⃣ 防止暴力刷日志

:msg, regex, ".*(error|fail).*" stop

(谨慎使用)


八、常见性能问题排查

# IO 是否瓶颈
iostat -x 1

# rsyslog 是否阻塞
systemctl status rsyslog

# 查看队列
ls -l /var/spool/rsyslog

九、推荐“标准优化模板”(通用)

✅ warning 级别
✅ 日志轮转 + 压缩
✅ 队列缓冲
✅ journald 限制大小
✅ 不用 UDP 远程


如果你愿意,可以告诉我:

  • 系统版本(CentOS / Ubuntu)
  • 是否高并发 / 容器 / 云环境
  • 日志是用来 排查问题 还是 合规审计

我可以给你一套可直接 copy 的配置。

0 踩