×

作为管理员,您可以首先启用downwardMetrics功能网关,然后配置downwardMetrics设备,从而将有限的宿主机和虚拟机 (VM) 指标集公开给访客 VM。

用户可以使用命令行或vm-dump-metrics工具查看指标结果。

在 Red Hat Enterprise Linux (RHEL) 9 上,请使用命令行查看下行指标。请参见 使用命令行查看下行指标

vm-dump-metrics 工具在 Red Hat Enterprise Linux (RHEL) 9 平台上不受支持。

启用或禁用 downwardMetrics 功能网关

您可以通过执行以下任一操作来启用或禁用downwardMetrics功能网关

  • 在默认编辑器中编辑超融合自定义资源 (CR)

  • 使用命令行

在 YAML 文件中启用或禁用 downwardMetrics 功能网关

要公开宿主机虚拟机的下行指标,您可以通过编辑 YAML 文件来启用downwardMetrics功能网关。

先决条件
  • 您必须具有管理员权限才能启用功能网关。

步骤
  1. 通过运行以下命令在默认编辑器中打开超融合自定义资源 (CR)

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
  2. 选择启用或禁用 downwardMetrics 功能网关,如下所示

    • 要启用downwardMetrics功能网关,请添加然后将spec.featureGates.downwardMetrics设置为true。例如

      apiVersion: hco.kubevirt.io/v1beta1
      kind: HyperConverged
      metadata:
        name: kubevirt-hyperconverged
        namespace: openshift-cnv
      spec:
          featureGates:
            downwardMetrics: true
      # ...
    • 要禁用downwardMetrics功能网关,请将spec.featureGates.downwardMetrics设置为false。例如

      apiVersion: hco.kubevirt.io/v1beta1
      kind: HyperConverged
      metadata:
        name: kubevirt-hyperconverged
        namespace: openshift-cnv
      spec:
          featureGates:
            downwardMetrics: false
      # ...

从命令行启用或禁用 downwardMetrics 功能网关

要公开宿主机虚拟机的下行指标,您可以使用命令行启用downwardMetrics功能网关。

先决条件
  • 您必须具有管理员权限才能启用功能网关。

步骤
  • 按照以下步骤选择启用或禁用downwardMetrics特性开关

    • 运行以下示例中所示的命令来启用downwardMetrics特性开关

      $ oc patch hco kubevirt-hyperconverged -n openshift-cnv \
        --type json -p '[{"op": "replace", "path": \
        "/spec/featureGates/downwardMetrics" \
        "value": true}]'
    • 运行以下示例中所示的命令来禁用downwardMetrics特性开关

      $ oc patch hco kubevirt-hyperconverged -n openshift-cnv \
        --type json -p '[{"op": "replace", "path": \
        "/spec/featureGates/downwardMetrics" \
        "value": false}]'

配置下行指标设备

您可以通过创建一个包含downwardMetrics设备的配置文件来启用对主机虚拟机下行指标的捕获。添加此设备将建立通过virtio-serial端口公开指标。

先决条件
  • 您必须首先启用downwardMetrics特性开关。

步骤
  • 编辑或创建一个包含downwardMetrics设备的YAML文件,如下例所示

    downwardMetrics 配置文件示例
    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: fedora
      namespace: default
    spec:
      dataVolumeTemplates:
        - metadata:
            name: fedora-volume
          spec:
            sourceRef:
              kind: DataSource
              name: fedora
              namespace: openshift-virtualization-os-images
            storage:
              resources: {}
              storageClassName: hostpath-csi-basic
      instancetype:
        name: u1.medium
      preference:
        name: fedora
      running: true
      template:
        metadata:
          labels:
            app.kubernetes.io/name: headless
        spec:
          domain:
            devices:
              downwardMetrics: {} (1)
          subdomain: headless
          volumes:
            - dataVolume:
                name: fedora-volume
              name: rootdisk
            - cloudInitNoCloud:
                userData: |
                  #cloud-config
                  chpasswd:
                    expire: false
                  password: '<password>' (2)
                  user: fedora
              name: cloudinitdisk
    1 downwardMetrics设备。
    2 fedora用户的密码。

查看下行指标

您可以使用以下任一选项查看下行指标

  • 命令行界面 (CLI)

  • vm-dump-metrics工具

在 Red Hat Enterprise Linux (RHEL) 9 上,使用命令行查看下行指标。vm-dump-metrics工具在 Red Hat Enterprise Linux (RHEL) 9 平台上不受支持。

使用命令行查看下行指标

您可以从访客虚拟机 (VM) 内部输入命令来查看下行指标。

步骤
  • 运行以下命令

    $ sudo sh -c 'printf "GET /metrics/XML\n\n" > /dev/virtio-ports/org.github.vhostmd.1'
    $ sudo cat /dev/virtio-ports/org.github.vhostmd.1

使用 vm-dump-metrics 工具查看下行指标

要查看下行指标,请安装vm-dump-metrics工具,然后使用该工具公开指标结果。

在 Red Hat Enterprise Linux (RHEL) 9 上,使用命令行查看下行指标。vm-dump-metrics工具在 Red Hat Enterprise Linux (RHEL) 9 平台上不受支持。

步骤
  1. 运行以下命令安装vm-dump-metrics工具

    $ sudo dnf install -y vm-dump-metrics
  2. 运行以下命令检索指标结果

    $ sudo vm-dump-metrics
    示例输出
    <metrics>
      <metric type="string" context="host">
        <name>HostName</name>
        <value>node01</value>
    [...]
      <metric type="int64" context="host" unit="s">
        <name>Time</name>
        <value>1619008605</value>
      </metric>
      <metric type="string" context="host">
        <name>VirtualizationVendor</name>
        <value>kubevirt.io</value>
      </metric>
    </metrics>