RHEL故障诊断5 - 如何分析 sosreport 排除系统故障

OpenShift / RHEL / DevSecOps 汇总目录

生成 sosreport 文件

  1. 安装 sosreport 软件包。
$ yum install sos -y
  1. 执行 sosreport 命令,然后全部回车即可。针对本系统生成的 sosreport 目录和对应的压缩文件将保存在 /var/tmp 目录中。
$ sosreport

在 sosreport 中包含哪些文件

主要目录和文件

解压 sosreport 文件后的目录通常包含以下子目录和文件:

  • boot/ - Grub信息
  • etc/:系统的各种配置文件(如 fstab、kdump.conf、sysctl.conf、logrotate.conf 等)
  • proc/:运行进程相关信息
  • run/ - 进程和服务的运行时信息
  • var/log/:包含各种日志(如 /var/log/messages、/var/log/syslog 等)
  • sys/:系统配置和状态信息。
  • sos_commands/:包含通过命令收集的各种信息。根据主机运行的软件,一般包括但不限于:
    • block/ - lsblk,blkid,parted 等块命令结果
    • crio/ - 容器信息
    • cron/ - Job 配置
    • devicemapper/ - dmsetup 命令结果
    • hardware/ - 系统硬件信息
    • iscsi/ - iscsiadm 命令结果
    • kernel/ - 和 kernel 相关信息
    • login/ - 登录信息
    • logs/ - journalctl 日志以及 /var/log 日志文件列表
    • logrotate/ - 日志滚动
    • memory/ - 内存使用情况
    • multipath/ - multipath 设备信息
    • process/ - 进程统计情况
    • sar/ - CPU和内存等资源消耗统计
    • systemd/ - 服务状态
  • sos_reports/:生成的 sosreport 报告摘要
  • sos_logs/ - sosreport 的执行日志
  • sys/ - Kernel 数据结构和模块
  • usr/ - 是主机的 /usr 目录, 包括 /usr/lib, /usr/libexec 和/lib/share
  • var/ - 在 /var/log 中是通过 rsyslog 管理的日志文件

sos_commands/kernel/dmesg 和 var/log/dmesg 的区别

在 sosreport 中的 sos_commands/kernel/dmesg 文件和 var/log/dmesg 文件内都包含了 Kernel 消息,但它们在生成方式和包含的内容范围有所不同。

  • var/log/dmesg - 系统启动时生成的内核消息文件,用于分析系统启动时的内核情况。通常只包含启动时的内核消息,而不包含运行期间的内核消息。
  • sos_commands/kernel/dmesg - 在运行 sosreport 时由 dmesg 命令输出的文件,其中包含系统启动和运行期间的内核消息。

如何分析 sosreport

在日志文件中查找错误信息

使用 grep 过滤由 rsyslog 管理的日志文件中的关键字(如 error、panic、oom、reboot 等),查找错误或警告信息。

