当前位置: 首页 > news >正文

运维工作中的事件、故障排查处理思路

一、运维工作中的事件

  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 二、运维故障排查 一&#xff09;故障排查步骤 1、明确故障 故障现象的直接表现故障发生的时间、频率故障发生影响哪些系统故障发生是否有明确的触发条件   故障举例&#xff1a;无法通过ssh登录系统 影响…...

深入源码P3C-PMD:使用流程(1)

PMD开源组件启动流程介绍 在软件开发领域&#xff0c;代码质量是项目成功的关键因素之一。为了提升代码质量&#xff0c;开发者们常常借助各种工具进行代码分析和检查。PMD作为一款开源的静态代码分析工具&#xff0c;在Java、JavaScript、PLSQL等语言项目中得到了广泛应用。本…...

java~反射

反射 使用的前提条件&#xff1a;必须先得到代表的字节码的Class&#xff0c;Class类用于表示.class文件&#xff08;字节码&#xff09; 原理图 加载完类后&#xff0c;在堆中就产生了一个Class类型的对象&#xff08;一个类只有一个Class对象&#xff09;&#xff0c;这个对…...

【Linux】(26) 详解磁盘与文件系统:从物理结构到inode机制

目录 1.认识磁盘、 1.1 理论 1.2 磁盘的物理结构 CHS 寻址 1.3 磁盘的逻辑抽象结构 2. inode 结构 1.Boot Block 启动块 2.Super Block&#xff08;超级块&#xff09; 3.Group Descriptor Block&#xff08;块组描述符&#xff09; 4.Data Blocks (数据块) 5.Inode…...

8.1 字符串中等 43 Multiply Strings 38 Count and Say

43 Multiply Strings【默写】 那个难点我就没想先解决&#xff0c;原本想法是先想其他思路&#xff0c;但也没想出。本来只想chat一下使用longlong数据类型直接stoi()得不得行&#xff0c;然后就看到了答案&#xff0c;直接一个默写的大动作。但这道题确实考察的是还原乘法&…...

upload-labs靶场:1—10通关教程

目录 Pass-01&#xff08;JS 验证&#xff09; Pass-02&#xff08;MIME&#xff09; Pass-03&#xff08;黑名单绕过&#xff09; Pass-04&#xff08;.htaccess 绕过&#xff09; Pass-05&#xff08;大小写绕过&#xff09; Pass-06&#xff08;空格绕过&#xff09; …...

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. 前言 生命模拟是进化计算的一个特定子集&#xff0c;模拟了自然界中所观察到的自然…...

大数据|使用Apache Spark 删除指定表中的指定分区数据

文章目录 概述方法 1: 使用 Spark SQL 语句方法 2: 使用 DataFrame API方法 3: 使用 Hadoop 文件系统 API方法 4: 使用 Delta Lake使用注意事项常见相关问题及处理结论 概述 Apache Spark 是一个强大的分布式数据处理引擎&#xff0c;支持多种数据处理模式。在处理大型数据集时…...

OSPF动态路由协议实验

首先地址划分 一个骨干网段分成三个&#xff0c;r1&#xff0c;r2&#xff0c;r5三个环回网段 &#xff0c;总共要四个网段 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 的创始成员之一&#xff0c;曾领导特斯拉的 AI 部门&#xff0c;目前仍处于 AI 社区的前沿。 在第一部分中&#xff0c;我们重点介绍如何实现 GPT-2 的架构。虽然 GPT-2 于 2018 年由 …...

第十九天内容

上午 1、构建vue发行版本 2、java环境配置 jdk软件包路径&#xff1a; https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.tar.gz 下午 1、安装tomcat软件 tomcat软件包路径&#xff1a; https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.26/bin/apache-to…...

Hive之扩展函数(UDF)

Hive之扩展函数(UDF) 1、概念讲解 当所提供的函数无法解决遇到的问题时&#xff0c;我们通常会进行自定义函数&#xff0c;即&#xff1a;扩展函数。Hive的扩展函数可分为三种&#xff1a;UDF,UDTF,UDAF。 UDF&#xff1a;一进一出 UDTF&#xff1a;一进多出 UDAF&#xff1a…...

jdk1.8中HashMap为什么不直接用红黑树

最开始使用链表的时候&#xff0c;空间占用比较少&#xff0c;而且由于链表短&#xff0c;所以查询时间也没有太大的问题。可是当链表越来越长&#xff0c;需要用红黑树的形式来保证查询的效率。 参考资料&#xff1a; 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自带的功能&#xff0c;具备间隔重试、包含异常、排除异常、控制重试频率等特点&#xff0c;是项目开发中很实用的一种框架。 1、引入依赖 坑点&#xff1a;需要引入AOP&#xff0c;否则会抛异常。 xml <!-- Spring-Retry --> <dependency&…...

人工智能在医疗领域的应用与挑战

随着人工智能技术的不断发展&#xff0c;其在医疗领域的应用也越来越广泛。从辅助诊断到治疗决策&#xff0c;人工智能正在逐步改变着传统的医疗模式。然而&#xff0c;人工智能在医疗领域的应用也面临着诸多挑战&#xff0c;如数据隐私、伦理道德等问题。本文将探讨人工智能在…...

Windows下nmap命令及Zenmap工具的使用方法

一、Nmap简介 nmap是一个网络连接端扫描软件&#xff0c;用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端&#xff0c;并且推断计算机运行哪个操作系统&#xff08;这是亦称 fingerprinting&#xff09;。它是网络管理员必用的软件之一&#xff0c;以及用以评…...

深入了解-什么是CUDA编程模型

CUDA&#xff08;Compute Unified Device Architecture&#xff0c;统一计算架构&#xff09;是NVIDIA推出的一种面向GPU的并行计算平台和编程模型。它允许开发者利用NVIDIA的GPU进行通用目的的并行计算&#xff0c;从而加速应用程序的运行速度。CUDA编程模型为开发者提供了强大…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...