用途:在 Linux 服务器上查看服务、Web、安全或数据库日志,排查错误激增、攻击或慢查询,并审查日志轮转与 journal 存储行为。不适用于无明确症状的通用事件分流(用 linux-troubleshooting),也不适用于指标采集或集中式可观测性建设(用 linux-observability)。
发行版支持:Debian/Ubuntu 与 RHEL 系(Fedora、RHEL、CentOS Stream、Rocky、Alma、Oracle)的 journalctl 与 systemd journal 行为一致,差异主要在传统 /var/log/* 文件名与包管理器。传统路径对照:系统日志 /var/log/syslog 对 /var/log/messages;认证与 sudo、SSH /var/log/auth.log 对 /var/log/secure;邮件 /var/log/mail.log 对 /var/log/maillog;Apache /var/log/apache2/ 对 /var/log/httpd/;Cron 在 Debian 记于 syslog(CRON 标签),RHEL 为 /var/log/cron;logrotate 配置均为 /etc/logrotate.d/;安装包 apt install <pkg> 对 dnf install <pkg>。RHEL 最小化安装可能不带 rsyslog,此时以 journalctl 为主。
主要能力:限时查看服务日志,如 sudo journalctl -u <service> -n 50 --no-pager、-f 实时跟随、--since "1 hour ago";仅看错误 sudo journalctl -p err --since "today" --no-pager;内核 OOM 用 sudo journalctl -k --since "today" | grep -i oom;查看占用 sudo journalctl --disk-usage。Nginx 侧可 tail -f error.log/access.log,统计状态码分布 sudo awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn,按 IP 统计、筛近期 5xx。攻击检测可统计登录爆破来源 IP、高 404 扫描 IP、敏感文件(.env、.git、.htaccess、.sql、.bak)访问。还涵盖 fail2ban、PHP-FPM、MySQL 慢查询、Apache、备份 cron 日志,以及用 sudo logrotate -f /etc/logrotate.d/nginx 强制轮转。
必要用法:先确认服务、主机、时区、时间窗口、保留策略与读写边界;改动轮转或服务前先保留有界证据切片;在最少相关来源间按时间戳与请求 ID 关联,区分事实与推断;仅执行被授权的轮转/保留变更并校验语法,失败时恢复原配置并保留证据。自动化脚本中的 sk-* 包装命令本检出版本未附带,应按原生步骤操作。
限制:轮转、vacuum、删除、改权限、重载服务均需明确授权;共享证据须脱敏密钥与个人数据;日志缺失或已轮转不得等同于事件未发生,应标记该时段未评估;时间源不同需记录时区与时钟偏差,避免误判事件顺序。