Appearance
第15章:日志管理
15.1 日志文件的位置
系统日志目录
- /var/log/:系统日志文件的默认存储位置
- 常见日志文件:
syslog:系统日志auth.log:认证日志(Ubuntu/Debian)secure:安全日志(CentOS/RHEL)messages:系统消息日志(CentOS/RHEL)kern.log:内核日志boot.log:启动日志cron.log:定时任务日志dpkg.log:包管理日志(Ubuntu/Debian)yum.log:包管理日志(CentOS/RHEL)
应用程序日志
Web服务器日志:
- Apache:
/var/log/apache2/ - Nginx:
/var/log/nginx/
- Apache:
数据库日志:
- MySQL:
/var/log/mysql/ - PostgreSQL:
/var/log/postgresql/
- MySQL:
其他应用日志:
- Docker:
/var/log/docker/ - Samba:
/var/log/samba/
- Docker:
15.2 查看系统日志、错误日志
使用cat命令查看日志
查看完整日志文件:
bash$ cat /var/log/syslog查看日志文件的最后几行:
bash$ tail /var/log/syslog $ tail -n 50 /var/log/syslog # 查看最后50行实时查看日志:
bash$ tail -f /var/log/syslog # 实时跟踪日志
使用grep命令搜索日志
搜索包含特定关键词的日志:
bash$ grep "error" /var/log/syslog # 搜索包含error的日志 $ grep -i "error" /var/log/syslog # 忽略大小写 $ grep -n "error" /var/log/syslog # 显示行号搜索特定时间的日志:
bash$ grep "May 20" /var/log/syslog # 搜索5月20日的日志
使用journalctl命令查看systemd日志
查看所有日志:
bash$ sudo journalctl查看特定服务的日志:
bash$ sudo journalctl -u sshd # 查看SSH服务日志查看最近的日志:
bash$ sudo journalctl -n 100 # 查看最近100条日志实时查看日志:
bash$ sudo journalctl -f # 实时跟踪日志查看特定时间范围的日志:
bash$ sudo journalctl --since "2023-05-20 00:00:00" --until "2023-05-20 23:59:59"
15.3 通过日志排查系统故障
常见故障排查
启动故障
查看启动日志:
bash$ sudo journalctl -b # 查看当前启动的日志 $ sudo journalctl -b -1 # 查看上一次启动的日志检查启动失败的服务:
bash$ sudo systemctl list-units --state=failed查看具体服务的启动日志:
bash$ sudo journalctl -u 服务名
网络故障
查看网络相关日志:
bash$ grep "network" /var/log/syslog $ sudo journalctl -u NetworkManager查看DHCP相关日志:
bash$ grep "dhcp" /var/log/syslog
认证故障
查看认证日志:
- Ubuntu/Debian:bash
$ cat /var/log/auth.log - CentOS/RHEL:bash
$ cat /var/log/secure
- Ubuntu/Debian:
搜索登录失败记录:
bash$ grep "Failed" /var/log/auth.log
应用程序故障
查看应用程序日志:
- Nginx:bash
$ cat /var/log/nginx/error.log - Apache:bash
$ cat /var/log/apache2/error.log
- Nginx:
搜索应用程序错误:
bash$ grep "error" /var/log/nginx/error.log
日志分析技巧
关注错误关键词:
- error
- failed
- denied
- cannot
- permission
- timeout
查看时间戳:
- 确认故障发生的具体时间
- 分析故障发生的顺序
关联多个日志文件:
- 系统日志与应用日志结合分析
- 不同服务的日志相互关联
使用日志分析工具:
logwatch:日志分析工具logrotate:日志轮转管理- ELK Stack(Elasticsearch, Logstash, Kibana):企业级日志分析平台
实战练习:日志管理
查看系统日志:
bash$ tail -n 50 /var/log/syslog搜索系统错误:
bash$ grep "error" /var/log/syslog | tail -n 20查看认证日志:
- Ubuntu/Debian:bash
$ tail -n 50 /var/log/auth.log - CentOS/RHEL:bash
$ tail -n 50 /var/log/secure
- Ubuntu/Debian:
使用journalctl查看日志:
bash$ sudo journalctl -n 100 $ sudo journalctl -u sshd -n 50实时查看日志:
bash$ tail -f /var/log/syslog查看启动日志:
bash$ sudo journalctl -b搜索特定时间的日志:
bash$ grep "$(date +"%b %d")" /var/log/syslog
通过学习日志管理,你将能够查看和分析系统日志,及时发现和排查系统故障,确保系统的稳定运行。日志是系统的"黑匣子",掌握日志管理技能对于系统管理员来说非常重要。
