本文档风哥主要介绍Linux系统中日志文件筛选与分析的基础命令,包括日志文件的概念、日志文件的类型、日志文件的查看、筛选、分析等功能,参考RHEL 10官方文档内容,适合Linux运维人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 日志文件的概念
日志文件是Linux系统中记录系统事件、应用程序运行状态、错误信息等的重要文件。日志文件可以帮助用户了解系统运行状态,排查故障,监控系统安全。更多视频教程www.fgedu.net.cn
- 记录系统事件
- 记录应用程序状态
- 记录错误信息
- 记录安全事件
- 支持日志轮转
1.2 日志文件的类型
日志文件的类型:
- 系统日志:/var/log/messages
- 安全日志:/var/log/secure
- 内核日志:/var/log/dmesg
- 引导日志:/var/log/boot.log
- 应用程序日志:/var/log/app.log
1.3 日志文件分析的重要性
日志文件分析的重要性:
- 故障排查:快速定位故障原因
- 性能分析:分析系统性能
- 安全审计:审计安全事件
- 趋势分析:分析系统趋势
- 容量规划:规划系统容量
Part02-生产环境规划与建议
2.1 日志文件分析规划
日志文件分析规划要点:
– 确定日志文件位置
– 确定日志文件格式
– 确定分析目标
– 确定分析方法
– 确定分析工具
# 常用日志文件
– /var/log/messages: 系统日志
– /var/log/secure: 安全日志
– /var/log/dmesg: 内核日志
– /var/log/boot.log: 引导日志
– /var/log/cron: 定时任务日志
2.2 日志文件分析最佳实践
日志文件分析最佳实践:
– 定期查看日志文件
– 使用合适的分析工具
– 建立日志分析流程
– 记录分析结果
– 定期总结分析经验
# 分析流程
1. 确定分析目标
2. 选择日志文件
3. 查看日志内容
4. 筛选关键信息
5. 分析问题原因
6. 制定解决方案
7. 验证解决效果
8. 记录分析结果
2.3 日志文件安全配置
日志文件安全配置建议:
- 设置日志文件权限:设置适当的日志文件权限
- 配置日志轮转:配置日志轮转策略
- 配置日志备份:配置日志备份策略
- 配置日志归档:配置日志归档策略
- 配置日志监控:配置日志监控告警
Part03-生产环境项目实施方案
3.1 日志文件查看命令
3.1.1 使用cat命令查看日志
# cat /var/log/messages
Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
Apr 2 10:00:02 localhost systemd: Started Session 1 of user root.
# 2. 查看日志文件前N行
# head -20 /var/log/messages
Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
Apr 2 10:00:02 localhost systemd: Started Session 1 of user root.
# 3. 查看日志文件后N行
# tail -20 /var/log/messages
Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
Apr 2 10:00:02 localhost systemd: Started Session 1 of user root.
# 4. 查看日志文件行号
# cat -n /var/log/messages | head -20
1 Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
2 Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
3 Apr 2 10:00:02 localhost systemd: Started Session 1 of user root.
3.1.2 使用tail命令实时查看日志
# tail -f /var/log/messages
Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
Apr 2 10:00:02 localhost systemd: Started Session 1 of user root.
# 2. 实时查看日志文件后N行
# tail -f -n 20 /var/log/messages
Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
Apr 2 10:00:02 localhost systemd: Started Session 1 of user root.
# 3. 实时查看多个日志文件
# tail -f /var/log/messages /var/log/secure
==> /var/log/messages <==
Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
==> /var/log/secure <==
Apr 2 10:00:00 localhost sshd[1234]: Accepted password for root from 192.168.1.1 port 22
Apr 2 10:00:01 localhost sshd[1235]: Accepted password for root from 192.168.1.2 port 22
3.2 日志文件筛选命令
3.2.1 使用grep命令筛选日志
# grep “error” /var/log/messages
Apr 2 10:00:00 localhost kernel: error: something went wrong
Apr 2 10:00:01 localhost systemd: error: service failed
# 2. 筛选包含特定关键字的日志(忽略大小写)
# grep -i “error” /var/log/messages
Apr 2 10:00:00 localhost kernel: ERROR: something went wrong
Apr 2 10:00:01 localhost systemd: Error: service failed
# 3. 筛选包含特定关键字的日志(显示行号)
# grep -n “error” /var/log/messages
100:Apr 2 10:00:00 localhost kernel: error: something went wrong
200:Apr 2 10:00:01 localhost systemd: error: service failed
# 4. 筛选包含特定关键字的日志(显示匹配行数)
# grep -c “error” /var/log/messages
10
# 5. 筛选包含特定关键字的日志(反向匹配)
# grep -v “info” /var/log/messages
Apr 2 10:00:00 localhost kernel: error: something went wrong
Apr 2 10:00:01 localhost systemd: error: service failed
3.2.2 使用grep命令高级筛选
# grep -E “error|warning” /var/log/messages
Apr 2 10:00:00 localhost kernel: error: something went wrong
Apr 2 10:00:01 localhost systemd: warning: service restart
# 2. 筛选包含特定时间范围的日志
# grep “Apr 2 10:00” /var/log/messages
Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
# 3. 筛选包含特定主机的日志
# grep “localhost” /var/log/messages
Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
# 4. 筛选包含特定进程的日志
# grep “systemd” /var/log/messages
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
Apr 2 10:00:02 localhost systemd: Started Session 1 of user root.
# 5. 筛选包含特定PID的日志
# grep “1234” /var/log/messages
Apr 2 10:00:00 localhost sshd[1234]: Accepted password for root from 192.168.1.1
Apr 2 10:00:01 localhost sshd[1234]: session opened for user root
3.3 日志文件分析命令
3.3.1 使用awk命令分析日志
# awk ‘END {print NR}’ /var/log/messages
1000
# 2. 统计日志文件中特定关键字的次数
# awk ‘/error/ {count++} END {print count}’ /var/log/messages
10
# 3. 提取日志文件中的特定字段
# awk ‘{print $1, $2, $3, $5}’ /var/log/messages | head -10
Apr 2 10:00:00 localhost kernel
Apr 2 10:00:01 localhost systemd
Apr 2 10:00:02 localhost systemd
# 4. 统计日志文件中每个主机的日志数量
# awk ‘{count[$4]++} END {for (host in count) print host, count[host]}’ /var/log/messages
localhost 1000
192.168.1.1 100
192.168.1.2 50
# 5. 统计日志文件中每个进程的日志数量
# awk ‘{count[$5]++} END {for (proc in count) print proc, count[proc]}’ /var/log/messages | head -10
systemd 500
kernel 300
sshd 100
nginx 50
3.3.2 使用sed命令分析日志
# sed ‘/^$/d’ /var/log/messages
Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
# 2. 删除日志文件中的注释行
# sed ‘/^#/d’ /var/log/messages
Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
# 3. 替换日志文件中的特定字符串
# sed ‘s/error/ERROR/g’ /var/log/messages | head -10
Apr 2 10:00:00 localhost kernel: ERROR: something went wrong
Apr 2 10:00:01 localhost systemd: ERROR: service failed
# 4. 提取日志文件中的特定行
# sed -n ‘100,200p’ /var/log/messages
Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
# 5. 删除日志文件中的特定行
# sed ‘100,200d’ /var/log/messages
Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
Part04-生产案例与实战讲解
4.1 日志文件分析高级用法
# cat /var/log/messages | grep “error” | awk ‘{print $1, $2, $3, $5}’ | sort | uniq -c | sort -rn | head -10
5 Apr 2 10:00:00 kernel
3 Apr 2 10:00:01 systemd
2 Apr 2 10:00:02 nginx
# 2. 使用find命令查找并分析日志
# find /var/log -name “*.log” -exec grep “error” {} + | awk ‘{print $1, $2, $3, $5}’ | sort | uniq -c | sort -rn | head -10
5 Apr 2 10:00:00 kernel
3 Apr 2 10:00:01 systemd
2 Apr 2 10:00:02 nginx
# 3. 使用xargs命令批量分析日志
# find /var/log -name “*.log” | xargs grep “error” | awk ‘{print $1, $2, $3, $5}’ | sort | uniq -c | sort -rn | head -10
5 Apr 2 10:00:00 kernel
3 Apr 2 10:00:01 systemd
2 Apr 2 10:00:02 nginx
# 4. 使用sort命令排序日志
# sort /var/log/messages | head -10
Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
# 5. 使用uniq命令去重日志
# sort /var/log/messages | uniq -c | head -10
5 Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
3 Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
4.2 日志文件分析故障排查
# 分析步骤:
# 1. 检查日志文件是否存在
# ls -l /var/log/messages
-rw——-. 1 root root 123456 Apr 2 10:00 /var/log/messages
# 2. 检查日志文件权限
# ls -l /var/log/messages
-rw——-. 1 root root 123456 Apr 2 10:00 /var/log/messages
# 3. 检查日志文件大小
# ls -lh /var/log/messages
-rw——-. 1 root root 121K Apr 2 10:00 /var/log/messages
# 4. 检查日志文件内容
# head -10 /var/log/messages
Apr 2 10:00:00 localhost kernel: Linux version 5.14.0-70.el9.x86_64
Apr 2 10:00:01 localhost systemd: Started User Manager for UID 0.
# 5. 检查日志文件格式
# file /var/log/messages
/var/log/messages: ASCII text
# 6. 检查日志文件编码
# file -i /var/log/messages
/var/log/messages: text/plain; charset=utf-8
4.3 日志文件分析问题解决方案
日志文件分析问题的常见解决方案:
- 日志文件无法查看:检查日志文件权限
- 日志文件过大:配置日志轮转
- 日志文件格式错误:检查日志文件格式
- 日志文件编码错误:检查日志文件编码
- 日志文件损坏:恢复日志文件
Part05-风哥经验总结与分享
5.1 日志文件分析使用经验
日志文件分析使用经验总结:
- 定期查看:定期查看日志文件
- 使用工具:使用合适的分析工具
- 建立流程:建立日志分析流程
- 记录结果:记录分析结果
- 总结经验:定期总结分析经验
5.2 日志文件分析检查清单
日志文件分析检查清单:
- 检查日志文件是否存在:ls -l /var/log/messages
- 检查日志文件权限:ls -l /var/log/messages
- 检查日志文件大小:ls -lh /var/log/messages
- 检查日志文件内容:head -10 /var/log/messages
- 检查日志文件格式:file /var/log/messages
- 检查日志文件编码:file -i /var/log/messages
5.3 日志文件分析相关工具
日志文件分析相关工具:
- cat命令:查看日志文件
- tail命令:实时查看日志文件
- grep命令:筛选日志文件
- awk命令:分析日志文件
- sed命令:处理日志文件
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
