×

OpenShift 虚拟化提供可用于监控集群基础设施资源消耗(包括 vCPU、网络、存储和访客内存交换)的指标。您还可以使用指标来查询实时迁移状态。

先决条件

  • 要使用 vCPU 指标,必须将 `schedstats=enable` 内核参数应用于 `MachineConfig` 对象。此内核参数启用用于调试和性能调整的调度程序统计信息,并会给调度程序增加少量额外负载。有关更多信息,请参阅 向节点添加内核参数

  • 要使访客内存交换查询返回数据,必须在虚拟访客上启用内存交换。

查询指标

OpenShift 容器平台监控仪表盘允许您运行 Prometheus 查询语言 (PromQL) 查询以检查图表上可视化的指标。此功能提供有关集群状态以及您正在监控的任何用户定义工作负载的信息。

作为集群管理员,您可以查询所有核心 OpenShift 容器平台和用户定义项目的指标。

作为开发者,您必须在查询指标时指定项目名称。您必须拥有查看所选项目指标所需的权限。

作为集群管理员查询所有项目的指标

作为集群管理员或拥有所有项目查看权限的用户,您可以访问度量指标 UI 中所有默认 OpenShift 容器平台和用户定义项目的指标。

度量指标 UI 包括预定义查询,例如所有项目的 CPU、内存、带宽或网络数据包。您还可以运行自定义 Prometheus 查询语言 (PromQL) 查询。

先决条件
  • 您可以作为具有cluster-admin集群角色的用户或拥有所有项目查看权限的用户访问集群。

  • 您已安装 OpenShift CLI (oc)。

步骤
  1. 在 OpenShift 容器平台 Web 控制台的**管理员**视角中,单击**观察**并转到**指标**选项卡。

  2. 要添加一个或多个查询,请执行以下任一操作

    选项 说明

    选择现有查询。

    从**选择查询**下拉列表中选择现有查询。

    创建自定义查询。

    将您的 Prometheus 查询语言 (PromQL) 查询添加到**表达式**字段。

    键入 PromQL 表达式时,自动完成建议会显示在下拉列表中。这些建议包括函数、指标、标签和时间标记。使用键盘箭头选择这些建议项之一,然后按 Enter 将该项添加到您的表达式中。将鼠标指针悬停在建议项上以查看该项的简要说明。

    添加多个查询。

    单击**添加查询**。

    复制现有查询。

    单击查询旁边的选项菜单kebab,然后选择**复制查询**。

    禁用运行查询。

    单击查询旁边的选项菜单kebab,然后选择**禁用查询**。

  3. 要运行您创建的查询,请单击**运行查询**。查询中的指标将可视化显示在图表上。如果查询无效,UI 将显示错误消息。

    • 绘制时间序列图时,对大量数据进行操作的查询可能会超时或使浏览器过载。为避免这种情况,请单击**隐藏图表**并仅使用指标表来校准您的查询。然后,在找到可行的查询后,启用图表以绘制图表。

    • 默认情况下,查询表显示扩展视图,其中列出了每个指标及其当前值。单击˅向下箭头以最小化查询的扩展视图。

  4. 可选:页面 URL 现在包含您运行的查询。要将来再次使用此查询集,请保存此 URL。

  5. 浏览可视化指标。最初,所有启用查询的所有指标都显示在图表上。通过执行以下任一操作来选择显示哪些指标

    选项 说明

    隐藏查询中的所有指标。

    单击查询的选项菜单kebab,然后单击**隐藏所有序列**。

    隐藏特定指标。

    转到查询表,然后单击指标名称附近的彩色方块。

    放大图表并更改时间范围。

    执行以下任一操作

    • 通过水平单击并拖动图表来直观地选择时间范围。

    • 使用菜单选择时间范围。

    重置时间范围。

    单击**重置缩放**。

    显示特定时间点所有查询的输出。

    将鼠标悬停在您感兴趣的点上的图表上。查询输出将显示在弹出框中。

    隐藏图表。

    单击**隐藏图表**。

作为开发者查询用户定义项目的指标

您可以作为开发者或拥有项目查看权限的用户访问用户定义项目的指标。

度量指标 UI 包括预定义查询,例如 CPU、内存、带宽或网络数据包。这些查询仅限于所选项目。您还可以为该项目运行自定义 Prometheus 查询语言 (PromQL) 查询。

