6.7. virt-who のトラブルシューティング方法
virt-who ステータスの確認
virt-who サービスのステータスを確認します。
# systemctl status virt-who.service
デバッグロギング
/var/log/rhsm/rhsm.log
ファイルを確認してください。デフォルトでは、virt-who はすべてのアクティビティーをログに記録します。
より詳細なログを取るためには、/etc/virt-who.conf
ファイルでデバッグオプションを有効にしてください。
[global] debug=True
変更を反映するために virt-who サービスを再起動します。
根本的な問題が解決したら、/etc/virt-who.conf
ファイルを変更してデバッグを無効にしてから、virt-who サービスを再起動します。
設定オプションのテスト
必要に応じて変更を加え、結果をテストします。virt-who は、設定ファイル、認証情報、仮想化プラットフォームへの接続のテストに役立つ 3 つのオプションを提供します。
-
virt-who --one-shot
コマンドは設定ファイルを読み取り、仮想マシンのリストを取得してサブスクリプション管理システムに送信し、直ちに終了します。 -
virt-who --print
コマンドは設定ファイルを読み取り、仮想マシンのリストを出力しますが、サブスクリプション管理システムには送信されません。 RHEL 9 Beta 以降では、
virt-who --status
コマンドが設定ファイルを読み込んで、ソースシステムと宛先システムの両方の接続状態の概要を出力します。-
virt-who --status
コマンドに--json
オプションを付けると、各設定の追加の接続性データが JSON 形式で提供されます。
-
virt-who --one-shot
コマンドおよび virt-who --print
コマンドの期待される出力は、ハイパーバイザーとその仮想マシンのリストで、JSON 形式です。以下は、VMware vSphere インスタンスからの抜粋です。すべてのハイパーバイザーからの出力は以下の設定になっています。
{ "guestId": "422f24ed-71f1-8ddf-de53-86da7900df12", "state": 5, "attributes": { "active": 0, "virtWhoType": "esx", "hypervisorType": "vmware" } },
virt-who --status
コマンドの期待される出力は、virt-who の各設定の接続ステータスのプレーンテキストの要約です。
+-------------------------------------------+ Configuration Status +-------------------------------------------+ Configuration Name: esx_config1 Source Status: success Destination Status: success Configuration Name: hyperv-55 Source Status: failure Destination Status: failure
virt-who --status
コマンドに --json
オプションを付けた場合の期待される出力は、最後に成功した実行を含む各設定に関する追加情報を JSON 形式で提供します。この出力には、各設定の成功または失敗のステータスの詳細も含まれています。
- ステータスレポートが設定の成功を示す場合、JSON 出力には、最後に成功した実行サイクルで virt-who が報告したハイパーバイザーおよびゲストの数が含まれます。
- ステータスレポートが設定の失敗を示す場合は、JSON 出力に関連するエラーメッセージが表示されます。
"configurations": [ { "name":"esx-conf1", "source":{ "connection":"https://esx_system.example.com", "status":"success", "last_successful_retrieve":"2020-02-28 07:25:25 UTC", "hypervisors":20, "guests":37 }, "destination":{ "connection":"candlepin.example.com", "status":"success", "last_successful_send":"2020-02-28 07:25:27 UTC", "last_successful_send_job_status":"FINISHED" } }, { "name":"hyperv-55", "source":{ "connection":"windows10-3.company.com", "status":"failure", "message":"Unable to connect to server: invalid credentials", "last_successful_retrieve":null }, "destination":{ "connection":"candlepin.company.com", "status":"failure", "message":"ConnectionRefusedError: [Errno 111] Connection refused", "last_successful_send":null, "last_successful_send_job_status":null } } ] }
virt-who --status
コマンドは、--debug
オプションおよび --config
オプションとともに使用して、設定ファイルに関する追加情報を提供することもできます。
複数の virt-who 設定ファイルを使用する場合の問題の特定
1 つのサーバーに virt-who 設定ファイルが複数ある場合は、1 度に 1 つのファイルを別のディレクトリーに移動し、各ファイルの移動後にテストを行います。問題が発生しなくなった場合、問題の原因は直近で移動したファイルにあることになります。問題の解決後、virt-who 設定ファイルを元の場所に戻します。
または、--config
オプションを使用して場所を指定することにより、各ファイルを移動後にテストできます。以下に例を示します。
# virt-who --debug --one-shot --config /tmp/conf_name.conf
RHEL 9 Beta 以降では、virt-who --status
に --debug
および --config
オプションを付けて入力すると、ディレクトリーから他のファイルを削除することなく、問題の原因となっている設定ファイルを特定することができます。以下に例を示します。
#virt-who --debug --status --config /tmp/conf_name.conf
また、--json
オプションを付けてコマンドを入力すると、各設定のより詳細な情報を JSON 形式で表示することができます。以下に例を示します。
#virt-who --debug --status --json --config /tmp/conf_name.conf
重複するハイパーバイザーの特定
ハイパーバイザーが重複すると、サブスクリプションとエンタイトルメントにエラーが発生する可能性があります。以下のコマンドを入力して、重複したハイパーバイザーの有無を確認します。
# systemctl stop virt-who # virt-who -op >/tmp/virt-who.json # systemctl start virt-who # cat /tmp/virt-who.json | json_reformat | grep name | sort | uniq -c | sort -nr | head -n10 3 "name": "localhost" 1 "name": "rhel1.example.com" 1 "name": "rhel2.example.com" 1 "name": "rhel3.example.com" 1 "name": "rhel4.example.com" 1 "name": "rhvh1.example.com" 1 "name": "rhvh2.example.com" 1 "name": "rhvh3.example.com" 1 "name": "rhvh4.example.com" 1 "name": "rhvh5.example.com"
この例では、3 つのハイパーバイザーに同じ FQDN (localhost
) がありますが、固有の FQDN を使用するようにこれを修正する必要があります。
重複した仮想マシンの特定
以下のコマンドを入力して、重複した仮想マシンを確認します。
# systemctl stop virt-who # virt-who -op >/tmp/virt-who.json # systemctl start virt-who # cat /tmp/virt-who.json | json_reformat | grep "guestId" | sort | uniq -c | sort -nr | head -n10
ハイパーバイザーの数の確認
以下のコマンドを入力して、現在報告されているハイパーバイザーの virt-who の数を確認します。
# systemctl stop virt-who # virt-who -op >/tmp/virt-who.json # systemctl start virt-who # cat /tmp/virt-who.json | json_reformat | grep name | sort | uniq -c | wc -l
RHEL 9 Beta 以降では、以下のコマンドを入力して、virt-who が最後に成功した実行サイクルで報告したハイパーバイザーの数を確認します。
# virt-who --status --json
仮想マシン数の確認
以下のコマンドを入力し、virt-who が現在報告している仮想マシンの数を確認します。
# systemctl stop virt-who # virt-who -op >/tmp/virt-who.json # systemctl start virt-who # cat /tmp/virt-who.json | json_reformat | grep "guestId" | sort | uniq -c | wc -l
RHEL 9 Beta 版では、次のコマンドを入力して、virt-who が最後に成功した実行サイクルで報告したゲスト数を確認します。
# virt-who --status --json