在 SUSE Linux Micro 上设置虚拟主机指标守护程序
- 内容
vhostmd
是一款工具,用于从虚拟机主机收集指标,并可以将这些指标提供给该主机上运行的虚拟机。- 原因
本文介绍了如何安装和配置
vhostmd
以启用指标收集。- 工作量
读完本文大约需要 15 分钟。
- 目标
您将运行
vhostmd
工具并收集指标。- 要求
正在运行的 SUSE Linux Micro 实例
在该实例上运行的虚拟机
1 什么是虚拟主机指标守护程序(又称 vhostmd
)? #
vhostmd
是在主机环境中运行的守护程序,在主机和 Guest 计算机之间充当指标的通讯通道。该守护程序为 Guest 计算机管理员提供了一组有限的主机资源使用数据(通常处于只读模式),以帮助分析 Guest 计算机的问题。
vhostdmd
会定期将指标写入磁盘。要收集的指标以及数据的频率和存储位置都是可配置的参数。
2 获取 vhostmd
#
默认情况下,交付的映像中不包含 vhostmd
。因此,您必须在使用前安装它:
运行以下命令以安装该守护程序:
>
sudo
transactional-update pkg install vhostmd
重引导您的系统以切换到新快照。
运行以下命令以启动该守护程序:
>
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
要更改域配置,请执行以下操作:
运行以下命令
>
sudo
virsh edit GUEST_NAME
在
<devices>
部分添加以下代码段以更新该部分:<disk type='block' device='disk'> <source dev='/dev/shm/vhostmd0'/> <target dev='hdb' bus='ide'/> <readonly/> </disk>
调整目标的
dev
和dbus
值。
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
描述指标值数据类型。可能的值包括:
int32
、uint32
、int64
、uint64
、real32
、real64
、string
、group
和xml
。当指标返回多个值时,使用
group
。xml
是指标返回有效 XML 时的一种通用形式。-
context
定义特定指标的收集位置。可能的值为:
host
,表示指标是在主机计算机上收集的vm
,表示指标是在 Guest 计算机上收集的
每个指标都必须具有唯一的名称和用于记录指标的命令。以下列表描述了定义指标时可能用到的元素:
-
<name>
定义唯一变量名称。如果指标是在虚拟机上收集的,您可以在此处使用
NAME
、ID
和UUID
。届时,这些值将替换为当前正在检查的虚拟机的实际值。-
<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>
6 法律声明 #
版权所有 © 2006–2025 SUSE LLC 和贡献者。保留所有权利。
根据 GNU 自由文档许可证 (GNU Free Documentation License) 版本 1.2 或(根据您的选择)版本 1.3 中的条款,在此授予您复制、分发和/或修改本文档的权限;本版权声明和许可证附带不可变部分。许可版本 1.2 的副本包含在题为“GNU Free Documentation License”的部分。
有关 SUSE 商标,请参见 https://www.suse.com/company/legal/。所有其他第三方商标分别为相应所有者的财产。商标符号(®、™ 等)代表 SUSE 及其关联公司的商标。星号 (*) 代表第三方商标。
本指南力求涵盖所有细节,但这不能确保本指南准确无误。SUSE LLC 及其关联公司、作者和译者对于可能出现的错误或由此造成的后果皆不承担责任。