开发者只能使用**开发者**视角,而不能使用**管理员**视角。作为开发者,您一次只能查询一个项目的指标。

先决条件
  • 您可以作为开发者或拥有您正在查看其指标的项目的查看权限的用户访问集群。

  • 您已为用户定义的项目启用监控。

  • 您已在用户定义的项目中部署服务。

  • 您已为服务创建了ServiceMonitor自定义资源定义 (CRD) 以定义如何监控服务。

步骤
  1. 在 OpenShift 容器平台 Web 控制台的**开发者**视角中,单击**观察**并转到**指标**选项卡。

  2. 在**项目:**列表中选择要查看其指标的项目。

  3. 要添加一个或多个查询,请执行以下任一操作

    选项 说明

    选择现有查询。

    从**选择查询**下拉列表中选择现有查询。

    创建自定义查询。

    将您的 Prometheus 查询语言 (PromQL) 查询添加到**表达式**字段。

    键入 PromQL 表达式时,自动完成建议会显示在下拉列表中。这些建议包括函数、指标、标签和时间标记。使用键盘箭头选择这些建议项之一,然后按 Enter 将该项添加到您的表达式中。将鼠标指针悬停在建议项上以查看该项的简要说明。

    添加多个查询。

    单击**添加查询**。

    复制现有查询。

    单击查询旁边的选项菜单kebab,然后选择**复制查询**。

    禁用运行查询。

    单击查询旁边的选项菜单kebab,然后选择**禁用查询**。

  4. 要运行您创建的查询,请单击**运行查询**。查询中的指标将可视化显示在图表上。如果查询无效,UI 将显示错误消息。

    • 绘制时间序列图时,对大量数据进行操作的查询可能会超时或使浏览器过载。为避免这种情况,请单击**隐藏图表**并仅使用指标表来校准您的查询。然后,在找到可行的查询后,启用图表以绘制图表。

    • 默认情况下,查询表显示扩展视图,其中列出了每个指标及其当前值。单击˅向下箭头以最小化查询的扩展视图。

  5. 可选:页面 URL 现在包含您运行的查询。要将来再次使用此查询集,请保存此 URL。

  6. 浏览可视化指标。最初,所有启用查询的所有指标都显示在图表上。通过执行以下任一操作来选择显示哪些指标

    选项 说明

    隐藏查询中的所有指标。

    单击查询的选项菜单kebab,然后单击**隐藏所有序列**。

    隐藏特定指标。

    转到查询表,然后单击指标名称附近的彩色方块。

    放大图表并更改时间范围。

    执行以下任一操作

    • 通过水平单击并拖动图表来直观地选择时间范围。

    • 使用菜单选择时间范围。

    重置时间范围。

    单击**重置缩放**。

    显示特定时间点所有查询的输出。

    将鼠标悬停在您感兴趣的点上的图表上。查询输出将显示在弹出框中。

    隐藏图表。

    单击**隐藏图表**。

虚拟化指标

以下指标描述包括 Prometheus 查询语言 (PromQL) 查询示例。这些指标不是 API,并且可能在不同版本之间发生变化。有关虚拟化指标的完整列表,请参阅KubeVirt 组件指标

以下示例使用指定时间段的topk查询。如果在该时间段内删除了虚拟机,它们仍可能出现在查询输出中。

vCPU 指标

以下查询可以识别正在等待输入/输出 (I/O) 的虚拟机

kubevirt_vmi_vcpu_wait_seconds_total

返回虚拟机的 vCPU 的等待时间(以秒为单位)。类型:计数器。

值大于“0”表示 vCPU 想要运行,但主机调度程序尚无法运行它。无法运行表示 I/O 存在问题。

要查询 vCPU 指标,必须首先将schedstats=enable内核参数应用于MachineConfig对象。此内核参数启用用于调试和性能调整的调度程序统计信息,并为调度程序增加了少量额外负载。

vCPU 等待时间查询示例
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_vcpu_wait_seconds_total[6m]))) > 0 (1)
1 此查询返回在六分钟的时间段内每时每刻等待 I/O 的前 3 个 VM。

网络指标

以下查询可以识别正在使网络饱和的虚拟机

kubevirt_vmi_network_receive_bytes_total

