A.3. virt-who のトラブルシューティングの方法

virt-who のステータスの確認

Satellite Web UI で virt-who の ステータスを確認するには、インフラストラクチャー > Virt-who 設定 に移動して、各 virt-who インスタンスの ステータス 列をチェックします。ステータスが OK の場合は、virt-who が Satellite Server に正常に接続されており、各ハイパーバイザーによって管理されている仮想マシンをレポートしていることを示します。

CLI を使用してすべての virt-who インスタンスのステータスを一覧表示するには、Satellite Server で以下のコマンドを実行します。

# hammer virt-who-config list

このコマンドの出力には、virt-who の各インスタンスが Satellite Server にレポートした日時が含まれます。

デバッグロギング

/var/log/rhsm/rhsm.log ファイルをチェックします。このファイルに、virt-who はデフォルトでアクティビティーすべてをログに記録します。

詳細なロギングを有効にするには、virt-who 設定を変更します。

  • Satellite Web UI で Enable debugging output チェックボックスを選択します。
  • Hammer CLI で、--debug true オプションを追加します。

変更を有効にするには、設定を再デプロイします。

根本的な問題が解決したら、virt-who 設定を変更してデバッグを無効にし、設定を再デプロイします。

設定オプションのテスト

必要に応じて変更を加え、結果をテストします。virt-who は、設定ファイル、認証情報、仮想化プラットフォームへの接続のテストに役立つ 2 つのオプションを提供します。

  • virt-who --one-shot コマンドは、設定ファイルを読み取り、仮想マシンの一覧を取得し、その一覧を Satellite Server に送信してから、直ちに終了します。
  • virt-who --print コマンドは設定ファイルを読み取り、仮想マシンの一覧を出力しますが、その一覧を Satellite Server には送信しません。

ハイパーバイザーとその仮想マシンの一覧は JSON 形式で出力されます。以下は、VMware vSphere インスタンスからの抜粋です。すべてのハイパーバイザーからの出力は以下の構成になっています。

{
    "guestId": "422f24ed-71f1-8ddf-de53-86da7900df12",
    "state": 5,
    "attributes": {
        "active": 0,
        "virtWhoType": "esx",
        "hypervisorType": "vmware"
    }
},

複数の virt-who 設定ファイルを使用する場合の問題の特定

1 つのサーバーに virt-who 設定ファイルが複数ある場合は、1 度に 1 つのファイルを別のディレクトリーに移動し、各ファイルの移動後にテストを行います。問題が発生しなくなった場合は、問題の原因は直近で移動したファイルにあることになります。問題の解決後、virt-who 設定ファイルを元の場所に戻します。

または、--config オプションを使用して場所を指定することにより、各ファイルを移動後にテストできます。例を示します。

# virt-who --debug --one-shot --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

仮想マシン数の確認

以下のコマンドを実行して、現在 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