CentOS系统日志集中存储在/var/log/目录下,核心日志文件及作用如下:
/var/log/messages:系统通用日志,记录系统启动、运行及服务状态等通用信息;/var/log/secure:安全与认证日志,记录SSH登录、密码验证、sudo使用等安全相关事件;/var/log/cron:计划任务日志,记录cron服务的任务执行情况;/var/log/maillog:邮件服务日志,记录Postfix、Sendmail等邮件服务的收发记录;/var/log/dmesg:内核日志,记录内核启动、硬件检测及驱动加载等信息;/var/log/httpd/)、Nginx(/var/log/nginx/)、MySQL(/var/log/mysql/)等服务会在自身目录下生成访问(access_log)和错误(error_log)日志。命令行工具是日志分析的基础,适用于快速排查问题:
tail命令:实时监控日志新增内容,常用于服务运行状态检查。例如,tail -f /var/log/messages可实时查看系统日志的更新;tail -n 50 /var/log/secure显示secure日志的最后50行。grep命令:过滤关键词,快速定位目标日志。例如,grep "ERROR" /var/log/messages查找系统日志中的错误信息;grep "Failed password" /var/log/secure查找SSH登录失败记录。可结合正则表达式增强功能,如grep -E "ERROR|WARNING" /var/log/messages同时过滤“ERROR”和“WARNING”。awk命令:提取日志中的特定字段,用于结构化分析。例如,awk '{print $1, $3, $5}' /var/log/messages提取日志的第1、3、5列(通常为时间、主机名、进程名);awk '/Failed password/ {print $9}' /var/log/secure提取SSH登录失败的用户账号(第9列为用户名)。sed命令:处理日志文本,如格式转换、删除无用信息。例如,sed -n 's/.*ERROR.*/&/p' /var/log/messages仅显示包含“ERROR”的行;sed -E 's/([A-Za-z]{3}) ([0-9]{1,2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})/\2-\1-\3 \4:\5:00/' /var/log/messages将“MMM DD HH:MM:SS”格式的时间转换为“DD-MMM-YY HH:MM:SS”。对于复杂日志(如大量数据、需要可视化),可使用专业工具提升效率:
journalctl命令:systemd的日志管理工具,支持按服务、时间过滤日志。例如,journalctl -u httpd查看Apache服务的日志;journalctl --since "2025-10-01" --until "2025-10-19"查看10月1日至19日的系统日志;journalctl -f实时跟踪所有日志。Logwatch工具:自动化日志分析工具,可生成每日报告。安装后(yum install logwatch),运行logwatch --output text即可生成包含系统状态、安全事件、服务运行情况的文本报告,适合日常巡检。/var/log/下的日志,存储到Elasticsearch,再用Kibana创建仪表板,实现日志的实时搜索、分析和可视化(如展示SSH登录失败趋势、系统错误分布)。避免日志文件过大占用磁盘空间,需定期轮转和清理:
logrotate工具:CentOS自带的日志轮转工具,通过/etc/logrotate.conf(全局配置)和/etc/logrotate.d/(服务特定配置)管理。例如,默认的/etc/logrotate.d/rsyslog配置会对/var/log/messages、/var/log/secure等日志进行轮转:daily(每日轮转)、rotate 4(保留4个旧日志)、compress(压缩旧日志)、missingok(文件不存在也不报错)。> /var/log/messages清空messages日志;find /var/log/ -type f -name "*.log" -exec truncate -s 0 {} \;清空所有.log文件;journalctl --vacuum-time 1w清理1周前的journal日志。/var/log/secure日志查找多次登录失败的记录。例如,grep "Failed password" /var/log/secure | awk '{print $9}' | sort | uniq -c | sort -nr统计每个用户的失败次数,找出频繁尝试的账号。journalctl -p 3查看所有优先级为“error”的日志(-p参数指定优先级,3为error);或grep -i "error" /var/log/messages过滤系统日志中的错误信息,结合时间戳定位问题发生时间。/var/log/cron日志查看cron任务的执行情况。例如,grep "CMD" /var/log/cron过滤出任务执行的命令,确认任务是否按预期运行。以上技巧覆盖了CentOS文件系统日志分析的基础到高级场景,可根据具体需求选择合适的方法,提升系统管理和故障排查效率。