付録A virt-who のトラブルシューティング

A.1. virt-who 設定の修正

Satellite Web UI または Hammer CLI を使用して、既存の virt-who 設定を変更することができます。たとえば、virt-who の実行頻度を変更する必要がある場合は、virt-who 設定を更新して再デプロイする必要があります。

手順

  1. Satellite Web UI で、インフラストラクチャー > Virt-who configurations に移動します。
  2. 変更する virt-who 設定を見つけて、Actions 列で Edit をクリックします。
  3. 変更するフィールドを編集します。
  4. Submit をクリックします。
  5. 変更された virt-who 設定を再度デプロイします。

CLI をご利用の場合は、以下を実行します。

  1. Satellite Server で hammer virt-who-config update コマンドを入力して、変更する設定の名前、および変更するオプションの新しい値を指定します。設定名を変更する場合は、--new-name オプションを使用する必要があります。

    # hammer virt-who-config update \
    --name current_name \
    --new-name new_name \
    --interval 1440
  2. 変更された virt-who 設定を再度デプロイします。

A.2. 既存の virt-who 設定の削除

既存の virt-who 設定を削除するには、まず Satellite Web UI で設定のエントリーを削除し、その設定がデプロイされているホストのファイルシステムから設定ファイルを削除する必要があります。

手順

  1. Satellite Web UI で、インフラストラクチャー > Virt-who configurations に移動します。
  2. 削除する設定の Actions 一覧から Delete を選択します。
  3. virt-who 設定を削除するホストで、設定ファイルを削除します。

    # rm /etc/virt-who.d/conf_name.conf

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

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

Satellite Web UI で virt-who の ステータスを確認するには、インフラストラクチャー > Virt-who configurations に移動して、各 virt-who インスタンスの Status 列をチェックします。ステータスが 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

A.4. virt-who のトラブルシューティングシナリオ

virt-who が仮想化プラットフォームとの接続に失敗する

virt-who がハイパーバイザーまたは仮想化マネージャーへの接続に失敗する場合は、Red Hat サブスクリプションマネージャーのログファイル /var/log/rhsm/rhsm.log を確認します。No route to host というメッセージが表示される場合は、ハイパーバイザーが間違ったポートでリッスンしている可能性があります。この場合は virt-who 設定を変更し、Hypervisor Server 値に正しいポート番号を追加します。

virt-who 設定を変更したら、この設定を再デプロイする必要があります。

virt-who がローカルネットワークの HTTP プロキシーを介して仮想化プラットフォームに接続できない

virt-who が HTTP プロキシー経由でハイパーバイザーや仮想化マネージャーに接続できない場合は、ローカルトラフィックが通過できるようにプロキシーを設定するか、virt-who 設定を変更してプロキシーを使用しないようにします。

virt-who 設定を変更したら、この設定を再デプロイする必要があります。