Linux系统的日志管理是运维工作中的重要环节,通过合理的配置可以实现日志的分类存储、自动轮转、过期清理等功能,既方便后续排查系统故障,也能避免日志文件无限制增长占用磁盘资源。常用的日志管理组件包括rsyslog、systemd journal和logrotate,三者可以配合使用覆盖大部分日志管理场景。
rsyslog服务配置
rsyslog是Linux系统中最常用的日志收集服务,默认在大多数主流Linux发行版中预装并运行,负责接收系统内核、各类服务的日志并存储到指定文件中。
基础配置文件结构
rsyslog的主配置文件通常位于/etc/rsyslog.conf,额外的配置可以放在/etc/rsyslog.d/目录下,以.conf结尾的文件会被自动加载。配置规则的基本格式为:
日志设施.日志级别 日志存储路径
常见的日志设施包括auth(认证相关)、cron(定时任务)、kern(内核)、mail(邮件)、user(用户进程)等,日志级别从低到高分为debug、info、notice、warning、err、crit、alert、emerg,级别越高表示日志越严重。
自定义日志存储规则示例
如果需要将SSH服务的日志单独存储到/var/log/ssh.log,可以创建/etc/rsyslog.d/ssh.conf文件,添加如下配置:
# 将authpriv设施的所有级别日志存储到ssh.log authpriv.* /var/log/ssh.log
配置完成后重启rsyslog服务使配置生效:
# 重启rsyslog服务 systemctl restart rsyslog # 查看服务运行状态 systemctl status rsyslog
systemd journal日志管理
systemd journal是systemd自带的日志管理组件,负责收集内核、systemd服务、用户进程的日志,默认存储在/var/log/journal/目录下,以二进制格式存储,需要通过journalctl命令查看。
常用journalctl操作命令
- 查看所有日志:
journalctl - 查看最近100条日志:
journalctl -n 100 - 查看指定服务的日志,比如查看sshd服务日志:
journalctl -u sshd - 查看指定时间段的日志:
journalctl --since "2024-01-01 00:00:00" --until "2024-01-02 00:00:00" - 实时跟踪日志输出:
journalctl -f
持久化journal日志配置
默认情况下,journal日志可能仅存储在内存中,重启后会丢失,若需要持久化存储,需要修改/etc/systemd/journald.conf配置文件:
# 将Storage值改为persistent,持久化存储日志 Storage=persistent # 单个日志文件最大大小,默认是1G SystemMaxFileSize=1G # 日志总占用最大磁盘空间,默认是10%磁盘空间或者4G SystemMaxUse=4G
修改完成后重启systemd-journald服务:
systemctl restart systemd-journald
logrotate日志轮转配置
logrotate是Linux系统自带的日志轮转工具,可以自动对日志文件进行切割、压缩、删除过期文件,避免单个日志文件过大。
基础配置参数说明
logrotate的主配置文件为/etc/logrotate.conf,自定义轮转规则可以放在/etc/logrotate.d/目录下。常用配置参数如下:
| 参数 | 说明 |
|---|---|
| daily | 每天轮转一次日志 |
| weekly | 每周轮转一次日志 |
| monthly | 每月轮转一次日志 |
| rotate 数量 | 保留多少个轮转后的日志文件,比如rotate 7表示保留7个备份 |
| compress | 轮转后的日志文件进行gzip压缩 |
| delaycompress | 延迟压缩,和compress配合使用,本次轮转的文件不压缩,下次轮转时再压缩 |
| missingok | 如果日志文件不存在,不报错继续执行 |
| notifempty | 如果日志文件为空,不进行轮转 |
| create 权限 用户 用户组 | 轮转后创建新的日志文件,指定权限、所属用户和用户组 |
自定义日志轮转规则示例
为之前配置的SSH日志/var/log/ssh.log添加轮转规则,创建/etc/logrotate.d/ssh文件,内容如下:
/var/log/ssh.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 root root
postrotate
# 轮转后重启rsyslog服务,让服务写入新的日志文件
systemctl restart rsyslog > /dev/null 2>&1 || true
endscript
}
配置完成后可以手动测试轮转规则是否生效:
# 测试ssh日志的轮转配置,不会实际执行轮转 logrotate -d /etc/logrotate.d/ssh # 强制执行轮转 logrotate -f /etc/logrotate.d/ssh
配置验证与注意事项
完成所有配置后,可以通过以下方式验证配置是否生效:
- 查看rsyslog配置:重启rsyslog服务后,触发对应日志产生,检查目标日志文件是否有内容写入
- 查看journal配置:重启systemd-journald后,执行
journalctl --list-boots查看是否有历史启动日志记录,确认持久化生效 - 查看logrotate配置:手动执行轮转命令后,检查日志文件是否被切割、压缩,旧文件是否按规则保留
需要注意,修改任何服务配置文件前建议先备份原文件,避免配置错误导致服务异常。同时日志文件的权限设置要合理,避免普通用户随意查看敏感日志内容。
Linuxrsysloglogrotatesystemd_journal修改时间:2026-06-26 23:48:37