乐闻世界logo
搜索文章和话题

Linux 系统日志管理中如何查看、分析和轮转日志文件?

2月17日 23:35

Linux 系统日志管理是故障排查和安全审计的重要环节,掌握日志分析技能可以快速定位问题。

日志文件位置:

  • /var/log/messages:系统主日志(CentOS/RHEL)
  • /var/log/syslog:系统日志(Debian/Ubuntu)
  • /var/log/auth.log:认证日志(Debian/Ubuntu)
  • /var/log/secure:安全日志(CentOS/RHEL)
  • /var/log/kern.log:内核日志
  • /var/log/boot.log:系统启动日志
  • /var/log/dmesg:内核启动消息
  • /var/log/cron:定时任务日志
  • /var/log/maillog:邮件日志
  • /var/log/nginx/:Nginx 日志目录
  • /var/log/apache2/:Apache 日志目录
  • /var/log/mysql/:MySQL 日志目录

日志查看工具:

  • cat:查看整个文件内容
  • less:分页查看,支持上下滚动和搜索
  • tail:查看文件末尾,tail -f 实时查看
  • head:查看文件开头
  • grep:搜索特定内容
  • zcat:查看压缩的日志文件(.gz)
  • zgrep:搜索压缩的日志文件
  • journalctl:systemd 日志查看工具

journalctl 常用命令:

  • journalctl:查看所有日志
  • journalctl -f:实时查看日志
  • journalctl -u service:查看特定服务的日志
  • journalctl -u service -f:实时查看服务日志
  • journalctl --since today:查看今天的日志
  • journalctl --since "2024-01-01" --until "2024-01-02":查看指定时间段的日志
  • journalctl -p err:查看错误级别的日志
  • journalctl -p warning:查看警告级别的日志
  • journalctl -b:查看当前启动的日志
  • journalctl -b -1:查看上一次启动的日志
  • journalctl --disk-usage:查看日志磁盘占用
  • journalctl --vacuum-size=1G:限制日志大小为 1GB

日志级别:

  • emerg:紧急
  • alert:警报
  • crit:严重
  • err:错误
  • warning:警告
  • notice:通知
  • info:信息
  • debug:调试

日志轮转(logrotate):

  • 配置文件:/etc/logrotate.conf 和 /etc/logrotate.d/
  • 配置示例:
    shell
    /var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript }
  • 手动执行:logrotate -f /etc/logrotate.conf
  • 测试配置:logrotate -d /etc/logrotate.conf

日志分析技巧:

  • 统计错误数量:grep -i error /var/log/syslog | wc -l
  • 查找特定时间段的日志:grep "2024-01-01" /var/log/syslog
  • 查找特定 IP 的访问:grep "192.168.1.1" /var/log/nginx/access.log
  • 统计访问量最高的 IP:awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
  • 查找失败的登录尝试:grep "Failed password" /var/log/auth.log
  • 查找系统重启记录:last reboot

日志管理最佳实践:

  • 定期清理旧日志:使用 logrotate 自动轮转
  • 监控日志大小:设置告警阈值
  • 集中日志管理:使用 ELK(Elasticsearch、Logstash、Kibana)或 Graylog
  • 日志备份:定期备份重要日志
  • 日志权限:确保日志文件权限正确,防止未授权访问
  • 结构化日志:使用 JSON 格式便于解析和分析

远程日志收集:

  • rsyslog:系统日志服务,支持远程日志收集
  • syslog-ng:功能强大的日志管理工具
  • fluentd:统一日志收集层
  • filebeat:轻量级日志收集器

故障排查流程:

  1. 确认问题发生时间
  2. 查看系统主日志(/var/log/messages 或 /var/log/syslog)
  3. 查看相关服务日志
  4. 使用 grep 搜索错误信息
  5. 分析日志上下文
  6. 结合其他监控工具(top、vmstat、iostat)综合判断
标签:Linux