什么是sosreport?如何在 RHEL 4.6 及以后的版本中创建sosreport?
Environment
- Red Hat Enterprise Linux 4.6 或更新版本
- Red Hat Enterprise Linux 5
- Red Hat Enterprise Linux 6
- Red Hat Enterprise Linux 7
Issue
- 如何创建一个
sosreport?- 如果系统无法被引导,或无法正常生成 sosreport,请参阅以下信息:
- 如果文件过大无法进行上传,请参阅以下内容:
- 什么是
sosreport?- 如何从 Red Hat Enterprise Linux 系统上收集系统日志文件、配置信息和系统信息以供红帽技术支持工程师进行分析。
- 我需要联系红帽技术支持以获得技术方面的帮助。我需要提供系统的什么信息以供分析?
- 如何安装包括 sosreport 的软件包
- 如何应对 sosreport 挂起
- sosreport 的副作用
Resolution
Azure 虚拟客户机
什么是 sosreport:
sosreport 命令是一个工具,用来收集RHEL系统上的配置信息、系统信息和诊断信息。比如:正在运行的内核版本、已加载的模块,以及系统和服务的配置文件。这个命令还会执行一些额外的程序,来获得更详尽信息,并会把这些信息保存到结果文档中。
当红帽技术支持工程师对一个 Red Hat Enterprise Linux 服务请求进行初始分析时,通常会从 sosreport 开始。
如何运行 sosreport:
当 sos 软件包已被安装,就可以使用以下命令运行 sosreport:
注意: sosreport 需要 root 权限运行。
* 如果出现 "command not found" 错误,请检查 sos 软件包是否已被安装且没有错误。
# sosreport
在 RHEL 6 上,这个命令大约需要几分钟来完成,其他老版本可能需要更长时间。根据本地设置,以及在以下情况下使用的选项,这个命令可能会需要更多时间才能完成运行。如果对 sosreport 的运行时间有所疑虑,请联系红帽技术支持以获取帮助。
当运行完成后,sosreport 会在 /tmp (RHEL6 及更老版本)或 /var/tmp (RHEL7 及更新的版本)目录下生成一个压缩文件。不同版本会使用不同的压缩格式(gz、bz2或 xz)。您一般需要将这个文件提交给技术支持工程师(一般以附件形式上传到问题单上)。
这个存档文件的大小取决于系统配置和启用的 sosreport 可选功能(比如,如果指定了通用模块的 "all_logs" 选项,sosreport 将会收集所有 syslog 日志文件,这将大大增加存档文件的大小)。
如果需要向一个已存在的问题单添加 sosreport,或其它文件,可以使用 redhat-support-tool 命令行工具,Red Hat Portal UI,或通过使用 FTP 的其它一些方式 。
如果所收集的 sosreport 文件过大,可将其上传到 Red Hat ftp dropbox.redhat.com site。
要避免交互式地输入用户和账号信息,可以使用 --batch 选项以批处理的形式运行。这种情况下,用户信息会从系统的 RHN 配置文件中获得:
# sosreport --batch
sosreport 命令有一个模块化结构,用户可以在命令行指定模块选项来启用/禁用模块。要列出可以使用的模块(插件),请运行以下命令:
# sosreport -l
要临时关闭某个模块:
将要关闭的模块用逗号分隔的方式列出,在 -n/--skip-plugins 选项中指定。
例如,要临时禁用 kvm 和 amd 模块(因为有问题):
# sosreport -n kvm,amd
每个模块可能会提供额外的选项,可以通过 -k 选项进行指定。比如,在 RHEL 4 和 5 中,sos rpm 模块默认收集 "rpm -Va" 的输出。因为这会消耗大量时间,可以使用以下方法禁用:
# sosreport -k rpm.rpmva=off
在 RHN Proxy Server 中运行 sosreport
要在 RHN Proxy Server 上收集更详尽的信息,请使用以下命令:
# sosreport -o rhn
备注:
1. Red Hat Enterprise Linux 4.5 以及更早版本中包括老的 sysreport 命令创建诊断信息文件。您可以把系统更新为使用包括在更新版本中的 sos 软件包,但是在需要的时候,仍然可以向红帽上传 sysreport 的信息 What is a sysreport and how to run it in Red Hat Enterprise Linux?
2. Red Hat Enterprise Linux 4 和 5 中的 sos 软件包也包括 sysreport 命令。它是一个软链接,用以向下兼容:
# ls -l /usr/sbin/sysreport
lrwxrwxrwx 1 root root 19 Nov 3 2008 /usr/sbin/sysreport -> /usr/sbin/sosreport
如需使用原始的 sysreport 脚本,使用 sysreport.legacy 命令:
# sysreport.legacy
这个工具程序会收集与硬件和 Red Hat Linux 系统设置相关的详细信息。这些收集到的信息会被看做为保密信息,红帽将只会在对您的系统进行诊断时使用这些信息。
安装 sosreport:
为了运行 sosreport,需要先安装 sos 软件包。这个软件包是默认安装组的一部分,大多数系统会自动安装这个软件包。您可以使用以下命令检查 sos 软件包是否已被安装以及是否有错误:
# rpm -qa | grep sos
sos-3.2-35.el7_2.3.noarch << sos package is installed
# rpm -V sos << run verification on installed package
#
如果软件包没有被安装,在运行相关命令时会出现与以下类似的信息:
# sosreport
-bash: sosreport: command not found
如果出现这种情况,需要使用以下方法手工安装包括了 sosreport 命令的 sos 软件包:
Red Hat Enterprise Linux 5 以及更新版本
如果系统已使用 RHSM 注册,使用 yum 命令:
# yum install sos
如果系统还没有通过 RHSM 注册,sos 软件包可以从 RHN 网站下载,或通过安装 CD/DVD 获得。使用 rpm 命令可以在任何版本的 Red Hat Enterprise Linux 上进行安装:
# rpm -Uvh sos-<version>.noarch.rpm
Red Hat Enterprise Linux 4 Update 6 或更新版本
如果系统通过 RHSM 进行了注册,使用 up2date 命令安装sos :
# up2date sos
如何应对 sosreport 挂起:{#soshang}
-
如果运行于 RHEL5,把 sosreport 进程设置为后台运行 (ctrl-z),任何再使用它的 PID 终止它。否则,您可以会遇到 KCS#55275 中的问题
-
如果 sosreport 因为设备的 "No space left on device" 错误而失败
- 检查包括
/tmp的文件系统有足够的空间
# df -h /tmp Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_ren-lv_root 50G 49G 1M 99% /- 增加存储空间,或使用以下方式指定另外一个目录
# sosreport --tmp-dir /path/to/another/volume - 检查包括
-
sosreport 可能会因为一个特定的插件而挂起
找出哪个插件导致挂起。
- 增加输出信息 sosreport -vvvv
- 使用 strace 进行分析
当找到导致挂起的插件后,排除它。
使用以下命令显示所有插件:
sosreport -l
例如,排除 filesys 插件
sosreport -n filesys
-
或者,运行以下脚本手工创建一个系统报告。请注意,这个方法可能只会包括标准 sosreport 中的部分内容。
#!/bin/bash host="$(hostname)" sos_dir="/tmp/${host}_hungsos" mkdir $sos_dir cd $sos_dir chkconfig --list > chkconfig date > date df > df dmesg > dmesg dmidecode > dmidecode fdisk -l > fdisk free > free hostname --fqdn > hostname ifconfig > ifconfig lsmod > lsmod lspci > lspci cat /proc/mounts > mount netstat -tlpn > netstat ps auxww > ps rpm -qa > rpm-qa rpm -Va > rpm-Va #this command may take a while to run ulimit -a > ulimit uname -a > uname uptime > uptime cat /proc/meminfo > meminfo cat /proc/cpuinfo > cpuinfo mkdir etc cd etc cp /etc/fstab . cp /etc/cluster/cluster.conf . cp /etc/security/limits.conf . cp /etc/redhat-release . cp /etc/sysctl.conf . cp /etc/modprobe.conf . mkdir sysconfig/network-scripts -p cd sysconfig cp /etc/sysconfig/* . -R cd $sos_dir mkdir var/log -p cp /var/log/message* var/log -R cd /tmp tar -cvjf ${host}_hungsos.tar.bz2 $sos_dir
通过 rescue 模式收集 sosreport
如果系统无法正常启动,可以通过 rescue 环境收集 sosreport 以用于故障排除。
请参阅:How to generate sosreport from the rescue environment?
在另外的位置创建 sosreport
如果 /tmp 下没有足够的空间,可以强制在另外的位置创建 sosreport。
请参阅:How do I make sosreport write to an alternative location?
手工收集 sosreport
如果因为某些原因无法生成 sosreport,请参阅以下信息手工收集文件:
Sosreport fails. What data should I provide in its place?
sosreport 的副作用:{#side-effect}
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
