CentOS系统消息日志分析指南
CentOS系统中,系统消息日志主要存储在/var/log/messages(全局系统消息,涵盖内核、服务及应用程序运行状态),此外/var/log/secure(安全认证日志,如SSH登录、sudo使用)、/var/log/boot.log(启动日志,记录系统启动过程)也是重要的辅助日志文件。
cat /var/log/messages:直接输出日志文件全部内容,适合快速查看小文件;tail -f /var/log/messages:实时跟踪日志文件新增内容,常用于监控正在发生的事件(如服务异常);less /var/log/messages:分页查看日志,支持上下翻页(空格/b)和关键词搜索(/关键字)。grep "ERROR" /var/log/messages:筛选包含“ERROR”的日志行,快速定位错误信息;grep -E "ERROR|WARNING" /var/log/messages:使用正则表达式同时筛选“ERROR”或“WARNING”级别的日志;journalctl | grep "keyword":结合journalctl查看系统日志并过滤关键词(适用于CentOS 7及以上版本)。journalctl是CentOS 7及以上版本的核心日志工具,支持按服务、时间、优先级等多维度过滤:
journalctl -u nginx.service(查看Nginx服务日志)、journalctl -u sshd.service(查看SSH服务日志);journalctl --since "2025-11-01 00:00:00" --until "2025-11-03 23:59:59"(查看2025-11-01至03日的日志)、journalctl --since "yesterday"(查看昨天的日志);journalctl -p err(查看错误级别日志)、journalctl -p crit(查看严重级别日志);journalctl -f(实时跟踪系统日志);journalctl -k(等同于dmesg,查看内核启动及硬件事件日志)。awk提取字段:awk '{print $1, $3, $5}' /var/log/messages(提取日志的第1列(时间)、第3列(主机名)、第5列(进程名));sed文本替换:sed -n 's/.*ERROR.*/&/p' /var/log/messages(提取包含“ERROR”的行并显示);sort与uniq统计:grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr(统计失败登录尝试的IP次数,按频率降序排列)。journalctl -p err(查看系统级错误日志);journalctl -u nginx.service -p err(查看Nginx服务的错误日志);journalctl -k | grep -i "error"(查看内核层的错误日志)。grep "Failed password" /var/log/secure(查看SSH失败登录记录)、last -f /var/log/btmp(使用last命令查看失败登录的详细信息);last(查看用户成功登录的历史记录)、grep "Accepted" /var/log/secure(查看SSH成功登录的日志)。journalctl -u nginx.service -n 50(查看Nginx服务最近的50条日志);journalctl -u nginx.service -f(实时跟踪Nginx服务的日志输出)。使用logrotate工具自动压缩、删除旧日志,防止日志文件过大占用磁盘空间:
/etc/logrotate.conf(全局配置文件);/etc/logrotate.d/目录下创建针对特定服务的配置文件(如/etc/logrotate.d/nginx),内容示例:/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
systemctl reload nginx > /dev/null 2>&1 || true
endscript
}
上述配置表示:每天轮转Nginx日志,保留7天,压缩旧日志,轮转后重新加载Nginx服务。yum install logwatch;使用:logwatch --output mail(通过邮件发送报告);