如何在Ubuntu中配置日志记录策略
小樊
45
2025-12-11 22:21:39
Ubuntu 日志记录策略配置指南
一 架构与关键组件
- 现代 Ubuntu 采用由 systemd-journald 与 rsyslog 协同的日志体系:journald 负责早期启动阶段、内核消息、服务 stdout/stderr 的统一采集与索引化存储;rsyslog 提供传统的基于文件的落地、过滤与转发能力,二者通过 /run/systemd/journal/syslog 套接字兼容互通。默认存储策略由 journald.conf 的 Storage= 控制,常见取值为 volatile(仅内存,重启丢失)、persistent(磁盘持久化,路径 /var/log/journal)、auto(若 /var/log/journal 存在则持久化,否则易失)。文本日志通常写入 /var/log/(如 syslog、auth.log、kern.log 等)。
二 配置步骤
- 启用与重启服务
- 安装并启动 rsyslog:sudo apt update && sudo apt install -y rsyslog && sudo systemctl enable --now rsyslog
- 配置 rsyslog 规则
- 主配置:/etc/rsyslog.conf;建议将自定义规则放入 /etc/rsyslog.d/*.conf,便于维护。
- 典型规则示例(按设施与级别分流到文件):
- auth,authpriv.* /var/log/auth.log
- cron.* /var/log/cron.log
- kern.* /var/log/kern.log
- mail.* -/var/log/mail.log
- *.info;mail.none;authpriv.none;cron.none /var/log/syslog
- 远程转发示例(UDP):. @192.0.2.10:514;如需可靠传输可用 @@ 前缀(TCP)。
- 按来源主机条件转发示例:if $fromhost-ip == ‘192.168.1.100’ then @192.0.2.10:514;& stop
- 应用配置:sudo systemctl restart rsyslog
- 配置 journald 持久化与大小
- 编辑 /etc/systemd/journald.conf:
- Storage=persistent(或 auto,并确保 /var/log/journal 存在)
- SystemMaxUse=、SystemKeepFree=、MaxRetentionSec= 按需限制占用与保留时长
- 重启 journald:sudo systemctl restart systemd-journald
- 配置 logrotate 轮转
- 系统文本日志通常由 /etc/logrotate.d/rsyslog 管理;可按需调整周期、保留份数与压缩策略,例如:
- /var/log/syslog {
weekly
rotate 52
compress
delaycompress
missingok
notifempty
create 0640 root adm
}
- 测试与强制执行:sudo logrotate -f /etc/logrotate.conf。
三 常用操作与查询
- 查看与分析
- 查看系统日志:sudo tail -f /var/log/syslog
- journalctl 常用:
- 按时间:sudo journalctl --since “2025-12-01” --until “2025-12-02 03:00”
- 按服务:sudo journalctl -u nginx.service -b
- 实时跟踪:sudo journalctl -f -u ssh
- 维护与清理
- 清理 journal:sudo journalctl --vacuum-time=7d;或按大小:sudo journalctl --vacuum-size=500M
- 写入测试日志:logger “Hello, Ubuntu logging”。
四 策略建议与排错要点
- 策略建议
- 服务器环境建议启用 journald 持久化(Storage=persistent),并配置合理的 SystemMaxUse/MaxRetentionSec,避免无限制增长。
- 文本日志与关键业务日志分别设置 轮转周期与保留份数(如 syslog 保留 52 周、业务日志 7–30 天),并启用压缩与延迟压缩以节省空间。
- 集中化场景建议统一 rsyslog 规则 与 Facility/Level,对敏感设施(如 authpriv)单独落盘并设置更严格的访问控制。
- 远程转发生产环境优先 TCP/TLS,并在防火墙与网络路径上保障 514 端口的可靠性与安全性。
- 排错要点
- 修改规则后未生效:确认文件路径为 /etc/rsyslog.d/*.conf、语法正确,并执行 sudo systemctl restart rsyslog;必要时查看 rsyslog 状态与日志(sudo systemctl status rsyslog、journalctl -u rsyslog)。
- 重启后无历史 journal:检查 /var/log/journal 是否存在与权限,确认 Storage=persistent 或 auto 行为符合预期。
- 日志过大或磁盘告警:优先调整 SystemMaxUse/MaxRetentionSec,并执行 journal 清理;同时复核 logrotate 周期与保留策略。