跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / 在 SUSE Linux Micro 上设置虚拟主机指标守护程序

SUSE Linux Micro 上设置虚拟主机指标守护程序

出版日期:2025-03-20
内容

vhostmd 是一款工具,用于从虚拟机主机收集指标,并可以将这些指标提供给该主机上运行的虚拟机。

原因

本文介绍了如何安装和配置 vhostmd 以启用指标收集。

工作量

读完本文大约需要 15 分钟。

目标

您将运行 vhostmd 工具并收集指标。

要求
  • 正在运行的 SUSE Linux Micro 实例

  • 在该实例上运行的虚拟机

1 什么是虚拟主机指标守护程序(又称 vhostmd)?

vhostmd 是在主机环境中运行的守护程序,在主机和 Guest 计算机之间充当指标的通讯通道。该守护程序为 Guest 计算机管理员提供了一组有限的主机资源使用数据(通常处于只读模式),以帮助分析 Guest 计算机的问题。

vhostdmd 会定期将指标写入磁盘。要收集的指标以及数据的频率和存储位置都是可配置的参数。

2 获取 vhostmd

默认情况下,交付的映像中不包含 vhostmd。因此,您必须在使用前安装它:

  1. 运行以下命令以安装该守护程序:

              > 
              sudo
              transactional-update pkg install vhostmd
  2. 重引导您的系统以切换到新快照。

  3. 运行以下命令以启动该守护程序:

              > 
              sudo
              vhostmd
              OPTIONS

    您可以使用以下选项来修改命令行为:

    • -v — 指定详细输出

    • --connect URI — 传递 libvirt 守护程序的 URI 以建立与守护程序的连接

    • -f FILE_PATH — 传递替代配置文件。有关配置的细节,请参见第 4 节 “vhostmd 配置”

    • -p PID_FILE — 创建替代 PID 文件。默认值为 /var/run/vhostmd.pid

    • -u USERNAME — 使用非特权用户

还可以将 vhostmd 作为 systemd 服务运行:

      > 
      sudo
      systemctl enable --now vhostmd
注意
注意:更改配置后需要重启动服务

每次执行第 4 节 “vhostmd 配置”中所述的配置更改后,请按如下方式重启动 vhostmd 服务:

        > 
        sudo
        systemctl restart vhostmd

3 向虚拟机提供收集的指标

您可以将收集的指标设置为对特定虚拟机可见,以供后续使用或仅用于读取。有两种方式可以实现此操作。您可以使用 virsh 命令附加指标磁盘,也可以调整域配置。

要以只读模式附加指标磁盘,请按以下方式运行 virsh

      > 
      sudo
      virsh attach-disk VIRTUAL_MACHINE \ 
  PATH_TO_METRICS_DISC --driver tap \
  --subdriver aio --type disk --mode readonly

要更改域配置,请执行以下操作:

  1. 运行以下命令

              > 
              sudo
              virsh edit
       GUEST_NAME
  2. <devices> 部分添加以下代码段以更新该部分:

    <disk type='block' device='disk'>
      <source dev='/dev/shm/vhostmd0'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
    </disk>

    调整目标的 devdbus 值。

4 vhostmd 配置

vhostmd 的默认配置文件位于 /etc/vhostmd/vhostmd.conf。您可以根据需要调整此文件。配置文件是 XML 文件,必须包含 <vhostmd> 元素。而 <vhostmd> 则包含 <globals><metrics>,如以下各节所述。您可以使用默认配置文件作为自定义更改的参考。

4.1 <globals> 元素

<globals> 元素定义磁盘存储位置、数据更新频率以及将数据传输到 Guest 计算机的方法。它包含以下元素:

<disk>

该元素用于定义存储指标数据的磁盘路径以及磁盘的大小。它可能包含以下元素:

  • <name> —定义磁盘的名称

  • <path> — 挂载磁盘的绝对路径

  • <size> — 使用 unit 属性指定指标的最大大小。k 表示 KB,m 表示 MB。

<update_period>

定义指标的更新频率。单位为秒。

<transport>

指定如何将指标传输到 Guest 计算机。对于 SUSE Linux Micro,请使用默认的 virtio

<virtio>

在这里,您可以使用以下元素:

  • <max_channels> — 指定 virtion 可在主机和 Guest 系统之间使用的最大通道数量。

  • <expiration_time> — 定义虚拟机的 virtio 通道在保持空闲状态多长时间后关闭。默认值是 <update_period> 的三倍。

4.2 <metrics> 元素

<metrics> 元素包含要收集的指标列表。每个指标都有两个属性:

type

描述指标值数据类型。可能的值包括:int32uint32int64uint64real32real64stringgroupxml

当指标返回多个值时,使用 groupxml 是指标返回有效 XML 时的一种通用形式。

context

定义特定指标的收集位置。可能的值为:

  • host,表示指标是在主机计算机上收集的

  • vm,表示指标是在 Guest 计算机上收集的

每个指标都必须具有唯一的名称和用于记录指标的命令。以下列表描述了定义指标时可能用到的元素:

<name>

定义唯一变量名称。如果指标是在虚拟机上收集的,您可以在此处使用 NAMEIDUUID。届时,这些值将替换为当前正在检查的虚拟机的实际值。

<action>

指定要用于收集指标的命令或脚本。例如,要收集总 CPU 时间,请使用:

<action>virsh dominfo NAME | sed 's/: */:/' | \
    gawk -F: '/CPU time/ {print $2;}'<action>
<variable>

如果操作返回一组值,请定义用于存储特定数据的变量。该元素需要定义以下属性:

  • name — 指定变量的名称

  • type — 指定变量的数据类型

5 存储所收集的指标的方式

vhostmd 将收集的指标数据以原始格式存储在指标磁盘上。该磁盘包含一个 32 字节的标头,后面跟着 XML 格式的指标数据。

5.1 指标 XML 格式

收集的指标结果与配置的指标定义类似。<metric> 元素可以包含以下属性:

type

表示特定指标的数据类型,例如 string

context

标识指标是在主机 (host) 上收集,还是在虚拟机 (vm) 上收集。

id

vm 上下文中使用。指出虚拟机的 ID 编号。

uuid

vm 上下文中使用。指出虚拟机的全局唯一标识符。

<metric> 元素包含以下元素:

<name>

指出指标名称。

<value>

指出指标实际值。

注意
注意:一个指标中不会包含多个值

为指标配置 group 类型后,每个配置的 <variable> 都将作为单独的指标存储在结果中。例如,如果使用以下配置代码段:

<metric type="group" context="host">
  <name>PageRates</name>
  <action>pagerate.pl</action>
  <variable name="PageInRate" type="uint64"/>
  <variable name="PageFaultRate" type="uint64"/>
</metric>

将生成以下代码段:

<metric type='uint64' context='host'>
  <name>PageInRate</name>
  <value>0.000000</value>
</metric>
<metric type='uint64' context='host'>
  <name>PageFaultRate</name>
  <value>0.000000</value>
</metric>