一、日志文件定位
CentOS系统日志主要集中存储在/var/log/目录下,核心日志文件及用途如下:
/var/log/messages:系统通用日志,涵盖内核、服务及应用程序的常规信息(如启动状态、错误提示);/var/log/secure:安全相关日志,记录SSH登录、sudo使用、用户认证等安全事件;/var/log/cron:计划任务日志,记录cron守护进程执行的定时任务;/var/log/maillog:邮件服务日志,记录邮件收发及SMTP/POP3/IMAP服务活动;/var/log/boot.log:系统启动日志,记录开机过程中的服务启动状态;/var/log/dmesg:内核启动日志,包含硬件检测、驱动加载等内核级信息;/var/log/httpd/access_log/error_log)、Nginx(/var/log/nginx/access.log/error.log)、MySQL(/var/log/mariadb/error.log)等,通常位于对应服务的子目录下,记录服务的访问及错误信息。二、常用命令行工具
命令行工具是日志分析的基础,适合快速筛选、统计及实时监控:
journalctl(Systemd日志管理):用于查看systemd管理的日志(包括内核、服务及应用),常用命令:
journalctl -n 100:显示最近的100条日志;journalctl -f:实时跟踪最新日志(类似tail -f);journalctl grep "error":筛选包含“error”关键字的日志;journalctl -u sshd:查看指定服务(如sshd)的日志;journalctl --since "2025-10-20" --until "2025-10-21":查看指定时间范围的日志。grep(关键字搜索):用于在日志文件中查找特定模式,常用选项:
grep "failed" /var/log/secure:查找安全日志中的“failed”记录(如登录失败);grep -i "error" /var/log/messages:忽略大小写搜索“error”;grep -A 3 "timeout" /var/log/httpd/error_log:显示匹配行及后续3行(上下文分析)。awk(字段提取):用于处理结构化日志(如Apache/Nginx访问日志),提取特定字段并统计,示例:
awk '{print $1, $4, $7}' /var/log/httpd/access_log:提取访问日志的IP地址(第1列)、时间(第4列)、请求路径(第7列);awk '{count[$7]++} END {for (url in count) print url, count[url]}' /var/log/httpd/access_log:统计每个URL的访问次数(降序需结合sort -nr)。tail(实时监控):用于查看日志文件的末尾内容,常用命令:
tail -f /var/log/messages:实时监控系统日志的更新;tail -n 50 /var/log/secure:查看安全日志的最后50行。sed(文本处理):用于日志内容的替换、删除或提取,示例:
sed -n '/2025-10-20/p' /var/log/messages:仅显示2025-10-20的日志;sed 's/.*ERROR: \(.*\))/\1/' /var/log/myapp.log:提取错误日志中的具体错误信息(去除前缀)。三、日志分析工具
对于复杂场景(如大规模日志、长期存储、可视化),可使用专用工具提升效率:
/var/log/messages、/var/log/secure),并通过邮件发送分析结果(包含登录情况、服务状态、磁盘使用等);/etc/logwatch/conf/services.conf,可自定义分析范围及输出格式。四、日志轮转管理
为避免日志文件过大占用磁盘空间,需定期轮转(压缩、删除旧日志),常用工具为logrotate(CentOS自带):
/etc/logrotate.conf(全局配置)及/etc/logrotate.d/目录下的服务配置(如/etc/logrotate.d/httpd针对Apache日志);rotate 7:保留最近7个日志文件;daily:每日轮转;compress:轮转后压缩旧日志(如.gz格式);size 100M:当日志文件达到100MB时立即轮转;logrotate -vf /etc/logrotate.d/httpd强制轮转Apache日志(-v显示详细过程,-f强制轮转)。五、最佳实践
journalctl -f或tail -f监控/var/log/secure(安全事件)、/var/log/messages(系统错误)等关键日志,及时发现异常(如频繁登录失败、服务崩溃);grep "failed" /var/log/secure统计登录失败次数,结合lastb命令查看失败登录的IP地址,识别潜在的暴力破解攻击;