11.2. Prometheus 对虚拟资源的查询


使用 Red Hat OpenShift Service on AWS 监控仪表板查询虚拟化指标。OpenShift Virtualization 提供用于监控集群基础架构资源消耗的指标,包括网络、存储和客户机内存交换。您还可以使用指标查询实时迁移状态。

11.2.1. 先决条件

  • 要进行客户机内存交换查询以返回数据,必须在虚拟客户机上启用内存交换。

11.2.2. 查询指标

Red Hat OpenShift Service on AWS 监控仪表板可让您运行 Prometheus Query Language (PromQL)查询来查看图表中呈现的指标。此功能提供有关集群以及要监控的任何用户定义工作负载的状态信息。

dedicated-admin 的身份,您可以同时查询一个或多个命名空间,以获取有关用户定义的项目的指标。

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

11.2.2.1. 以集群管理员身份查询所有项目的指标

作为 dedicated-admin 或具有所有项目的查看权限的用户,您可以在 Metrics UI 中的 AWS 和用户定义的项目上访问所有默认 Red Hat OpenShift Service 的指标。

注意

只有专用管理员有权访问由 Red Hat OpenShift Service on AWS 监控提供的第三方 UI。

先决条件

  • 您可以使用具有 dedicated-admin 角色的用户访问集群,或具有所有项目的查看权限。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 从 Red Hat OpenShift Service on AWS web 控制台中的 Administrator 视角,选择 Observe Metrics
  2. 要添加一个或多个查询,请执行以下操作之一:

    选项描述

    创建自定义查询。

    将 Prometheus Query Language (PromQL) 查询添加到 Expression 字段中。

    当您输入 PromQL 表达式时,自动完成建议会出现在下拉列表中。这些建议包括功能、指标、标签和时间令牌。您可以使用键盘箭头选择其中一项建议的项目,然后按 Enter 将项目添加到您的表达式中。您还可以将鼠标指针移到建议的项目上,以查看该项目的简短描述。

    添加多个查询。

    选择 Add query

    复制现有的查询。

    选择查询旁边的 Options 菜单 kebab ,然后选择 Duplicate 查询

    禁用查询正在运行。

    选择查询旁边的 Options 菜单 kebab 并选择 Disable query

  3. 要运行您创建的查询,请选择 Run queries。图表中会直观呈现查询的指标。如果查询无效,则 UI 会显示错误消息。

    注意

    如果查询对大量数据进行运算,这可能会在绘制时序图时造成浏览器超时或过载。要避免这种情况,请选择 Hide graph 并且仅使用指标表来校准查询。然后,在找到可行的查询后,启用图表来绘制图形。

    注意

    默认情况下,查询表会显示一个展开的视图,列出每个指标及其当前值。您可以选择 ˅ 来最小化查询的展开视图。

  4. 可选:页面 URL 现在包含您运行的查询。要在以后再次使用这一组查询,请保存这个 URL。
  5. 探索视觉化指标。最初,图表中显示所有启用的查询中的所有指标。您可以通过执行以下操作来选择显示哪些指标:

    选项描述

    隐藏查询中的所有指标。

    点查询的 Options 菜单 kebab 并点 Hide all series

    隐藏特定指标。

    前往查询表,再点指标名称旁边的带颜色的方格。

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

    任一:

    • 点击图表并在水平方向上拖动,以可视化方式选择时间范围。
    • 使用左上角的菜单来选择时间范围。

    重置时间范围。

    选择 Reset zoom

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

    将鼠标光标悬停在图表上。弹出框中会显示查询输出。

    隐藏图表。

    选择 Hide graph

11.2.2.2. 以开发者身份查询用户定义的项目的指标

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

Developer 视角中, Metrics UI 包括所选项目的一些预定义 CPU、内存、带宽和网络数据包查询。您还可以对项目的 CPU、内存、带宽、网络数据包和应用程序指标运行自定义 Prometheus Query Language (PromQL) 查询。

