系统日志管理
日志管理概述
银河麒麟服务器采?Systemd Journal 和传统的 Rsyslog 双重日志管理模式。Journal 捕获系统启动和服务的二进制日志,?Rsyslog 负责存储文本格式的系统日志
1. 使用 journalctl 查询日志
journalctl 是查看Systemd 日志的核心工具,功能异常强大
查看本次启动后的所有日
journalctl -b
按时间过滤日
journalctl --since "2024-01-01 10:00:00" --until "2024-01-01 12:00:00"
journalctl --since yesterday
实时滚动查看系统最新日
journalctl -f
只查看某个服务的日志(如 SSH
journalctl -u sshd -n 50
按日志级别过滤(错误及以上)
journalctl -p err..emerg
2. 传统日志文件位置
| 日志文件 | 说明 |
|---|---|
| /var/log/messages | 系统通用日志,记录大部分操作 |
| /var/log/secure | 用户登录、权限验证(SSH等) |
| /var/log/cron | 定时任务栏/计划任务栏日志 |
| /var/log/boot.log | 系统启动过程详细记录 |
3. 日志清理与空间限
长期运行的服务器如果不限制日志大小,会导?/var 分区爆满
1
查看当前日志占用
journalctl --disk-usage
2
设置空间限制(推荐)
编辑 /etc/systemd/journald.conf
SystemMaxUse=1G
SystemMaxFileSize=200M
重启服务生效。code>sudo systemctl restart systemd-journald
3
手动清理日志
# 按保留时间清?
sudo journalctl --vacuum-time=7d
# 按占用空间清?
sudo journalctl --vacuum-size=500M
4. 使用 Logrotate 轮转日志
对于第三方应用产生的日志,推荐使用Logrotate 进行自动切割和压缩
# 示例配置: /etc/logrotate.d/myapp
/var/log/myapp/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 user group
}
常见问题解答
Q: /var/log/messages 没记录了怎么办?
A: 请检?rsyslog
服务是否运行。code>systemctl status rsyslog。如果不正常,重启后再试
Q: 如何将日志发送到远程日志服务器?
A: 编辑
/etc/rsyslog.conf,在文件末尾添加 *.* @远程服务器IP:514(UDP
协议)或 *.* @@远程服务器IP:514(TCP 协议)?