在 SUSE Linux Micro 上设置虚拟主机指标守护程序
- 内容
vhostmd是一款工具,用于从虚拟机主机收集指标,并可以将这些指标提供给该主机上运行的虚拟机。- 原因
本文介绍了如何安装和配置
vhostmd以启用指标收集。- 工作量
读完本文大约需要 15 分钟。
- 目标
您将运行
vhostmd工具并收集指标。- 要求
正在运行的 SUSE Linux Micro 实例
在该实例上运行的虚拟机
1 什么是虚拟主机指标守护程序(又称 vhostmd)? #
vhostmd 是在主机环境中运行的守护程序,在主机和 Guest 计算机之间充当指标的通讯通道。该守护程序为 Guest 计算机管理员提供了一组有限的主机资源使用数据(通常处于只读模式),以帮助分析 Guest 计算机的问题。
vhostdmd 会定期将指标写入磁盘。要收集的指标以及数据的频率和存储位置都是可配置的参数。
2 获取 vhostmd #
默认情况下,交付的映像中不包含 vhostmd。因此,您必须在使用前安装它:
运行以下命令以安装该守护程序:
>sudotransactional-update pkg install vhostmd重引导您的系统以切换到新快照。
运行以下命令以启动该守护程序:
>sudovhostmdOPTIONS您可以使用以下选项来修改命令行为:
-v— 指定详细输出--connect URI— 传递libvirt守护程序的 URI 以建立与守护程序的连接-f FILE_PATH— 传递替代配置文件。有关配置的细节,请参见第 4 节 “vhostmd配置”。-p PID_FILE— 创建替代 PID 文件。默认值为/var/run/vhostmd.pid。-u USERNAME— 使用非特权用户
还可以将 vhostmd 作为 systemd 服务运行:
>sudosystemctl enable --now vhostmd
每次执行第 4 节 “vhostmd 配置”中所述的配置更改后,请按如下方式重启动 vhostmd 服务:
>sudosystemctl restart vhostmd
3 向虚拟机提供收集的指标 #
您可以将收集的指标设置为对特定虚拟机可见,以供后续使用或仅用于读取。有两种方式可以实现此操作。您可以使用 virsh 命令附加指标磁盘,也可以调整域配置。
要以只读模式附加指标磁盘,请按以下方式运行 virsh:
>sudovirsh attach-disk VIRTUAL_MACHINE \ PATH_TO_METRICS_DISC --driver tap \ --subdriver aio --type disk --mode readonly
要更改域配置,请执行以下操作:
运行以下命令
>sudovirsh 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 及其关联公司、作者和译者对于可能出现的错误或由此造成的后果皆不承担责任。