$ grep -i -E "error|warning|critical|panic|oom|reboot" var/log/*

还可在 sos_commands/logs 中的 journalctl_–no-pager 文件中查找关键字(如 error、panic、oom、reboot 等)。

$ grep -i -E "error|warning|critical|panic|oom|reboot" sos_commands/logs/journalctl_--no-pager 

针对故障类型针对排查

系统崩溃或重启

以下多种情况都可以导致系统崩溃或重启:

  • 内核崩溃(Kernel Panic)
  • 硬件故障(如 CPU、内存、电源问题)
  • 系统过热
  • 软件问题(如驱动程序、服务崩溃)
  • 配置问题(如资源限制、内核参数设置不当)

可在以下日志文件中查看搜索关键内容来排查内核崩溃的原因,包括:Kernel panic -内核崩溃、Oops-内核异常、segfault-段错误、hardware error-硬件错误、crash-崩溃、reboot-重启、systemd-系统服务问题,

  • 检查 /var/logs/messages 查找崩溃前的日志。
  • 检查 /var/logs/dmesg 查看重启日志。
  • 检查 /sos_commands/kernel/dmesg 查看内核运行日志
  • 检查 /sos_commands/kernel/ 中的文件,查找和 Linux 系统的 Kernel、文件系统、网络等方面的重要配置参数。

另外,如果系统配置了 kdump,则内核崩溃转储会写入 /var/crash/vmcore 文件。可以用 crash 工具分析内核崩溃转储文件来分析崩溃原因。

性能问题

通常可能有以下原因可造成系统性能问题:

  • CPU 使用率过高。
  • 内存不足或内存泄漏。
  • 磁盘 I/O 性能瓶颈。
  • 网络延迟或带宽不足。
  • 应用程序处理瓶颈。

可以检查以下文件来分析 CPU、内存、磁盘和网络是否有瓶颈:

  • 检查 /sos_commands/memory/ 目录,查看内存使用情况
  • 检查 /var/logs/sa/ 目录下的 sar 数据,查看 CPU、内存、磁盘使用情况。
    • CPU 使用情况
      • 用户态 CPU 使用率(%user)
      • 内核态 CPU 使用率(%system)
      • 空闲 CPU 时间(%idle)
      • I/O 等待时间(%iowait)
      • 软中断时间(%soft)
    • 内存使用情况
      • 内存使用率(kbmemused)
      • 空闲内存(kbmemfree)
      • 缓存内存(kbcached)
      • 交换分区使用率(kbswpused)
      • 交换分区空闲(kbswpfree)
    • 磁盘 I/O 使用情况
      • 磁盘读写速率(tps:每秒传输次数)
      • 磁盘读写吞吐量(rkB/s:每秒读取的 KB 数,wkB/s:每秒写入的 KB 数)
      • 磁盘利用率(%util)
      • 平均 I/O 等待时间(await)
    • 网络使用情况
      • 网络接口的接收和发送数据包速率(rxpck/s、txpck/s)
      • 网络接口的接收和发送数据量(rxkB/s、txkB/s)
      • 网络接口的错误和丢包统计(rxerr/s、txerr/s、rxdrop/s、txdrop/s)
    • 系统负载情况
      • 系统负载平均值(ldavg-1、ldavg-5、ldavg-15)
    • 文件系统使用情况
      • 文件系统的读写速率(tps)
      • 文件系统的读写吞吐量(rtps、wtps)
    • 网络错误和冲突情况
      • 网络接口的错误和冲突统计(rxerr/s、txerr/s、coll/s)

网络故障

  • 检查 /sos_commands/networking/ 目录下的网络配置和状态
  • 检查 /var/logs/messages 中的网络相关错误

存储问题

  • 检查 /etc/fstab 文件,查看存储挂载情况
  • 检查 /sos_commands/filesys 和 /sos_commands/block 中的文件,查看存储和文件系统情况
  • 检查 /var/logs/messages 中的磁盘错误

xsos 分析工具

xsos 是一个 sosreport 的辅助分析工具。它能从 sosreport 目录中收集系统的 bios、os、CPU、内存、网络、存储、kdump 等配置信息。不过 ,xsos 虽能自动将分散在 sosreport 中的各类信息进行汇总,但不能对系统故障进行诊断分析和提供建议。

  1. 安装 xsos。
curl -Lo /usr/local/bin/xsos https://raw.githubusercontent.com/ryran/xsos/master/xsos
chmod +x /usr/local/bin/xsos
xsos -h
  1. 执行命令,可分析特定的 sosreport 目录,然后显示所有汇总后的信息。
xsos -a /var/tmp/sosreport-bogon-2025-01-03-kduclyt

在这里插入图片描述

参考

https://access.redhat.com/zh_CN/solutions/694243
https://github.com/ryran/xsos
https://access.redhat.com/discussions/469323
https://linux.cn/article-10889-1.html
https://github.com/sbradley7777/sx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值