运维工作中的事件、故障排查处理思路
一、运维工作中的事件
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操作系统为例
- Red Hat Customer Portal - Access to 24x7 support and knowledge 受限
- 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 Games7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)8 System administration commands (usually only for root)9 Kernel routines [Non standard]
五)举例一:硬件故障排查
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元数据故障

八)举例四:网络性能分析
1、网络性能分析项
- 主机侧
- 网络配置查看
- 监控
- 网络链路
- 包转发时延
- 吞吐量
- 带宽
- 等指标
2、性能分析工具
-
ping:测试网络连通性
-
ifconfig:接口配置
-
ip:网络接口统计信息
-
netsat:多种网络栈和接口统计信息
-
ifstat:接口网络流量监控工具
-
netcat (nc):快速构建网络连接
-
tcpdump:抓包工具
- Wireshark:网络封包分析工具
-
sar:统计信息历史
-
traceroute:测试网络路由
-
pathchar:确定网络路径特征
- trace:跟踪进程执行时的系统调用和所接收的信号 linux trace命令详解-CSDN博客
-
dtrace:TCP/IP 栈跟踪
-
iperf / netperf / netserver:网络性能测试工具
-
perf 性能分析神器
详见:Linux中如何进行网络性能分析 - 系统运维 - 亿速云
九)举例五:应用debug的方法
1、shell
bash -x 断点
2、python
pdb
3、Java
Jvm heap dump Thread dump
4、C/C++
操作系统的核心
gdb
十)举例六:操作系统崩溃分析
1、kexec vs kdump
- kexec是一种热启动机制,能够跳过耗时较长的BIOS启动阶段,直接启动新的内核,这个新的内核叫capture kernel
- kdump是利用了kexec的特性,通过在内存预留区域放置了capture kernel的image,在特定条件下触发启动capture kerne,并把crash的诶村镜像抽取保存
- 不是所有的crash都触发kdump,需要在内核执行路径上执行panic()
2、kdump配置
- grub.cfg中指明内存预留空间
- “crashkernel=xxM”:让crashkernel运行起来(机器越大,硬件(外设)越多,使用的内存越多,建议值256/512M)
- “crashkernel=auto”:虚拟机设置设置此值没问题
- 指定dump文件的存放位置,默认在/var/crash,支持nfs,ssh或外部存储
- dump文件并非把整个内存都收集,而是必须必要数据,剔除多余数据,并运行适当压缩
3、kdump测试
利用kernel的sysrq特性产生kernel dump
- 配置:sysctl.conf 中 kernel.sysrq=1
- 测试方法:
- echo c > /proc/sysrq-trigger #机器立即宕机(c是crash)
-
- 键盘可操作:Alt+prtsc+c
- 硬件bmc触发dump(硬件厂商:硬件安装bmc的驱动程序)
4、kdump触发事件
什么情况下会触发kdump?
sysctl -a|grep panic
- oom:内存溢出,将机器干掉
- Hung process:进程120s hang住
- Nmi:硬件不可信(不可屏蔽故障)
- Soft lookup:死锁的环境
- other oops
相关文章:
运维工作中的事件、故障排查处理思路
一、运维工作中的事件 https://www.51cto.com/article/687753.html 二、运维故障排查 一)故障排查步骤 1、明确故障 故障现象的直接表现故障发生的时间、频率故障发生影响哪些系统故障发生是否有明确的触发条件 故障举例:无法通过ssh登录系统 影响…...
深入源码P3C-PMD:使用流程(1)
PMD开源组件启动流程介绍 在软件开发领域,代码质量是项目成功的关键因素之一。为了提升代码质量,开发者们常常借助各种工具进行代码分析和检查。PMD作为一款开源的静态代码分析工具,在Java、JavaScript、PLSQL等语言项目中得到了广泛应用。本…...
java~反射
反射 使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码) 原理图 加载完类后,在堆中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对…...
【Linux】(26) 详解磁盘与文件系统:从物理结构到inode机制
目录 1.认识磁盘、 1.1 理论 1.2 磁盘的物理结构 CHS 寻址 1.3 磁盘的逻辑抽象结构 2. inode 结构 1.Boot Block 启动块 2.Super Block(超级块) 3.Group Descriptor Block(块组描述符) 4.Data Blocks (数据块) 5.Inode…...
8.1 字符串中等 43 Multiply Strings 38 Count and Say
43 Multiply Strings【默写】 那个难点我就没想先解决,原本想法是先想其他思路,但也没想出。本来只想chat一下使用longlong数据类型直接stoi()得不得行,然后就看到了答案,直接一个默写的大动作。但这道题确实考察的是还原乘法&…...
upload-labs靶场:1—10通关教程
目录 Pass-01(JS 验证) Pass-02(MIME) Pass-03(黑名单绕过) Pass-04(.htaccess 绕过) Pass-05(大小写绕过) Pass-06(空格绕过) …...
Hive3:一键启动、停止、查看Hive的metastore和hiveserver2两个服务的脚本(好用)
脚本内容 #!/bin/bash # 一键启动、停止、查看Hive的metastore和hiveserver2两个服务的脚本 function start_metastore {# 启动Hive metastore服务hive --service metastore >/dev/null 2>&1 &for i in {1..30}; doif is_metastore_running; thenecho "Hiv…...
遗传算法与深度学习实战——生命模拟及其应用
遗传算法与深度学习实战——生命模拟及其应用 0. 前言1. 康威生命游戏1.1 康威生命游戏的规则1.2 实现康威生命游戏1.3 空间生命和智能体模拟 2. 实现生命模拟3. 生命模拟应用小结系列链接 0. 前言 生命模拟是进化计算的一个特定子集,模拟了自然界中所观察到的自然…...
大数据|使用Apache Spark 删除指定表中的指定分区数据
文章目录 概述方法 1: 使用 Spark SQL 语句方法 2: 使用 DataFrame API方法 3: 使用 Hadoop 文件系统 API方法 4: 使用 Delta Lake使用注意事项常见相关问题及处理结论 概述 Apache Spark 是一个强大的分布式数据处理引擎,支持多种数据处理模式。在处理大型数据集时…...
OSPF动态路由协议实验
首先地址划分 一个骨干网段分成三个,r1,r2,r5三个环回网段 ,总共要四个网段 192.168.1.0/24 192.168.1.0/26---骨干网段 192.168.1.0/28 192.168.1.16/28 192.168.1.32/28 备用 192.168.1.64/28 192.168.1.64/26---r1环回 192.1…...
tcp中accept()的理解
源码 参数理解 NAMEaccept, accept4 - accept a connection on a socketSYNOPSIS#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);#define _GNU_SOURCE …...
让我们逐行重现 GPT-2:第 1 部分
欢迎来到雲闪世界。Andrej Karpathy 是人工智能 (AI) 领域的顶尖研究人员之一。他是 OpenAI 的创始成员之一,曾领导特斯拉的 AI 部门,目前仍处于 AI 社区的前沿。 在第一部分中,我们重点介绍如何实现 GPT-2 的架构。虽然 GPT-2 于 2018 年由 …...
第十九天内容
上午 1、构建vue发行版本 2、java环境配置 jdk软件包路径: https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.tar.gz 下午 1、安装tomcat软件 tomcat软件包路径: https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.26/bin/apache-to…...
Hive之扩展函数(UDF)
Hive之扩展函数(UDF) 1、概念讲解 当所提供的函数无法解决遇到的问题时,我们通常会进行自定义函数,即:扩展函数。Hive的扩展函数可分为三种:UDF,UDTF,UDAF。 UDF:一进一出 UDTF:一进多出 UDAF:…...
jdk1.8中HashMap为什么不直接用红黑树
最开始使用链表的时候,空间占用比较少,而且由于链表短,所以查询时间也没有太大的问题。可是当链表越来越长,需要用红黑树的形式来保证查询的效率。 参考资料: https://blog.51cto.com/u_13294304/3075723...
消息推送只会用websocket、轮询?试试SSE,轻松高效。
SSE介绍 HTTP Server-Sent Events (SSE) 是一种基于 HTTP 的服务器推送技术,它允许服务器向客户端推送数据,而无需客户端发起请求。以下是 HTTP SSE 的主要特点: 单向通信: SSE 是一种单向通信协议,服务器可以主动向客户端推送数据,而客户端只能被动接收数据。 持久连接: SS…...
Spring-Retry 框架实战经典重试场景
Spring-Retry框架是Spring自带的功能,具备间隔重试、包含异常、排除异常、控制重试频率等特点,是项目开发中很实用的一种框架。 1、引入依赖 坑点:需要引入AOP,否则会抛异常。 xml <!-- Spring-Retry --> <dependency&…...
人工智能在医疗领域的应用与挑战
随着人工智能技术的不断发展,其在医疗领域的应用也越来越广泛。从辅助诊断到治疗决策,人工智能正在逐步改变着传统的医疗模式。然而,人工智能在医疗领域的应用也面临着诸多挑战,如数据隐私、伦理道德等问题。本文将探讨人工智能在…...
Windows下nmap命令及Zenmap工具的使用方法
一、Nmap简介 nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评…...
深入了解-什么是CUDA编程模型
CUDA(Compute Unified Device Architecture,统一计算架构)是NVIDIA推出的一种面向GPU的并行计算平台和编程模型。它允许开发者利用NVIDIA的GPU进行通用目的的并行计算,从而加速应用程序的运行速度。CUDA编程模型为开发者提供了强大…...
STM32 LWIP服务器内存泄漏踩坑实录:我是如何实现多客户端连接并稳定运行72小时的
STM32 LWIP服务器内存泄漏排查与多客户端连接优化实战 在嵌入式网络应用中,STM32结合LWIP协议栈构建TCP服务器是常见方案。但当系统需要支持多客户端并发连接并长期运行时,内存管理问题往往成为稳定性的最大威胁。本文将分享一个真实案例:如何…...
从课堂到代码:三大数学可视化工具实战解析
1. 数学可视化工具的选择困境 第一次接触数学可视化工具时,我被各种选项搞得眼花缭乱。作为数学老师,我需要一个能让学生快速上手的工具;作为编程爱好者,我又希望它能支持更复杂的算法可视化。经过多年实践,我发现Desm…...
AD覆铜疑难杂症:从Modified Polygon到“引脚粘连”的排查与设计规避
1. Modified Polygon报错:现象与诊断 最近在做一个六层板设计时,遇到了典型的Modified Polygon报错。当时正在对电源层进行覆铜操作,点击"铺铜"按钮后,软件突然弹出一个红色警告框,显示"Modified Polyg…...
面试官问KMP?别慌!用这道LeetCode 28题(实现strStr())现场给你讲明白
面试官问KMP?别慌!用这道LeetCode 28题(实现strStr())现场给你讲明白 当面试官在白板上写下"实现strStr()"这道题时,许多候选人的第一反应是暴力匹配——直到被追问"有没有更优解?"才意…...
从HIDL到HAL3:手把手拆解Android相机Provider进程的通信与数据流转
Android相机架构深度解析:从HIDL到HAL3的数据流转与性能优化 在移动影像技术快速迭代的今天,Android相机系统的架构设计直接影响着成像质量与用户体验。作为连接应用层与硬件层的核心枢纽,Camera Provider进程通过HIDL接口与Camera Service通…...
从数学抽象到物理连接:Simscape物理网络建模的核心思想
1. 当信号流遇到物理网络:思维模式的碰撞 第一次打开Simscape工具箱时,我盯着那些陌生的元件库发了十分钟呆。作为有五年Simulink建模经验的工程师,我习惯性地开始寻找"输入端口"和"输出端口",却发现Simscape…...
政府AI决策透明度如何影响公众信任?实证研究揭示关键机制
1. 项目概述:当算法成为“看不见的法官”在公共服务的数字化转型浪潮中,人工智能(AI)正从辅助工具演变为核心决策者。想象一下这样的场景:你提交了一份社会福利申请,原本需要数周的人工审核,现在…...
2026英文论文降AI实战SOP:保留原格式,4招把AIGC率从97%压到8%
大家最近都在为英文降aigc率发愁吧,作为研三党,我太懂这种痛了,之前我自己写英文初稿,写完直接拿去查重,结果turnitin检测ai率飙到了89%,当时看着报告整个人都懵了。 怎么给英文降ai?对于非母语…...
保姆级教程:在Colab上复现C3D论文的UCF101动作识别(附修改后代码与避坑指南)
从零复现C3D:3D卷积实战中的七个关键陷阱与解决方案 当你第一次在Colab上尝试运行C3D代码时,可能会遇到这样的场景:满怀期待地敲下训练命令,却在五分钟内连续遭遇视频帧提取报错、Keras版本冲突和显存不足的三重打击。这正是大多…...
基于 Harmony6.0 的优惠聚合应用实战:Flutter 页面构建与高质感 UI 设计解析
基于 Harmony6.0 的优惠聚合应用实战:Flutter 页面构建与高质感 UI 设计解析 前言 随着 HarmonyOS NEXT 与 Harmony6.0 生态逐渐成熟,越来越多开发者开始关注鸿蒙平台上的跨端开发方案。相比传统 Android 应用开发,Harmony6.0 更强调分布式能…...