返回虚拟机网络上接收的总流量(以字节为单位)。类型:计数器。

kubevirt_vmi_network_transmit_bytes_total

返回虚拟机网络上传输的总流量(以字节为单位)。类型:计数器。

网络流量查询示例
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_network_receive_bytes_total[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_network_transmit_bytes_total[6m]))) > 0 (1)
1 此查询返回在六分钟的时间段内,每时每刻网络流量最大的前 3 台虚拟机。

存储指标

与存储相关的流量

以下查询可以识别写入大量数据的虚拟机

kubevirt_vmi_storage_read_traffic_bytes_total

返回虚拟机存储相关流量的总量(以字节为单位)。类型:计数器。

kubevirt_vmi_storage_write_traffic_bytes_total

返回虚拟机存储相关流量的总写入量(以字节为单位)。类型:计数器。

与存储相关的流量查询示例
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_storage_read_traffic_bytes_total[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_storage_write_traffic_bytes_total[6m]))) > 0 (1)
1 此查询返回在六分钟的时间段内,每时每刻存储流量最大的前 3 台虚拟机。

存储快照数据

kubevirt_vmsnapshot_disks_restored_from_source

返回从源虚拟机恢复的虚拟机磁盘总数。类型:测量。

kubevirt_vmsnapshot_disks_restored_from_source_bytes

返回从源虚拟机恢复的空间量(以字节为单位)。类型:测量。

存储快照数据查询示例
kubevirt_vmsnapshot_disks_restored_from_source{vm_name="simple-vm", vm_namespace="default"} (1)
1 此查询返回从源虚拟机恢复的虚拟机磁盘总数。
kubevirt_vmsnapshot_disks_restored_from_source_bytes{vm_name="simple-vm", vm_namespace="default"} (1)
1 此查询返回从源虚拟机恢复的空间量(以字节为单位)。

I/O 性能

以下查询可以确定存储设备的 I/O 性能

kubevirt_vmi_storage_iops_read_total

返回虚拟机每秒执行的写入 I/O 操作量。类型:计数器。

kubevirt_vmi_storage_iops_write_total

返回虚拟机每秒执行的读取 I/O 操作量。类型:计数器。

I/O 性能查询示例
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_storage_iops_read_total[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_storage_iops_write_total[6m]))) > 0 (1)
1 此查询返回在六分钟的时间段内,每时每刻每秒执行 I/O 操作最多的前 3 台虚拟机。

虚拟机内存交换指标

以下查询可以识别哪些启用了交换的虚拟机正在执行最多的内存交换

kubevirt_vmi_memory_swap_in_traffic_bytes

返回虚拟客户机调入的内存总量(以字节为单位)。类型:测量。

kubevirt_vmi_memory_swap_out_traffic_bytes

返回虚拟客户机调出的内存总量(以字节为单位)。类型:测量。

内存交换查询示例
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_memory_swap_in_traffic_bytes[6m])) + sum by (name, namespace) (rate(kubevirt_vmi_memory_swap_out_traffic_bytes[6m]))) > 0 (1)
1 此查询返回在六分钟的时间段内,每时每刻虚拟客户机执行最多内存交换的前 3 台虚拟机。

内存交换表明虚拟机处于内存压力下。增加虚拟机的内存分配可以缓解此问题。

实时迁移指标

可以查询以下指标以显示实时迁移状态

kubevirt_vmi_migration_data_processed_bytes

已迁移到新虚拟机 (VM) 的客户机操作系统数据量。类型:测量。

kubevirt_vmi_migration_data_remaining_bytes

尚待迁移的客户机操作系统数据量。类型:测量。

kubevirt_vmi_migration_memory_transfer_rate_bytes

内存在客户机操作系统中变脏的速度。脏内存是指已更改但尚未写入磁盘的数据。类型:测量。

kubevirt_vmi_migrations_in_pending_phase

挂起的迁移数量。类型:测量。

kubevirt_vmi_migrations_in_scheduling_phase

正在调度的迁移数量。类型:测量。

kubevirt_vmi_migrations_in_running_phase

正在运行的迁移数量。类型:测量。

kubevirt_vmi_migration_succeeded

成功完成的迁移数量。类型:测量。

kubevirt_vmi_migration_failed

失败的迁移数量。类型:测量。