A.3. virt-who 故障排除方法
验证 virt-who 状态
要在 Satellite Web UI 中验证 virt-who 的状态,请导航到 Infrastructure > Virt-who 配置 并检查每个 virt-who 实例的 Status 列。状态 OK
表示 virt-who 成功连接到 Satellite 服务器并报告由每个虚拟机监控程序管理的虚拟机。
要使用 CLI 列出所有 virt-who 实例的状态,请在 Satellite 服务器上输入以下命令:
# hammer virt-who-config list
命令的输出包括每个报告到 Satellite 服务器的 virt-who 实例的日期和时间。
调试日志记录
检查 /var/log/rhsm/rhsm.log
文件,其中 virt-who 默认记录其所有活动。
要启用更详细的日志记录,修改 virt-who 配置:
- 在 Satellite Web UI 中,选中 Enable debugging output 复选框。
-
在 Hammer CLI 中,添加
--debug true
选项。
重新部署配置以使更改生效。
当底层问题被解决时,修改 virt-who 配置以禁用调试,然后再次重新部署配置。
测试配置选项
进行更改并测试结果,根据需要重复。virt-who 提供了两个选项来帮助测试配置文件、凭证和与虚拟化平台的连接:
-
virt-who --one-shot
命令读取配置文件,检索虚拟机列表并将其发送到 Satellite 服务器,然后立即退出。 -
virt-who --print
命令读取配置文件,并打印虚拟机列表,但不会将其发送到 Satellite 服务器。
预期的输出是虚拟机监控程序及其虚拟机的列表,采用 JSON 格式。以下是从 VMware vSphere 实例中提取的。所有虚拟机监控程序的输出遵循相同的结构。
{ "guestId": "422f24ed-71f1-8ddf-de53-86da7900df12", "state": 5, "attributes": { "active": 0, "virtWhoType": "esx", "hypervisorType": "vmware" } },
在使用多个 virt-who 配置文件时识别问题
如果一个服务器上有多个 virt-who 配置文件,请在测试每个文件移动时将一个文件移到另一个目录。如果不再出现这个问题,则原因与最近移动的文件相关联。解决此问题后,将 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"
在本例中,三个虚拟机监控程序具有相同的 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
检查虚拟机监控程序的数量
输入以下命令检查 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
检查虚拟机数量
输入以下命令检查 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