《OpenShift / RHEL / DevSecOps 汇总目录》
文章目录
生成 sosreport 文件
- 安装 sosreport 软件包。
$ yum install sos -y
- 执行 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)
- CPU 使用情况
网络故障
- 检查 /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 中的各类信息进行汇总,但不能对系统故障进行诊断分析和提供建议。
- 安装 xsos。
curl -Lo /usr/local/bin/xsos https://raw.githubusercontent.com/ryran/xsos/master/xsos
chmod +x /usr/local/bin/xsos
xsos -h
- 执行命令,可分析特定的 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