Ubuntu日志存储优化实操指南
一 核心思路与快速检查
sudo du -sh /var/log/* | sort -hr | headjournalctl --disk-usagesudo tail -f /var/log/syslog二 优化 systemd journal 日志
sudo nano /etc/systemd/journald.confSystemMaxUse=1G(总上限,可按需设为 500M/10G)RuntimeMaxUse=1G(运行时内存日志上限)MaxRetentionSec=2weeks(最长保留时间)sudo systemctl restart systemd-journaldsudo journalctl --vacuum-size=500M 或 sudo journalctl --vacuum-time=7d三 优化 rsyslog 与传统日志文件
*.info;mail.none;authpriv.none;cron.none 调整为 *.warning;mail.none;authpriv.none;cron.none,仅记录更高优先级事件。/var/log/syslog
{
daily
maxsize 100M
rotate 100
missingok
notifempty
compress
delaycompress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
size 与 maxsize 均可触发轮转;daily 与 maxsize 组合可实现“时间或大小任一满足即轮转”。rotate 100 与 100M 组合可将总量控制在约 10GB 量级(间接控制,非严格上限)。postrotate ... /usr/lib/rsyslog/rsyslog-rotate 通知 rsyslog 重新打开日志文件。sudo truncate -s 0 /var/log/syslog(清空当前日志,谨慎操作)。sudo logrotate -d /etc/logrotate.d/rsyslogsudo logrotate -f /etc/logrotate.d/rsyslog四 应用日志与容器日志的治理
/var/log/myapp/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root adm
postrotate
systemctl reload myapp.service >/dev/null 2>&1 || true
endscript
}
copytruncate 替代(注意可能丢少量日志)。services:
app:
image: yourimage
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
五 维护与自动化建议
systemctl status logrotatelogrotate -d /etc/logrotate.conf、logrotate -f /etc/logrotate.confsu root root。ProtectSystem=full 导致日志目录不可写,可在 /etc/systemd/system/logrotate.service.d/override.conf 中添加:[Service]
ReadWritePaths=/var/log/myapp
然后 sudo systemctl daemon-reload && sudo systemctl restart logrotate。