第6章 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コマンドは、設定ファイルを読み込み、仮想マシンのリストを取得して、Red Hat Satellite や Red Hat Subscription Management などのサブスクリプション管理システムに送信し、すぐに終了します。 -
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