15.2. 为红帽支持收集数据


当您向红帽支持 提交支持问题单 时,使用以下工具为 OpenShift Container Platform 和 OpenShift Virtualization 提供调试信息会很有帮助:

must-gather 工具
must-gather 工具收集诊断信息,包括资源定义和服务日志。
Prometheus
Prometheus 是一个时间序列数据库和用于指标的规则评估引擎。Prometheus 将警报发送到 Alertmanager 进行处理。
Alertmanager
Alertmanager 服务处理从 Prometheus 接收的警报。Alertmanager 还负责将警报发送到外部通知系统。如需有关 OpenShift Container Platform 监控堆栈的信息,请参阅关于 OpenShift Container Platform 监控

15.2.1. 收集有关环境的数据

收集有关环境的数据可最小化分析和确定根本原因所需的时间。

先决条件

15.2.2. 收集虚拟机的数据

收集有关出现故障的虚拟机 (VM) 的数据可最小化分析和确定根本原因所需的时间。

先决条件

流程

  1. 使用 /usr/bin/gather 脚本为虚拟机收集 must-gather 数据
  2. 收集在重启崩溃的虚拟机截图。
  3. 在修复尝试从虚拟机收集内存转储
  4. 记录出现故障的虚拟机通常具有的因素。例如,虚拟机具有相同的主机或网络。

您可以使用 OpenShift Virtualization 镜像运行 must-gather 命令收集有关 OpenShift Virtualization 资源的数据。

默认数据收集包含有关以下资源的信息:

  • OpenShift Virtualization Operator 命名空间,包括子对象
  • OpenShift Virtualization 自定义资源定义
  • 包含虚拟机的命名空间
  • 基本虚拟机定义

您可以在 must-gather 命令中添加可选环境详情和脚本来收集其他信息。使用这些环境变量和脚本收集有关特定虚拟机、镜像或实例类型的数据。

先决条件

  • 已安装 OpenShift CLI(oc)。

流程

  • 运行 must-gather 命令来收集有关 OpenShift Virtualization 的数据:

    $ oc adm must-gather \
      --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.20.1 \
      -- /usr/bin/gather
    Copy to Clipboard Toggle word wrap
    注意

    您还可以运行以下命令来为集群中的所有 Operator 和产品收集 must-gather 日志:

    $ oc adm must-gather --all-images
    Copy to Clipboard Toggle word wrap
    1. 运行以下命令,修改收集 must-gather 数据时并行运行的进程数:

      $ oc adm must-gather \
        --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.20.1 \
        -- PROS=<number> /usr/bin/gather
      Copy to Clipboard Toggle word wrap

      PROS 定义运行用于收集数据的并行进程数量。默认的进程数为 5。增加进程数量可能会导致数据收集速度,但使用更多资源。不建议增加并行进程的最大数量。

    2. 运行以下命令,为特定命名空间中的特定虚拟机收集详细信息:

      $ oc adm must-gather \
        --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.20.1 \
        -- NS=<namespace name> VM=<VM name> /usr/bin/gather --vms_details
      Copy to Clipboard Toggle word wrap

      NSnamespace 的环境变量。使用 VM 环境变量时需要这样做。

    3. 运行以下命令从集群中收集 image、image-stream 和 image-stream-tags 信息:

      $ oc adm must-gather \
       --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.20.1 \
       /usr/bin/gather --images
      Copy to Clipboard Toggle word wrap
    4. 运行以下命令,从集群收集有关实例类型的信息:

      $ oc adm must-gather \
       --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.20.1 \
       /usr/bin/gather --instancetypes
      Copy to Clipboard Toggle word wrap

15.2.3.1. must-gather 工具选项

您可以在 must-gather 命令中添加可选参数,以便收集除 must-gather 默认收集外的额外信息。

您可以为以下选项指定脚本和环境变量组合:

  • 从命名空间收集详细虚拟机 (VM) 信息
  • 收集指定虚拟机的详细信息
  • 收集镜像、image-stream 和 image-stream-tags 信息
  • 限制 must-gather 工具使用的最大并行进程数
15.2.3.1.1. 环境变量

您可以为兼容脚本指定环境变量。

NS=<namespace_name>
从您指定的命名空间中收集虚拟机信息,包括 virt-launcher pod 详情。为所有命名空间收集 VirtualMachineVirtualMachineInstance CR 数据。
VM=<vm_name>
收集特定虚拟机的详情。要使用这个选项,还必须使用 NS 环境变量指定命名空间。
PROS=<number_of_processes>

修改 must-gather 工具使用的最大并行进程数。默认值为 5

重要

使用太多的并行进程可能会导致性能问题。不建议增加并行进程的最大数量。

15.2.3.1.2. 脚本

每个脚本仅与某些环境变量组合兼容。

/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
收集实例类型信息。默认情况下,目前不收集这些信息;但是,您可以选择性地收集这些信息。
15.2.3.1.3. 使用和示例

您可以自行运行脚本,也可以使用一个或多个兼容环境变量来运行脚本。

使用可选参数的 must-gather 语法

$ oc adm must-gather \
  --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.20.1 \
  -- <environment_variable_1> <environment_variable_2> <script_name>
Copy to Clipboard Toggle word wrap

Expand
表 15.2. 兼容参数
脚本兼容环境变量

/usr/bin/gather

* PROS=<number_of_processes>

/usr/bin/gather --vms_details

* 对于命名空间:NS=<namespace_name>

* 对于虚拟机:VM=<vm_name> NS=<namespace_name>

* PROS=<number_of_processes>

/usr/bin/gather --images

* PROS=<number_of_processes>

15.2.4. 生成虚拟机内存转储

当虚拟机(VM)意外终止时,您可以使用 virtctl memory-dump 生成内存转储命令来输出虚拟机内存转储并将其保存到持久性卷声明(PVC)中。之后,您可以分析内存转储,以诊断并排除虚拟机上的问题。

先决条件

  • 热插功能门在 HyperConverged 自定义资源中启用。为此,请运行以下命令:

    $ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \
      --type json -p '[{"op": "add", "path": "/spec/featureGates", \
      "value": "HotplugVolumes"}]'
    Copy to Clipboard Toggle word wrap
  • 可选:您有一个要保存内存转储的现有 PVC。

    • PVC 卷模式必须是 FileSystem
    • PVC 必须足够大以保存内存转储。

      计算 PVC 大小的公式为 (VMMemorySize + 100Mi)* FileSystemOverhead,其中 100Mi 是内存转储开销,FileSystemOverheadHCO 对象中定义。

流程

  1. 创建所需虚拟机的内存转储:

    • 如果您选择了要保存内存转储的现有 PVC:

      $ virtctl memory-dump get <vm_name> --claim-name=<pvc_name>
      Copy to Clipboard Toggle word wrap
    • 如果要为内存转储创建新 PVC:

      $ virtctl memory-dump get <vm_name> --claim-name=<new_pvc_name> --create-claim
      Copy to Clipboard Toggle word wrap
  2. 下载内存转储:

    $ virtctl memory-dump download <vm_name> --output=<output_file>
    Copy to Clipboard Toggle word wrap
  3. 将内存转储附加到红帽支持问题单中。

    或者,您可以检查内存转储,例如,使用 volatility3 工具

  4. 可选:删除内存转储:

    $ virtctl memory-dump remove <vm_name>
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat