第 6 章 virt-who 故障排除方法


验证 virt-who 状态

验证 virt-who 服务的状态:

# systemctl status virt-who.service
Copy to Clipboard Toggle word wrap

调试日志记录

检查 /var/log/rhsm/rhsm.log 文件,其中 virt-who 默认记录其所有活动。

如需更详细的日志记录,请在 /etc/virt-who.conf 文件中启用 debug 选项:

[global]
debug=True
Copy to Clipboard Toggle word wrap

重启 virt-who 服务以使更改生效。

解决底层问题后,修改 /etc/virt-who.conf 文件以禁用调试,然后重启 virt-who 服务。

测试配置选项

进行更改并测试结果,根据需要重复。virt-who 提供三个选项,可帮助测试到虚拟化平台的配置文件、凭证和连接:

  • 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-shotvirt-who --print 命令的预期输出是虚拟机监控程序及其虚拟机列表,采用 JSON 格式。以下是从 VMware vSphere 实例中提取的。所有 hypervisor 的输出遵循相同的结构。

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

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
Copy to Clipboard Toggle word wrap

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
        }
    }
]
}
Copy to Clipboard Toggle word wrap

virt-who --status 命令也可以与 --debug--config 选项一起使用,以提供有关配置文件的附加信息。

在使用多个 virt-who 配置文件时识别问题

如果您在一个服务器上有多个 virt-who 配置文件,请在每次移动后测试时将一个文件移动到不同的目录中。如果不再出现这个问题,原因将与最近移动的文件相关联。解决问题后,将 virt-who 配置文件返回到其原始位置。

或者,您可以在移动后测试单个文件,使用 --config 选项指定其位置。例如:

# virt-who --debug --one-shot --config /tmp/conf_name.conf
Copy to Clipboard Toggle word wrap

从 RHEL 9 Beta 版开始,您可以使用 --debug--config 选项输入 virt-who --status 选项来识别配置文件,而不从目录中删除任何其他文件。例如:

#virt-who --debug --status --config /tmp/conf_name.conf
Copy to Clipboard Toggle word wrap

您还可以使用 --json 选项输入命令,以 JSON 格式查看有关每个配置的更多详细信息。例如:

#virt-who --debug --status --json --config /tmp/conf_name.conf
Copy to Clipboard Toggle word wrap

识别重复的虚拟机监控程序

重复的 hypervisor 可能会导致订阅和权利错误。输入以下命令检查重复的虚拟机监控程序:

# 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"
Copy to Clipboard Toggle word wrap

在本例中,三个 hypervisor 具有相同的 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
Copy to Clipboard Toggle word wrap

检查虚拟机监控程序数量

输入以下命令检查当前报告的 hypervisor 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
Copy to Clipboard Toggle word wrap

从 RHEL 9 Beta 版开始,输入以下命令检查 virt-who 在最后一次成功运行周期期间报告的虚拟机监控程序数量:

# virt-who --status --json
Copy to Clipboard Toggle word wrap

检查虚拟机数量

输入以下命令检查 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
Copy to Clipboard Toggle word wrap

从 RHEL 9 Beta 版开始,输入以下命令检查 virt-who 在最后一次成功运行周期期间报告的客户机数量:

# virt-who --status --json
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat