一、运维工作中的事件
https://www.51cto.com/article/687753.html
二、运维故障排查
一)故障排查步骤
1、明确故障
- 故障现象的直接表现
- 故障发生的时间、频率
- 故障发生影响哪些系统
- 故障发生是否有明确的触发条件
故障举例:无法通过ssh登录系统
影响因素
- ssh(用户态应用)登录不到服务器用户态也会报一些信息
- 网络软件和硬件
- 操作系统:CPU、内存、磁盘IO等
2、信息收集
- 故障发生前后所有与之直接相关的信息,包括但不限于配置、日志、屏显
- 故障发生前后与之间相关的子模块的信息
- 尽量区分信息的重要程度,以免信息过载造成对故障产生负面作用
重要日志项
- /var/log/messages ---- 多数的系统日志和内核日志
- /var/log/secure ---- 安全相关日志,如sshd,login,pam
- /var/log/dmesg ---- 内核日志
- /var/log/boot.log ---- 启动屏显
- /var/log/cron ---- 计划任务日志
- /var/log/btmp ---- last 日志
- /var/log/sa/ ---- sar 历史性能能日志
- 应用层日志
红帽操作系统特有的
#安装sos软件包
yum install sos
#运行sosreport --batch
#全面的系统信息tar包位置
rhel6:/tmp/sosreport-*
rhel7:/var/tmp/sosreport-*
3、提出假设和推断
- 基于对系统的深刻理解,对信息的综合分析,结合症状提出合理的、具体的假设
- 分解排除
- 分层模型,自下而上
- 模快化
- 发散思维
- 对比
4、验证假设
- 一次验证只考虑一种故障因素的组合
- 记录验证结果,可能产生新的线索
- 反复验证所有可能的因素组合
二)故障解决
- 故障归档:
- 故障现象
- 故障环境
- 根本原因
- 解决办法等
- 改进方法:避免再发生
三)故障排查需要的能力
- 对系统和架构的深入理解
- 善用工具
- 严密的逻辑思维
- 对信息的筛选
- 发散思维
- 运气
四)寻求帮助
1、以RedHat操作系统为例
- https://access.redhat.com/ 受限
- 800远程支持:电话交流或提交case,附带sosreport
- GPS红帽服务和咨询团队
- Google查询解决办法(有辨别度)
man命令介绍
# 安装man包
yum install man-pages
# man man
# man -k <关键字>
# man文档类型
1 Executable programs or shell commands 可执行工具的使用文档
2 System calls (functions provided by the kernel) 系统调用接口文档
3 Library calls (functions within program libraries) libc接口文档
4 Special files (usually found in /dev) 特殊文件说明文档
5 File formats and conventions, e.g. /etc/passwd 配置文件格式说明
6 Games
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8 System administration commands (usually only for root)
9
五)举例一:硬件故障排查
1、硬件故障现象举例
- 磁盘掉盘或者大量IO error
- 网卡灯不亮,或网卡丢包严重影响到应用层面
- 硬件日志报警
2、识别硬件
读取bios信息
dmidecode
识别CPU
lscpu
/proc/cpuinfo
识别内存
dmidecode -t memory
free
/proc/meminfo
识别pci设备
lspci
识别scsi设备
lsscsi
识别block设备
lsblk
3、驱动程序
列出所有加载模块
lsmod
查看模块信息
modinfo
模块加载/卸载
modprobe
模块日志
dmesg
4、排查手段
- 排查硬件日志,硬件状态,检查bios信息
- RAS(reliablity(可靠性)、availability(可用性)、serviceability(安全性))特性
- 需要硬件厂商支持,硬件和驱动
- rasdaemon(rhel7/8)
- 日志输出到/var/log/messages
- 检查/var/log/messages和dmesg
- 检查驱动
- 硬件厂商提供的驱动
- 操作系统kernel中提供的驱动
5、常见硬件故障的日志形态
- HBA卡链路故障
- 日志样例如图:
- 磁盘IO故障
- 日志样例如图:
- MCE故障
- 日志样例如图:
六)举例二:启动故障排查
1、启动故障举例(清楚系统启动的细节(顺序))
- 找不到启动盘
- 在grub菜单过后 kernel panic
- 文件系统挂载失败
- 服务启动阶段长时间卡住
2、启动流程
- BIOS POST开机自检
- BIOS扫描启动盘(直通、阵列卡、网卡、光纤卡、CD)
- 感知到MBR( 主引导记录(MBR,Master Boot Record)),以及bootable分区
- stage 1(MBR) > stage 1.5(boot文件系统驱动) > stage 2 (grub boot loader启动读取grub.conf)
- 载入vmlinuz和initramfs
- 载入硬件驱动,初始化磁盘,lvm和根文件系统
- sysV/systemd启动管理器开始运行,挂载文件系统,初始化网络,继续进行服务启动
3、排查手段
- 单用户模式
- 适合排查初始引导过后的sytemd启动阶段故障
- 救援模式
- 适合排查引导盘存储故障
- rd.break模式
- 适合排查初始化引导阶段故障
- 云环境,将主机的系统盘挂载到其他云主机上,修改文件内容
4、常见的启动故障的日志形态
- 根盘LVM故障
- boot image故障
- fstab故障
七)举例三:文件系统故障
1、文件系统故障
- 文件系统满
- 文件系统只读
- 文件系统空间未释放
- lsof | grep -i deleted
- 若是误删的情况,可以通过cp /proc/$pid/fd/删除内容到指定目录下
- 文件系统脏
2、关于空间未释放问题
- 文件的open与close
- df vs du
- 释放空间的小技巧
- echo > /path/to/file
- true > /path/to/file
- 误删文件后恢复的小技巧
- 文件仍被open状态,文件会保存到/proc/$pid/fd
3、常见文件系统故障的日志形态
xfs元数据故障