注意

开发者只能使用 Developer 视角,而不能使用 Administrator 视角。作为开发者,您一次只能查询一个项目的指标。开发人员无法访问由 Red Hat OpenShift Service 在 AWS 监控上提供的第三方 UI。

前提条件

  • 对于您要查看指标的项目,您可以作为开发者或具有查看权限的用户访问集群。
  • 您已为用户定义的项目启用了监控。
  • 您已在用户定义的项目中部署了服务。
  • 您已为该服务创建了 ServiceMonitor 自定义资源定义(CRD),以定义如何监控该服务。

流程

  1. 从 AWS Web 控制台中的 Red Hat OpenShift Service 中的 Developer 视角,选择 Observe Metrics
  2. Project: 列表中选择您要查看指标的项目。
  3. Select query 列表中选择查询,或者通过选择 Show PromQL 根据所选查询创建自定义 PromQL 查询。图表中会直观呈现查询的指标。

    注意

    在 Developer 视角中,您一次只能运行一个查询。

  4. 通过执行以下操作来探索视觉化的指标:

    选项描述

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

    任一:

    • 点击图表并在水平方向上拖动,以可视化方式选择时间范围。
    • 使用左上角的菜单来选择时间范围。

    重置时间范围。

    选择 Reset zoom

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

    将鼠标光标悬停在图表上。查询输出会出现在弹出窗口中。

11.2.3. 虚拟化指标

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

注意

以下示例使用 topk 查询来指定时间段。如果在那个时间段内删除虚拟机,它们仍然会显示在查询输出中。

11.2.3.1. 网络指标

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

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 台虚拟机。

11.2.3.2. 存储指标

11.2.3.2.1. 与存储相关的流量

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

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 台虚拟机。
11.2.3.2.2. 存储快照数据
kubevirt_vmsnapshot_disks_restored_from_source
返回从源虚拟机中恢复的虚拟机磁盘总数。类型:Gauge。
kubevirt_vmsnapshot_disks_restored_from_source_bytes
返回从源虚拟机恢复的字节空间量。类型:Gauge。

存储快照数据查询示例

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
此查询返回源虚拟机恢复的空间大小,以字节为单位。
11.2.3.2.3. 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 台虚拟机。

11.2.3.3. 客户机内存交换指标

以下查询可识别启用了交换最多的客户端执行内存交换最多:

kubevirt_vmi_memory_swap_in_traffic_bytes
返回虚拟客户机交换的内存总量(以字节为单位)。类型:Gauge。
kubevirt_vmi_memory_swap_out_traffic_bytes
返回虚拟 guest 正在交换的内存总量(以字节为单位)。类型:Gauge。

内存交换查询示例

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 台虚拟机,其中客户机在六分钟内执行每个给定时间段内每个给定时间最多的内存交换。
注意

内存交换表示虚拟机面临内存压力。增加虚拟机的内存分配可以缓解此问题。

11.2.3.4. 实时迁移指标

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

kubevirt_vmi_migration_data_processed_bytes
迁移到新虚拟机(VM)的客户机操作系统数据量。类型:Gauge。
kubevirt_vmi_migration_data_remaining_bytes
要迁移的客户机操作系统数据量。类型:Gauge。
kubevirt_vmi_migration_memory_transfer_rate_bytes
在客户端操作系统中达到脏的速率。脏内存是已更改但还没有写入磁盘的数据。类型:Gauge。
kubevirt_vmi_migrations_in_pending_phase
待处理的迁移数量。类型:Gauge。
kubevirt_vmi_migrations_in_scheduling_phase
调度迁移的数量。类型:Gauge。
kubevirt_vmi_migrations_in_running_phase
正在运行的迁移数量。类型:Gauge。
kubevirt_vmi_migration_succeeded
成功完成迁移的数量。类型:Gauge。
kubevirt_vmi_migration_failed
失败的迁移数量。类型:Gauge。

11.2.4. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.