十九.分析和排查系统故障
- 日志消息的级别
- 0 EMERG:紧急
- 1 ALERT:警告
- 2 CRLT:严重
- 3 ERR:错误
- 4 WARNING:提醒
- 5 NOTICE:注意
- 6 INFO:信息
- 7 DEBUG:调式
1.日志的功能
用于记录系统、程序运行中发生的各种事件
通过阅读日志,有助于诊断和解决系统故障
2.日志文件的分类
内核及系统日志
由系统服务rsyslog统一进行管理,日志格式基本相似
用户日志
记录系统用户登录及退出系统的相关信息
程序日志
由各种应用程序独立管理的日志文件,记录格式不统一
3.日志保存位置
默认位于:/var/log 目录下
4.主要日志文件介绍
内核及系统日志
/var/log/messages
计划任务日志
/var/log/cron
系统引导日志
/var/log/dmesg
邮件系统日志
/var/log/maillog
用户登录日志
/var/log/lastlog:最近的用户登录事件
/var/log/wtmp:用户成功登录、注销及系统开、关机事件,对应命令 last
/var/log/btmp: 用户失败登录,错误验证尝试事件,对应命令 lastb
/var/run/utmp:当前登录的每个用户的详细信息,对应查看命令 users who w
/var/log/secure:与用户验证相关的安全性事件
5.日志配置文件
/etc/rsyslog.conf
*.info #任何服务info级别及以上日志
mail.none #例外,不记录
6.日志级别
0 EMERG(紧急/疼痛):会导致主机系统不可用的情况
1 ALERT(警告):必须马上采取措施解决的问题
2 CRIT(严重):比较严重的情况
3 ERR(错误):运行出现错误
4 WARNING(提醒):可能会影响系统功能的事件
5 NOTICE(注意):不会影响系统但值得注意
6 INFO(信息):一般信息
7 DEBUG(调试):程序或系统调试信息等
7.日志一般格式
Jun 3 13:26:35 localhost vmusr[2439]: [critical] [GLib-GObject]
时间标签 主机 子系统名 日志级别和信息
8.程序日志
由相应的应用程序独立进行管理
Web服务:/var/log/httpd/
access_log、error_log
代理服务:/var/log/squid/
access.log、cache.log、
9.分析工具
文本查看、grep过滤检索、Webmin管理套件中查看
awk、sed等文本过滤、格式化编辑工具
Webalizer、Awstats等专用日志分析工具
10.日志管理策略
及时作好备份和归档
延长日志保存期限
控制日志访问权限:日志中可能会包含各类敏感信息,如账户、口令等
集中管理日志:
将服务器的日志文件发到统一的日志文件服务器(ELK)
便于日志信息的统一收集、整理和分析
杜绝日志信息的意外丢失、恶意篡改或删除
11.MBR故障修复
Mbr扇区
引导程序GRUB 446
分区表 64
结束标志 2
故障原因:
病毒、木马等造成的破坏
不正确的分区操作、磁盘读写误操作
故障现象:
找不到引导程序,启动中断
无法加载操作系统,开机后黑屏
解决思路:
应提前作好备份文件
以 CentOS 7安装光盘引导进入急救模式
从备份文件中恢复
Mbr扇区故障模拟:
1.添加新硬盘: 分区 fdisk /dev/sdb 格式化 mkfs.xfs /dev/sdb1 挂载到 mount /dev/sdb1 /bak
2.备份mbr扇区:dd if=/dev/sda of=/bak/mbr.bak bs=512 count=1
3.模拟故障:dd if=/dev/zero of=/dev/sda bs=512 count=1
4.重启:观察现象
排除故障
1)挂系统盘,进入急救模式 3--2-1
2)重新挂载:mount /dev/sdb1 /aa
3)恢复:dd if=/aa/mbr.bak of=/dev/sda bs=512 count=1
4)exit
12.修复 GRUB 引导故障
故障原因:
MBR 中的 GRUB 引导程序遭到破坏
grub.conf 文件丢失、引导配置有误
故障现象:
系统引导停滞,显示“grub>” 提示符
解决思路:
尝试手动输入引导命令
进入急救模式,重写或者从备份中恢复 grub.conf
向 MBR 扇区中重建 grub 程序
模拟grub引导故障
1.cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
2.Rm -f /boot/grub/grub.cfg
3.Reboot
解决grub引导故障
插入系统盘,光盘启动
进入急救模式
chroot /mnt/sysimage
cp /boot/grub/grub.cfg.bak /boot/grub/grub.cfg
13.修复文件系统
故障原因
非正常关机、突然断电、设备读写失误等
文件系统的超级块(super-block)信息被破坏
故障现象
无法向分区中读取或写入数据
启动后提示“Give root password for maintenance”
解决思路
根据提示输入 root 口令,进入修复状态
使用xfs_repair命令进行修复
模拟故障:
破坏: 创建分区、格式化,先不要挂载
dd if=/dev/zero of=/dev/sdb1 bs=512 count=4
修复:xfs_repair /dev/sdb1
14.硬盘i节点耗尽
故障原因
磁盘空间已被大量的数据占满,空间耗尽
虽然还有可用空间,但文件数i节点耗尽
故障现象
无法写入新的文件,提示“… : 设备上没有空间”
部分程序无法运行,甚至系统无法启动
解决思路
清理磁盘空间,删除无用、冗余的文件
转移或删除占用大量 i 节点的琐碎文件
进入急救模式进行修复
为用户设置磁盘配额
模拟故障:
添加一块硬盘
划分一个100M的分区,格式化,挂载到/data目录下
df -i /data (查看i节点的数量)
vim killnode.sh
#!/bin/bash
i=1
while [ $i -le 前面查到的i节点数 ]
do
touch /data/file$i
let i++
done
sh killnode.sh &
15.磁盘坏道
故障原因
磁盘设备中存在坏道(逻辑的或物理的)
故障现象
读取磁盘中的数据时,磁盘设备发出异常声响。
访问磁盘中的某个文件时,反复读取且出错,提示文件损坏
对于新建立的分区无法完成格式化
系统使用该磁盘时频繁死机
解决思路
检测硬盘中是否存在坏道
修复硬盘,或更换新的硬盘
badblocks -sv /dev/sdb
make方法
make clean #清除上一次make命令生成的文件
make distclean #清除上一次make以及configure命令生成的文件
make -j 4 #使用4进程同时编译,提升编译速度
XFS增量备份
语法:xfsdump -f 备份目标位置 备份目录(挂载目录或磁盘分区)
提示:编写标签,第一次为会话标签,第二次为设备标签
免交互备份:
语法:xfsdump -f 存放位置 备份目录 -L 会话标签 -M 设备标签
xfsdump -f /opt/dump_sda1 /dev/sda1 -L dump_sda1 -M sda1_is
指定只备份分区中某个目录
参数:-s 文件路径 只能指定的问价进行备份,-s指定时,路径写的是相对路径(-s可以是文件或目录)
格式:xfsdump -f /opt/233_dump -s 233.txt /dev/sdb1 -L dump_233 -M sdb1
查看备份记录
xfsdump -I
文件系统恢复
语法:xfsrestore -f 指定恢复文件的位置 指定存放恢复后的文件的路径
恢复单个文件
语法:xfsrestore -f 恢复文件路径 -s 恢复文件 恢复目录
增量备份
先备份完整备份
语法:xfsdump -l 1 -f 备份保存位置 备份文件
-l 做一个等级为1的备份
恢复增量备份
语法:xfsrestore -f 恢复文件 恢复目标位置
注:按顺序恢复增量备份,恢复数据会不完整
windows文本文件上传到Linux上出现乱码
解决:
格式:iconv -f gb2312 -t utf8 乱码文件 -o 转换为的名称
在Linux上编写的shell脚本到windowx上出现没有换行
解决:
工具:dos2unix unix2dos等工具
格式: dos2unix Linux上的shell文件
使用远程xshell命令上传文件和下传文件
注:需要rz工具下载,只可以用于远程工具连接
rz本地上传文件 sz下传文件
系统监控
proc文件系统
和整个Linux系统相关的参数如下:
/proc/cmdline:加载kernal时的相关指令与参数
/proc/cpuinfo:CPU相关的信息,包括频率,类型与运算能力
/proc/devices:记录了系统各个主要设备的主设备号码
/proc/filesystems:记录系统加载的文件系统
/proc/loadavg:平均负载值top看到的
/proc/meminfo:内存信息,free命令查看的
/proc/modules:系统已经加载的模块
/proc/mounts:系统已经挂载的数据
/proc/partitons:系统的分区文件
/proc/version:系统的核心版本uname -a看到的内容常用的系统监视命令:
- uptime
显示顺序:现在的时间,系统运行时间,目前多少登录用户,系统在过去一分钟,5分钟,15分钟内的平均负载。
[root@localhost 1]# uptime
07:32:01 up 15 min, 1 user, load average: 0.00, 0.01, 0.02
- free
显示当前系统未使用和已经使用的内存数目。 [root@localhost 1]# free -h total used free shared buff/cache available Mem: 976M 79M 761M 7.0M 135M 745M Swap: 2.0G 0B 2.0G ———————————————— 版权声明:本文为CSDN博主「努力买大G」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/yuan130625/article/details/132405150
- vmstat
显示虚拟内存状态,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。 [root@localhost 1]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 779916 896 138060 0 0 93 5 44 111 0 0 100 0 0 ———————————————— 版权声明:本文为CSDN博主「努力买大G」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/yuan130625/article/details/132405150
- mpstat
最大特点:可以查看CPU中每个计算机核心的统计数据。
注:需要安装sysstat
- iostat
用于监视系统输入输出设备和CPU的使用情况。能查看到系统IO情况信息,从而确定IO性能是否存在瓶颈。
- sar
sar是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况,系统调用的使用情况,磁盘I/O,CPU效率,内存使用情况,进程活动及IPC有关的活动等。
sar命令常用格式:sar [options] [-A] [-o file] t [n] 其中:
t为采样间隔,n为采样次数,默认值是1;
-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。
options 为命令行选项,sar命令常用选项如下:
-A:所有报告的总和
-u:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息