在 Linux 中使用 FetchLinux 进行日志管理
名称澄清与总体思路
- FetchLinux并非常见的 Linux 发行版名称,通常是对CentOS、RHEL 或 Fedora等系统的误写或泛指。无论具体发行版,现代 Linux 的日志管理都围绕systemd-journald/journalctl、rsyslog与传统**/var/log**文件展开。下面按“查看—过滤—持久化—轮转—集中化”的流程给出可操作方案。
查看与过滤日志
- 使用journalctl查看 systemd 日志(适合服务、启动、内核消息等):
- 查看全部:journalctl
- 按服务:journalctl -u sshd
- 实时跟踪:journalctl -f
- 按时间:journalctl --since “2025-12-26 00:00:00” --until “2025-12-26 12:00:00”
- 按进程:journalctl _PID=1234
- 按优先级:journalctl -p err(只看错误及以上)
- 查看本次启动:journalctl -b
- 使用dmesg查看内核环缓冲区(硬件/驱动相关):
- 查看全部:dmesg
- 实时:dmesg -w
- 过滤错误:dmesg | grep -i error
- 查看传统日志文件(适合兼容性与快速巡检):
- 系统通用:/var/log/messages(RHEL/CentOS)或 /var/log/syslog(Debian/Ubuntu)
- 认证安全:/var/log/secure(RHEL/CentOS)或 /var/log/auth.log(Debian/Ubuntu)
- Web 服务:/var/log/nginx/error.log、/var/log/apache2/error.log
- 实时跟踪:tail -f /var/log/messages | grep sshd
持久化与空间控制
- 配置journald 持久化存储:
- 编辑:/etc/systemd/journald.conf
- 设置:Storage=persistent(将日志持久化到**/var/log/journal**,默认多为auto)
- 重启服务:systemctl restart systemd-journald
- 查看与回收 journal 占用:
- 查看占用:journalctl --disk-usage
- 按大小回收:journalctl --vacuum-size=1G
- 按时间回收:journalctl --vacuum-time=7d
- 说明:启用持久化后,重启不再丢失历史日志,便于审计与取证。
日志轮转与归档
- 使用logrotate按日/周轮转并压缩旧日志,避免磁盘被占满:
- 全局配置:/etc/logrotate.conf(常见策略如 weekly、rotate 4、create、compress)
- 服务/应用专属配置:/etc/logrotate.d/(如 nginx、mysqld 等)
- 触发方式:通常由cron每日运行 logrotate,也可手动执行logrotate /etc/logrotate.conf
- 典型效果:旧日志按序归档为**.1、.2.gz …**,新日志继续写入原文件。
集中化日志与进阶
- 搭建rsyslog 日志服务器(便于多机统一收集与审计):
- 服务端启用接收:编辑**/etc/rsyslog.conf**,取消注释并启用模块与端口,例如
- $ModLoad imudp 与 $UDPServerRun 514(UDP)
- 或 $ModLoad imtcp 与 $InputTCPServerRun 514(TCP)
- 客户端转发:在**/etc/rsyslog.conf**末尾添加规则,例如
- . @192.168.1.100:514(UDP)
- 或 . @@192.168.1.100:514(TCP)
- 重启服务:systemctl restart rsyslog
- 验证:在服务器侧按来源主机或内容检索,确认日志已集中。