Red Hat Enterprise Linux 上での sosreport の役割と生成方法
Environment
- Red Hat Enterprise Linux (RHEL) 4.6+, 5, 6, 7, 8, 9
- 例外:
- システムが起動していないケースの場合
- 参照: システムが起動していないか、通常の手段で sos report を生成するのに十分な時間起動していない場合は、How to generate sos report from the rescue environment のページを参照してください。
- Azure 仮想ゲストの場合
- 参照: Azure 仮想ゲスト向けの "How to Create a Microsoft Azure Virtual Machine sos report and Submit the Report to Red Hat"。
- OpenShift 4 ノードの場合
- Pacemaker クラスターノードの場合
Issue
sos report
について、および sosreport との違い- システムのログファイル、設定の詳細、およびシステム情報を Red Hat Enterprise Linux システムから収集し、Red Hat テクニカルサポートに提供して解析を依頼するにはどうすれば良いですか?
sos report
の生成方法- Red Hat テクニカルサポートチームにテクニカルサポートを依頼するサービスリクエストを作成しています。システムの初期解析のためにどのようなデータを提供する必要がありますか?
-
sos report
コマンドの実行方法を制御する方法 - sos report を含むパッケージのインストール方法
- sos report がハングした場合の対処方法
- 特定の sos report プラグインがバックグラウンドで実行するコマンド
Resolution
目次
- sos パッケージのインストール
- sos report とは何ですか? sosreport との違いは何ですか?
- sos report はどのように生成しますか?
-
sos report
コマンドの実行方法を制御する方法 - 古い RHEL リリースで新しい sos バージョンを実行するにはどうすればよいですか?
- トラブルシューティング:
###sos report について、および sosreport との違い
RHEL 8 以降の sos report
は、RHEL7 以前の sosreport
コマンドに相当します。 したがって、sos report は sosreport と同じものになります。sos パッケージ内で使用されるコマンド構文が異なるだけです。
- RHEL 7 以前のリリースでは、インストールされたパッケージ名は sos でしたが、システムからデータをキャプチャーするコマンドは
sosreport
でした。 - RHEL 8 以降では、コマンド名が単なる
sos
に変更され、report
のオプションの引数は、古い sos パッケージのsosreport
と同じデータ収集アクティビティーを実行するために必要です。 - このドキュメントでは、古い構文の
sosreport
を使用するコマンド例を明確に参照していない限り、新しい構文のsos report
を一般的に使用しています。 sosreport
のコマンド構文はすべてのカーネルバージョンで機能しますが、RHEL 8 以降のカーネルでは非推奨となり、"Redirecting to sos report" という警告が出力されます。
sos report
コマンドは、設定の詳細、システム情報、および診断情報を Red Hat Enterprise Linux システムから収集するツールです。 たとえば、実行中のカーネルのバージョン、ロード済みのモジュール、そしてシステムおよびサービスの設定ファイルを取得します。 さらにこのコマンドは、外部プログラムを実行してより詳細な情報を収集し、結果のアーカイブにこの出力結果を保存します。
» sos report の提供を求められるのはなぜですか?
sos report
の出力は、Red Hat Enterprise Linux システムのサービスリクエストを初期解析する際に、Red Hat サポートエンジニアが通常最初に行うものです。
このユーティリティーは、Red Hat サポートエンジニアがサポートケースで報告された問題の調査中に参照する診断情報を収集するための標準化された方法を提供します。
sos report
を使用することで、断片的なデータの出力を継続的に要求されることはありません。
sos report はどのように生成しますか?
sos
パッケージがインストール されたら、次のコマンドを発行して sos report を実行します。 最初のコマンドは、最新のデータ収集手順が実行されるように、最新のパッケージがインストール されていることを確認します。
# yum update sos
# sosreport
注: RHEL 8 以降では、 sos report
が使用され、sosreport
コマンドは非推奨となります。 RHEL 8 または 9 システムでsosreport
が発行され、"Redirecting to 'sos report'
" が実行されると、この影響に関するメッセージが出力されます。注: RHEL8 以降では、sos と report の間にスペースを追加して上記のコマンド名を sos report
に変更し、"Redirecting to sos report" 関連のメッセージを回避します。注: sos report
コマンドには、データを正しく収集するための root 権限が必要です。 現在、root 権限を持たずにsos report
を実行できるメカニズムはありません。
Red Hat Enterprise Linux 6 では、このコマンドが完了するまで数分かかります。古いバージョンだともう少しかかる場合があります。ローカル設定と一部のケースで指定したオプションによっては、コマンドが完了するまで時間がかかる場合があります。sos report
コマンドの実行時間に不安を感じる場合は、Red Hat サポートチームにご連絡ください。
sos report
コマンドが完了すると、/tmp
(RHEL6 以前) または /var/tmp
(RHEL7 以降) の配下に圧縮ファイルが生成されます。作成されたファイルをサポートチームに提供してください (通常は作成したサポートケースに添付して提出)。
» sos report
を実行すると、"no valid plugins were enabled" メッセージが表示される
-
通常、"no valid plugins" というメッセージが出力され、完全な root 権限なしで
sos report
コマンドが実行されます。 システムからデータを正しく収集するには、root 権限でsos report
コマンドを実行する必要があります。情報を収集するために実行するファイル、コマンド、およびツールの多くには、root アクセス権限が必要です。 たとえば、システムでマルチパスが設定されている場合、sos report は現在の設定のマルチパスサブシステムから情報を収集しますが、これは通常のユーザーとしては実行できません。$ multipathd -k"show config" need to be root
-
root として再度実行してみてください。それでも問題が解決しない場合は調査しますので、サポートケースを開いてください。*
» sos report
を実行すると、使用可能なディスク容量がいっぱいまで使用される
-
アーカイブのサイズは、システム設定と、
sos report
の有効なオプション機能によって異なります。たとえば--all-logs
は、コマンド出力とログファイル収集のサイズ限定機能を削除するため、アーカイブのサイズを 著しく 増加させます。 -
/tmp/
または/var/tmp
が小さすぎて sos report アーカイブを保持できない場合は、--tmp-dir
オプションを使用して、十分な空き領域がある別の場所を指定します。
» sos report
を Red Hat に提供する方法
sos
は、たとえばsos report --upload
などのように、--upload
オプションを使用してアーカイブを Red Hat に直接アップロードできます。- 詳細は、sos report を自動的にアップロードするにはどうすればよいですか? のセクションを参照して下さい。
利用可能な別のアップロード方法には、以下のようなものがあります。
sos report
などのファイルを既存のサポートケースに追加するには、redhat-support-tool コマンドラインオプション、Red Hat Portal UI、または FTP を使用したさまざまな方法を利用できます。- 収集した
sos report
ファイルが大きすぎてケースにアップロードできない場合は、Red Hat Secure FTP にアップロードすることができます。- ftp オプションを使用する場合は、正確なファイル名でサポートケースを更新してください。これは、サポートエンジニアがファイルを取得できる唯一の方法となります。
» ケース番号はまだありませんが、sos report
を実行するにはケース番号が必要ですか?
-
ケース番号の入力プロンプトはオプションであり、指定した場合、ケース番号はアーカイブのファイル名の一部になります。ケース番号を省略しても、
sos report
コマンドの実行に悪影響はありません。 -
また、ユーザーおよびアカウント情報をインタラクティブに入力しないで済むように、
--batch
オプションを指定してコマンドをバッチモードで実行できます。
sos report
コマンドの実行方法を制御する方法
sos report コマンドはプラグイン構造のため、ユーザーはコマンドラインからプラグインを有効/無効にしたり、プラグインオプションを指定したりできます。利用可能なプラグインおよびそのオプションの一覧を表示するには、以下のコマンドを実行します。
# sosreport -l
» 特定のプラグインを無効または有効にする方法
ユーザーは、-e/--enable-plugins
オプションと -n/--skip-plugins
オプションを使用して、プラグインを個別に有効または無効にできます。これらのオプションは、プラグイン名のコンマ区切りのリストを使用するか、複数回指定することもできます。たとえば、amd
および kvm
プラグインを無効にするには、以下のコマンドを実行します。
# sosreport -n kvm,amd
» プラグインオプションの使用方法
個々のプラグインは、-k
オプションで指定できる追加オプションを提供している場合もあります。これらのオプションは、使用可能なプラグインの一覧と同じ出力に一覧表示されます (sosreport -l
)。このオプションが取る形式は plugin_name.option_name=value
です。たとえば、コンテナーログの収集を有効にするには、以下を実行します。
# sosreport -k podman.logs=on
オプションは、ブール値のトグルであるか、文字列または整数であるかを指定します。ブール値のトグルの場合、ユーザーは True
、on
または yes
と False
、off
または no
を同じ意味で使用できます。
» sos report
が、特定のコマンド出力の収集をときどきスキップする理由
sos report を実行すると、以下のようなメッセージがコンソールに出力される場合があります。
[plugin:networking] skipped command 'nft list ruleset': required kernel modules or services not present (kmods=[nf_tables] services=[]).
sos report
は、実行されるシステムをまったく変更しないことを目的としています。特定のプラグインによって呼び出される一部のコマンドは、自動的に変更をトリガー (上記の例ではカーネルモジュールをロード) する可能性があるため、デフォルトで gated となります。ご使用の環境でこれらを変更することが容認され、sos report
によってスキップしたコマンドを収集するよう変更する場合は、以下のように sos report
を実行します。
# sos report --allow-system-changes
» システムで sos report
を実行すると CPU 時間またはメモリーを過剰に消費する»* (sos バージョン 3.6 以降でサポートされている)
デフォルトでは、合計実行時間を短縮するために sos report
は最大 4 つのプラグインを並行して実行します。これにより、実行中のプラグインに応じて (特にこれらの各プラグインがジャーナル出力を収集する場合)、特定のシステムでメモリーが競合したり、CPU 使用率が高くなったりする可能性があります。同時収集の数を減らすには、--threads
オプションを使用します。たとえば、プラグインを 1 つずつ実行するには、以下を実行します。
# sosreport --threads=1
sos パッケージのインストール
sos report
コマンドを実行するには、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
» Red Hat Enterprise Linux 5 以降
システムが RHSM に登録済みの場合は、yum
コマンドを使用します。
# yum install sos
システムが RHSM に登録されていない場合は、sos
パッケージは RHN の Web サイトからダウンロードするか、インストール CD か DVD から取得することができます。rpm コマンドを使用して、パッケージを Red Hat Enterprise Linux のすべてのバージョンにインストールすることができます。
# rpm -Uvh sos-<version>.noarch.rpm
(注記: 上記の rpm
コマンドでは、失敗した依存関係があると示される場合があります。 その場合は、欠落している RPM ファイルを同じコマンドラインに含めます。 たとえば xz RPM が必要な場合は、rpm -Uvh sos-<version>.noarch.rpm xz-<version>.x86_64.rpm
を実行します。)
sos パッケージの更新
sos report コマンドは、サポートエンジニアが必要とするすべての適切なデータ収集を確実に行うために、重要なバグ修正とデータ収集の更新により、常に更新されています。 最新の sos report を使用しない場合、サポート担当者がタイムリーにケースをレビューできなくなることが多く、情報の二次的な要求または sos report の更新およびやり直しが必要になることがよくあります。 最新の sos パッケージのインストールを確認することで、これらの問題や不都合を回避できます。
# yum update sos
» Red Hat Enterprise Linux 4 Update 6 以降の 4.x カーネル
システムが Red Hat Subscription Manager (RHSM) に登録済みの場合は、up2date
コマンドを実行して sos
パッケージをインストールすることができます。
# up2date sos
sos report を Red Hat サポートに自動的にアップロードするにはどうすればよいですか?
sos-3.9
以降では、sos は生成されたアーカイブを自動的にアップロードする --upload
オプションをサポートしています。アーカイブのローカルコピーが引き続き存在する点に留意してください。このオプションでは、sos rpm の弱い依存関係として定義されている python3-requests
パッケージを使用する必要があります。弱い依存関係を解決するように設定されていないシステム、または AppStream リポジトリーを有効にしないシステムは、このパッケージを手動でインストールする必要があります。
Red Hat Enterprise Linux システムで実行する場合、--upload
オプションを使用すると、ユーザーはカスタマーポータルの認証情報の入力を求められます。
# sos report --upload
sosreport (version 4.2)
[...]
Please enter the case id that you are generating this report for []: 123456
Enter your Red Hat Customer Portal username (empty to use public dropbox): your-username
Please provide the upload password for your-username:
[...]
Your sosreport has been generated and saved in:
/var/tmp/sosreport-myhost-123456-2022-08-11-sgczqyo.tar.xz
Attempting upload to Red Hat Customer Portal
Uploaded archive successfully
指定されたケース番号にアクセス可能な ケース番号とログイン認証情報を提供することにより、sos は完了時に、結果として生成されたアーカイブをケースに直接アップロードします。これらのいずれかが提供されていないか、正しくない場合 (たとえば、提供された認証情報のケース番号が正しくない場合)、sos はフォールバックして Red Hat のセキュアな FTP サーバーにアーカイブをアップロードします。
# sos report --upload
sosreport (version 4.2)
[...]
Please enter the case id that you are generating this report for []: 123456
Enter your Red Hat Customer Portal username (empty to use public dropbox): incorrect-user
Please provide the upload password for your-username:
[...]
Your sosreport has been generated and saved in:
/var/tmp/sosreport-myhost-123456-2022-08-11-hyrtzji.tar.xz
Attempting upload to Red Hat Customer Portal
Upload to Red Hat Customer Portal failed. Trying sftp://sftp.access.redhat.com
Attempting upload to Red Hat Secure FTP
Unable to retrieve Red Hat auth token using provided credentials. Will try anonymous.
User 'xAnrDdnP'used for anonymous upload. Please inform your support engineer so they may retrieve the data.
Uploaded archive successfully
注記: 匿名ユーザーは、再利用できない一時的なユーザーです。サポートエンジニアがアーカイブを取得して確認できるように、関連するサポートケースの認証情報などをサポートエンジニアに 提供する必要があります。
以下の方法で --upload
認証情報を提供できます。
- 上記のとおり
--upload
を使用し、対話型プロンプトを使用します。
4.6.1-1 より前の sis バージョンでは、次のオプションを使用できます。 --upload-user
と--upload-pass
を使用して、プロンプトなしで認証情報を提供します。これは、--batch
を使用してsos report
のインタラクティブな実行を回避する際に役立ちます。ただし、これにより、プレーンテキストのパスワードがps
などのさまざまなプロセスの情報収集によってキャプチャーされることに注意してください。SOSUPLOADUSER
環境変数およびSOSUPLOADPASSWORD
環境変数の両方、またはいずれか一方を使用します。設定されている場合、--upload
関数は認証情報の入力を求めず、これらの値はアーカイブ内のどのコレクションにも 表示されません。
sos 4.6.1-1 以降のバージョンでは、新しい Web 認証システムが利用されます。このシステムでは、ユーザーは URL 経由で認証し、アップロードを許可するトークンを受け取る必要があります。その結果、--upload-user
オプションと --upload-pass
オプション、および同等の環境変数は非推奨となり、sos によって無視されます。
ネットワークまたはファイアウォールの設定で、api.access.redhat.com
(ケースへの直接アップロードの場合) または sftp.access.redhat.com
(SFTP (フォールバック) アップロードの場合) へのアクセスが許可されていない場合、アップロードは失敗します。
古い RHEL リリースで新しい sos バージョンを実行するにはどうすればよいですか?
RHEL システムがバージョンロックされている場合 (EUS など)、最新の sos
パッケージを古いリポジトリーで利用できない場合があります。同様に、sos
への最近の追加または変更は、さまざまな理由により、常に古い RHEL リリースにバックポートされるとは限りません。ただし、support-tools
コンテナーイメージを使用して、RHEL の任意のバージョンで最新の sos
パッケージを使用することは引き続き可能です。
このコンテナーイメージは、利用可能な最新の sos
パッケージで一貫して維持および更新され、registry.redhat.io コンテナーイメージレジストリーから入手できます。
support-tools コンテナーを介して sos でホストレベルの情報を収集するには、イメージを特定の方法でデプロイする必要があります。sos
パッケージを別のコンテナー内にインストールするだけでは、コンテナー内 でコレクションが発生するため、あまり役に立ちません。コンテナーイメージ内からのホストレベルのコレクションを成功させるための要件は、イメージの RUN
ラベルに組み込まれています。イメージは、次のようにこのラベルを使用して簡単にデプロイできます。
# podman container runlabel RUN registry.redhat.io/rhel8/support-tools
--- You will now be attached to a root shell inside the container ---
# sos report
sos report
が完了すると、アーカイブの場所が /host/var/tmp/
に表示されます。上記の podman
コマンドを使用してデプロイすると、コンテナーはホストの /
ファイルシステムを /host
にマウントします。そのため、コンテナーが終了しても、tarball はホストの (通常の) /var/tmp
の場所に存在することになります。
sos report がハングした場合の対処方法
はじめに、/tmp
(RHEL 6) または /var/tmp
(RHEL7 以降) のいずれかに十分な空き領域があることを確認します。十分にない場合は、前述 のとおり --tmp-dir
オプションを使用します。
sos report
が特定のプラグインでハング/停止している場合 (現在実行中のプラグインは実行中に表示)、前述のとおり のとおり -n/--skip-plugins
オプションを使用して問題のプラグインを無効にし、sos report
を実行してみてください。
各プラグインのデフォルトのタイムアウトは 5 分であることに注意してください (すべてのプラグインで使用できる timeout
プラグインオプションで制御可能)。このタイムアウトのしきい値に達するまで十分な時間を確保してください。そうすると、sos report
はそのプラグインの実行を自動的に終了します。終了しない場合は、前述の明記されたオプションを使用してください。
何らかの理由で sos report
をどうしても完了できない場合は、How to gather data from a Red Hat Enterprise Linux system for troubleshooting if the sos report
process goes to hung state? を参照してください。
sos report
をまったく実行できないが、提供用の最小限のデータを収集する必要がある場合
代替の必要最小限のデータ収集スクリプトについては、Sosreport fails. What data should I provide in its place? を参照してください。
sos report
が失敗した場合の問題固有のガイダンスについては、Additional and alternative steps for gathering an sos report for a Red Hat Enterprise Linux support case を参照してください。
特定の sos report プラグインがバックグラウンドで実行するコマンドは何ですか?
sos report
コマンドで、特定のプラグインが実行された場合の動作を理解するには、以下の方法があります。
-
sos report
コマンドを提供するsos
パッケージのソースを確認します。
特定のバージョンのソースコードについては カスタマーポータルのダウンロードセクション を参照してください。 -
sos report で
sos.log
ファイルを確認します。たとえば、プラグインscsi
の場合、以下のようなものがあります。-- directories and files collected -- 2020-07-30 11:04:53,632 INFO: [plugin:scsi] collecting path '/sys/bus/scsi' 2020-07-30 11:04:53,656 INFO: [plugin:scsi] collecting path '/sys/class/scsi_disk' 2020-07-30 11:04:53,663 INFO: [plugin:scsi] collecting path '/proc/scsi' 2020-07-30 11:04:53,666 INFO: [plugin:scsi] collecting path '/sys/class/scsi_generic' 2020-07-30 11:04:53,675 INFO: [plugin:scsi] collecting path '/sys/class/scsi_host' 2020-07-30 11:04:53,677 INFO: [plugin:scsi] collecting path '/sys/class/scsi_device' 2020-07-30 11:04:53,686 INFO: [plugin:scsi] collecting output of 'lsscsi -i' 2020-07-30 11:04:53,710 INFO: [plugin:scsi] collecting output of 'sg_map -x' 2020-07-30 11:04:53,765 INFO: [plugin:scsi] collecting output of 'udevadm info -a /sys/class/scsi_host/host3' 2020-07-30 11:04:53,789 INFO: [plugin:scsi] collecting output of 'udevadm info -a /sys/class/scsi_host/host1'
-
その特定のプラグインのみを使用して
sos report
を生成し、収集したアーカイブ内のファイルとディレクトリー、およびコマンドの出力を確認します。
特定のプラグインで sos report を生成するには、以下を実行します。# sosreport -o plugin-name
-
プラグインのリストを表示するには、以下を実行します。
# sosreport -l
Root Cause
Diagnostic Steps
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.
Comments