13.2. 为红帽支持收集数据
当您向红帽支持 提交支持问题单 时,使用以下工具为 OpenShift Container Platform 和 OpenShift Virtualization 提供调试信息会很有帮助:
- must-gather 工具
- 
							must-gather工具收集诊断信息,包括资源定义和服务日志。
- Prometheus
- Prometheus 是一个时间序列数据库和用于指标的规则评估引擎。Prometheus 将警报发送到 Alertmanager 进行处理。
- Alertmanager
- Alertmanager 服务处理从 Prometheus 接收的警报。Alertmanager 还负责将警报发送到外部通知系统。如需有关 OpenShift Container Platform 监控堆栈的信息,请参阅关于 OpenShift Container Platform 监控。
13.2.1. 收集有关环境的数据
收集有关环境的数据可最小化分析和确定根本原因所需的时间。
先决条件
- 将 Prometheus 指标数据的保留时间设置为最少 7 天。
- 配置 Alertmanager 以捕获相关的警报并将其发送到专用邮箱,以便可以在集群外部查看和保留它们。
- 记录受影响的节点和虚拟机的确切数量。
13.2.2. 收集虚拟机的数据
收集有关出现故障的虚拟机 (VM) 的数据可最小化分析和确定根本原因所需的时间。
先决条件
- Linux 虚拟机: 安装最新的 QEMU 客户机代理。
- Windows 虚拟机: - 记录 Windows 补丁更新详情。
- 安装最新的 VirtIO 驱动程序。
- 安装最新的 QEMU 客户机代理。
- 如果启用了远程桌面协议(RDP),使用 桌面查看器 进行连接以确定连接软件是否存在问题。
 
流程
- 
							使用 /usr/bin/gather脚本为虚拟机收集 must-gather 数据。
- 收集在重启前崩溃的虚拟机截图。
- 在修复尝试前,从虚拟机收集内存转储。
- 记录出现故障的虚拟机通常具有的因素。例如,虚拟机具有相同的主机或网络。
13.2.3. 为 OpenShift Virtualization 使用 must-gather 工具
					您可以使用 OpenShift Virtualization 镜像运行 must-gather 命令收集有关 OpenShift Virtualization 资源的数据。
				
默认数据收集包含有关以下资源的信息:
- OpenShift Virtualization Operator 命名空间,包括子对象
- OpenShift Virtualization 自定义资源定义
- 包含虚拟机的命名空间
- 基本虚拟机定义
默认情况下,目前不收集实例类型信息;但是,您可以运行一个命令来选择性地收集它。
流程
- 运行以下命令来收集有关 OpenShift Virtualization 的数据: - oc adm must-gather \ --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.16.21 \ -- /usr/bin/gather - $ oc adm must-gather \ --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.16.21 \ -- /usr/bin/gather- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
13.2.3.1. must-gather 工具选项
						您可以运行 oc adm must-gather 命令来收集集群中部署的所有 Operator 和产品的 must gather 镜像,而无需明确指定所需的镜像。另外,您可以为以下选项指定脚本和环境变量组合:
					
- 从命名空间收集详细虚拟机 (VM) 信息
- 收集指定虚拟机的详细信息
- 收集镜像、image-stream 和 image-stream-tags 信息
- 
								限制 must-gather工具使用的最大并行进程数
13.2.3.1.1. 参数
环境变量
您可以为兼容脚本指定环境变量。
- NS=<namespace_name>
- 
										从您指定的命名空间中收集虚拟机信息,包括 virt-launcherpod 详情。为所有命名空间收集VirtualMachine和VirtualMachineInstanceCR 数据。
- VM=<vm_name>
- 
										收集特定虚拟机的详情。要使用这个选项,还必须使用 NS环境变量指定命名空间。
- PROS=<number_of_processes>
- 修改 - must-gather工具使用的最大并行进程数。默认值为- 5。重要- 使用太多的并行进程可能会导致性能问题。不建议增加并行进程的最大数量。 
脚本
每个脚本仅与某些环境变量组合兼容。
- /usr/bin/gather
- 
										使用默认 must-gather脚本,从所有命名空间中收集集群数据,且仅包含基本的虚拟机信息。此脚本只与PROS变量兼容。
- /usr/bin/gather --vms_details
- 
										收集属于 OpenShift Virtualization 资源的虚拟机日志文件、虚拟机定义、control-plane 日志和命名空间。指定命名空间包括其子对象。如果您在指定命名空间或虚拟机的情况下使用这个参数,must-gather工具会为集群中的所有虚拟机收集这个数据。此脚本与所有环境变量兼容,但是如果使用VM变量,则必须指定一个命名空间。
- /usr/bin/gather --images
- 
										收集镜像、image-stream 和 image-stream-tags 自定义资源信息。此脚本只与 PROS变量兼容。
- /usr/bin/gather --instancetypes
- 收集实例类型信息。默认情况下,目前不收集这些信息;但是,您可以选择性地收集这些信息。
13.2.3.1.2. 使用和示例
环境变量是可选的。您可以自行运行脚本,也可以使用一个或多个兼容环境变量来运行脚本。
| 脚本 | 兼容环境变量 | 
|---|---|
| 
											 | 
											*  | 
| 
											 | 
											* 对于命名空间: 
											* 对于虚拟机: 
											*  | 
| 
											 | 
											*  | 
语法
								要在单个传递中为集群中的所有 Operator 和产品收集 must-gather 日志,请运行以下命令:
							
oc adm must-gather --all-images
$ oc adm must-gather --all-images
							如果需要将额外的参数传递给独立的 must-gather 镜像,请使用以下命令:
						
oc adm must-gather \ --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.16.21 \ -- <environment_variable_1> <environment_variable_2> <script_name>
$ oc adm must-gather \
  --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.16.21 \
  -- <environment_variable_1> <environment_variable_2> <script_name>默认数据收集并行进程
默认情况下,五个进程并行运行。
oc adm must-gather \ --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.16.21 \ -- PROS=5 /usr/bin/gather
$ oc adm must-gather \
  --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.16.21 \
  -- PROS=5 /usr/bin/gather - 1
- 您可以通过更改默认值来修改并行进程的数量。
详细虚拟机信息
								以下命令在 mynamespace 命名空间中收集 my-vm 虚拟机的详细虚拟机信息:
							
oc adm must-gather \ --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.16.21 \ -- NS=mynamespace VM=my-vm /usr/bin/gather --vms_details
$ oc adm must-gather \
  --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.16.21 \
  -- NS=mynamespace VM=my-vm /usr/bin/gather --vms_details - 1
- 如果您使用VM环境变量,则需要NS环境变量。
image、image-stream 和 image-stream-tags 信息
以下命令从集群中收集镜像、image-stream 和 image-stream-tags 信息:
oc adm must-gather \ --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.16.21 \ /usr/bin/gather --images
$ oc adm must-gather \
  --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.16.21 \
  /usr/bin/gather --images实例类型信息
以下命令从集群收集实例类型信息:
oc adm must-gather \ --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.16.21 \ /usr/bin/gather --instancetypes
$ oc adm must-gather \
  --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.16.21 \
  /usr/bin/gather --instancetypes