6.7. virt-who 故障排除方法
验证 virt-who 状态
验证 virt-who 服务的状态:
systemctl status virt-who.service
# systemctl status virt-who.service
调试日志记录
检查 /var/log/rhsm/rhsm.log
文件,其中 virt-who 默认记录其所有活动。
如需更详细的日志记录,请在 /etc/virt-who.conf
文件中启用调试选项:
[global] debug=True
[global]
debug=True
重启 virt-who 服务以使更改生效。
当底层问题被解决时,修改 /etc/virt-who.conf
文件以禁用调试,然后重新启动 virt-who 服务。
测试配置选项
进行更改并测试结果,根据需要重复。virt-who 提供三个选项来帮助测试配置文件、凭证和与虚拟化平台的连接:
-
virt-who --one-shot
命令读取配置文件,检索虚拟机列表并将其发送到订阅管理系统,然后立即退出。 -
virt-who --print
命令读取配置文件,并打印虚拟机列表,但不会将其发送到订阅管理系统。 从 RHEL 9 Beta 开始,
virt-who --status
命令读取配置文件,并输出源和目标系统的连接状态摘要。-
带有
--json
选项的virt-who --status
命令为每个配置提供额外的连接数据。
-
带有
virt-who --one-shot
和 virt-who --print
命令的预期输出是 hypervisor 及其虚拟机的列表,采用 JSON 格式。以下是从 VMware vSphere 实例中提取的。所有虚拟机监控程序的输出遵循相同的结构。
virt-who --status
命令的预期输出是 virt-who 中每个配置的连接状态的纯文本摘要。
带有 --json
选项的 virt-who --status
命令的预期输出提供有关每个配置的额外信息,包括其上次成功运行,采用 JSON 格式。此输出还包括有关每个配置的成功或失败状态的详细信息。
- 当状态报告指示配置成功时,JSON 输出包括 virt-who 在上次运行周期期间报告的 hypervisor 和客户机的数量。
- 当状态报告指示配置失败时,JSON 输出会包含关联的错误消息。
virt-who --status
命令也可以与 --debug
和 --config
选项一起使用,以提供有关配置文件的额外信息。
在使用多个 virt-who 配置文件时识别问题
如果一个服务器上有多个 virt-who 配置文件,请在测试每个文件移动时将一个文件移到另一个目录。如果不再出现这个问题,则原因与最近移动的文件相关联。解决此问题后,将 virt-who 配置文件返回到其原始位置。
或者,您可以使用 --config
选项指定它的位置,在移动后测试单个文件。例如:
virt-who --debug --one-shot --config /tmp/conf_name.conf
# virt-who --debug --one-shot --config /tmp/conf_name.conf
从 RHEL 9 Beta 开始,您可以使用 --debug
和 --config
选项输入 virt-who --status
来识别导致问题的配置文件,而不从目录中删除任何其他文件。例如:
#virt-who --debug --status --config /tmp/conf_name.conf
#virt-who --debug --status --config /tmp/conf_name.conf
您还可以使用 --json
选项输入命令,以 JSON 格式查看每个配置的更多详细信息。例如:
#virt-who --debug --status --json --config /tmp/conf_name.conf
#virt-who --debug --status --json --config /tmp/conf_name.conf
识别重复的虚拟机监控程序
重复虚拟机监控程序可能会导致订阅和权利错误。输入以下命令检查重复的虚拟机监控程序:
在本例中,三个虚拟机监控程序具有相同的 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
# 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
# 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 在最后一次运行周期中报告的 hypervisor 数量:
virt-who --status --json
# 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
# 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
# virt-who --status --json