Ubuntu 中 syslog 更新频率说明
结论与总体判断
是否“更新频繁”取决于系统负载与日志级别,而不是固定频率。Ubuntu 默认使用 rsyslog 写入 /var/log/syslog,并由 logrotate 按策略自动轮转。很多发行版将 syslog 配置为按时间轮转(如每天或每周),也可按文件大小触发;因此高负载或开启调试日志时,写入会非常频繁,低负载时则相对稀疏。
默认轮转策略与位置
- 配置文件通常位于:/etc/logrotate.d/rsyslog(作用于 /var/log/syslog 等)。
- 常见策略示例:
- 按周轮转并保留 52 份:
/var/log/syslog { weekly; rotate 52; compress; delaycompress; missingok; notifempty; create 0640 root adm; }
- 按天轮转并保留 7 份:
/var/log/syslog { daily; rotate 7; compress; delaycompress; missingok; notifempty; create 0640 root adm; }
- 触发方式:
- 时间周期(如 daily/weekly)
- 文件大小(使用 size 指令,如 size 100M)
- 也可组合使用(例如 size 达到阈值即触发,即便未到周期)
- 执行机制:由 cron 每日任务调用 logrotate 自动处理轮转。
如何判断你的系统是否“更新频繁”
- 实时查看最新日志:tail -f /var/log/syslog
- 统计单位时间新增行数(例如近 1 分钟):
tail -n 10000 /var/log/syslog | awk -v start=“$(date -d ‘1 minute ago’ ‘+%b %d %H:%M:%S’)” ‘$0 >= start {count++} END {print “lines:”, count}’
- 检查当前轮转配置:cat /etc/logrotate.d/rsyslog
- 手动强制执行一次轮转(用于验证配置):logrotate -f /etc/logrotate.d/rsyslog
- 若使用 systemd-journald 并存,也可对比:journalctl --since “1 hour ago” | wc -l
控制“频繁程度”的实用建议
- 降低日志噪声:在 /etc/rsyslog.conf 或 /etc/rsyslog.d/ 中调整各 facility 的日志级别,减少不必要的调试/信息日志。
- 限制速率:在 rsyslog 中使用速率限制(如 $SystemLogRateLimitInterval、$SystemLogRateLimitBurst)抑制突发高频日志。
- 调整轮转策略:在 /etc/logrotate.d/rsyslog 中按需设置 daily/weekly、rotate N、size 100M 等,控制单文件大小与保留周期。
- 清理历史:配合 journald 做空间治理(如 journalctl --vacuum-time 7d 或 --vacuum-size 500M)。