XenServer

监视和管理您的部署

XenServer 提供详细的性能指标监视数据。这些衡量指标包括 CPU、内存、磁盘、网络、C 状态/P 状态信息和存储。适用情况下,会针对每个主机和每个 VM 提供这些指标。这些指标可以直接获取,也可以在 XenCenter 或其他第三方应用程序中以图形方式进行访问和查看。

XenServer 也提供系统警报和性能警报。警报是指为响应选定系统事件而发出的通知。当以下值之一超出在托管主机、VM 或存储库上的指定阈值时,也会发出这些通知:CPU 使用率、网络使用率、内存使用率、控制域内存使用率、存储吞吐量或 VM 磁盘使用量。您可以使用 xe CLI 或 XenCenter 来配置警报。要根据任何可用的主机或 VM 性能指标创建通知,请参阅性能警报

监视 XenServer 性能

客户可以使用通过轮询数据库 (RRD) 公布的指标,监视其 XenServer 主机和虚拟机 (VM) 的性能。这些指标可以通过 HTTP 或通过 RRD2CSV 工具进行查询。此外,XenCenter 还将使用这些数据生成系统性能图表。有关详细信息,请参阅分析和可视化指标

下表列出了所有可用的主机和 VM 指标。

备注:

  • 某个时间段内的延迟被定义为此时间段中的平均操作延迟。
  • 某些指标的可用性和实用性取决于 SR 和 CPU。

可用主机指标

指标名称 说明 条件 XenCenter 名称
avgqu_sz_<sr-uuid-short> 平均 I/O 队列大小(请求)。 主机上的 SR <sr-uuid-short> 中至少有一个插入的 VBD sr-uuid-short 队列大小
cpu<cpu>-C<cstate> CPU cpu 处于 C-state cstate 的时间(以毫秒为单位)。 C-state 存在于 CPU 上 CPU cpu 处于 C-state cstate
cpu<cpu>-P<pstate> CPU cpu 处于 P-state pstate 的时间(以毫秒为单位)。 P-state 存在于 CPU 上 CPU cpu 处于 p-statepstate
cpu<cpu> 物理 CPU cpu 的利用率(片段)。默认已启用。 CPU cpu 存在 CPU cpu
cpu_avg 物理 CPU 的平均利用率(片段)。默认已启用。 平均 CPU 使用率
hostload 每个物理 CPU 的主机负载,其中负载是指处于运行或可运行状态的 vCPU 的数量。 主机 CPU 负载
inflight_<sr-uuid-short> 当前正在进行的 I/O 请求。默认已启用。 主机上的 SR sr 中至少有一个插入的 VBD sr 传输请求
io_throughput_read_<sr-uuidshort> 从 SR 读取的数据 (MiB/秒)。 主机上的 SR sr 中至少有一个插入的 VBD sr 读取吞吐量
io_throughput_write_<sr-uuidshort> 写入 SR 的数据 (MiB/秒)。 主机上的 SR sr 中至少有一个插入的 VBD sr 写入吞吐量
io_throughput_total_<sr-uuidshort> 所有 SR I/O(MiB/秒)。 主机上的 SR sr 中至少有一个插入的 VBD sr 总吞吐量
iops_read_<sr-uuid-short> 每秒读取请求数。 主机上的 SR sr 中至少有一个插入的 VBD sr 读取 IOPS
iops_write_<sr-uuid-short> 每秒写入请求数。 主机上的 SR sr 中至少有一个插入的 VBD sr 写入 IOPS
iops_total_<sr-uuid-short> 每秒 I/O 请求数。 主机上的 SR sr 中至少有一个插入的 VBD sr 总 IOPS
iowait_<sr-uuid-short> I/O 等待时间百分比。 主机上的 SR sr 中至少有一个插入的 VBD sr IO 等待
latency_<sr-uuid-short> 平均 I/O 延迟(毫秒)。 主机上的 SR sr 中至少有一个插入的 VBD sr 延迟
loadavg Domain0 的平均负载。默认已启用 控制域负载
memory_free_kib 可用内存总量 (KiB)。默认已启用。 在 XenCenter 中不存在。替换为已用内存。
Toolstack 未报告。由 XenCenter 进行计算。 已用内存总量 (KiB)。默认已启用。 已用内存
memory_reclaimed 通过腾出回收的主机内存 (B)。 回收的内存
memory_reclaimed_max 通过腾出回收的可用主机内存 (B)。 潜在回收的内存
memory_total_kib 主机中的内存总量 (KiB)。默认已启用。 总内存
network/latency 从本地主机传输到所有在线主机的最后两个检测信号之间的时间间隔(以秒为单位)。默认情况下禁用。 已启用高可用性 网络延迟
statefile/<vdi_uuid>/latency 从本地主机访问的最新状态文件的周转时间(以秒为单位)。默认情况下禁用。 已启用高可用性 高可用性状态文件延迟
pif_<pif>_rx 物理接口上每秒接收的字节数 pif。默认已启用。 PIF 存在 XenCenter-pifname 接收(请参阅备注)
pif_<pif>_tx 物理接口上每秒发送的字节数 pif。默认已启用。 PIF 存在 XenCenter-pifname 发送(请参阅备注)
pif_<pif>_rx_errors 物理接口 pif 上每秒发生的接收错误数。默认情况下禁用。 PIF 存在 XenCenter-pifname 接收错误数(请参阅备注)
pif_<pif>_tx_errors 物理接口 pif 上每秒发生的传输错误数。默认情况下禁用 PIF 存在 XenCenter-pifname 发送错误(请参阅备注)
pif_aggr_rx 所有物理接口上每秒接收的字节数。默认已启用。 NIC 接收的总数据量
pif_aggr_tx 所有物理接口上每秒发送的字节数。默认已启用。 NIC 发送的总数据量
pvsaccelerator_evicted 每秒钟从缓存中逐出的字节数 已启用 PVS 加速器 PVS 加速器逐出率
pvsaccelerator_read_hits 每秒钟从缓存送达的读取次数 已启用 PVS 加速器 PVS 加速器命中率
pvsaccelerator_read_misses 每秒钟无法从缓存送达的读取次数 已启用 PVS 加速器 PVS 加速器未命中率
pvsaccelerator_traffic_client_sent 缓存的 PVS 客户端每秒钟发送的字节数 已启用 PVS 加速器 PVS 加速器观察到的来自客户端的网络流量
pvsaccelerator_traffic_server_sent 缓存的 PVS 服务器每秒钟发送的字节数 已启用 PVS 加速器 PVS 加速器观察到的来自服务器的网络流量
pvsaccelerator_read_total 缓存每秒钟观察到的读取次数 已启用 PVS 加速器 PVS 加速器观察到的读取速率
pvsaccelerator_traffic_proxy_saved PVS 加速器(而非 PVS 服务器)每秒钟发送的字节数 已启用 PVS 加速器 PVS 加速器保存的网络流量
pvsaccelerator_space_utilization 此主机上的 PVS 加速器使用的空间所占的百分比(与缓存存储的总大小相比) 已启用 PVS 加速器 PVS 加速器空间利用率
running_vcpus 正在运行的 vCPU 总数 正在运行的 vCPU 数量
running_domains 包括 dom0(主机的控制域)在内的正在运行的域总数 正在运行的域数量
sr_<sr>_cache_size IntelliCache SR 的大小(以字节为单位)。默认已启用。 已启用 IntelliCache IntelliCache 缓存大小
sr_<sr>_cache_hits 每秒缓存命中率。默认已启用。 已启用 IntelliCache IntelliCache 缓存命中数
sr_<sr>_cache_misses 每秒缓存未命中数。默认已启用。 已启用 IntelliCache IntelliCache 缓存未命中数
xapi_allocation_kib XAPI 守护程序完成的内存 (KiB) 分配。默认已启用。 代理内存分配
xapi_free_memory_kib XAPI 守护程序的可用内存 (KiB)。默认已启用。 可用代理内存
xapi_healthcheck/latency 本地主机上最新 XAPI 状态监测调用的周转时间(以秒为单位)。默认情况下禁用。 高可用性已启用 XenServer 高可用性延迟
xapi_live_memory_kib XAPI 守护程序占用的实时内存 (KiB)。默认已启用。 活动代理内存
xapi_memory_usage_kib XAPI 守护程序占用的已分配总内存 (KiB)。默认已启用。 代理内存使用率

可用 VM 指标

指标名称 说明 条件 XenCenter 名称
cpu<cpu> vCPU cpu 的利用率(片段)。默认已启用 vCPU cpu 存在 CPU
cpu_usage 域 CPU 使用率 cpu_usage
memory 当前分配给 VM 的内存(以字节为单位)。默认状况下启用 总内存
memory_target VM 气球驱动程序的目标(以字节为单位)。默认已启用 内存目标
memory_internal_free 按来宾系统代理报告使用的内存 (KiB)。默认已启用 可用内存
runstate_fullrun 所有 vCPU 运行的时间片段。 vCPU 完全运行
runstate_full_contention 所有 vCPU 的可运行时间片段(即,等待 CPU) vCPU 完全争用
runstate_concurrency_hazard 有些 vCPU 正在运行和有些 vCPU 可运行的时间片段 vCPU 并发危险
runstate_blocked 所有 vCPU 受阻或处于脱机状态的时间片段 vCPU 空闲
runstate_partial_run 有些 vCPU 正在运行和有些 vCPU 受阻的时间片段 vCPU 部分运行
runstate_partial_contention 有些 vCPU 可运行和有些 vCPU 受阻的时间片段 vCPU 部分争用
vbd_<vbd>_write 写入设备 vbd 的次数(以字节数/秒为单位)。默认已启用 VBD vbd 存在 磁盘 vbd 写入
vbd_<vbd>_read 从设备 vbd 读取的次数(以字节数/秒为单位)。默认已启用。 VBD vbd 存在 磁盘 vbd 读取
vbd_<vbd>_write_latency 写入设备 vbd 的次数(以毫秒为单位)。 VBD vbd 存在 磁盘 vbd 写入延迟
vbd_<vbd>_read_latency 从设备 vbd 读取的次数(以毫秒为单位)。 VBD vbd 存在 磁盘 vbd 读取延迟
vbd <vbd>_iops_read 每秒读取请求数。 主机上的非 ISO VDI 至少有一个插入的 VBD 磁盘 vbd 读取 IOPS
vbd <vbd>_iops_write 每秒写入请求数。 主机上的非 ISO VDI 至少有一个插入的 VBD 磁盘 vbd 写入 IOPS
vbd <vbd>_iops_total 每秒 I/O 请求数。 主机上的非 ISO VDI 至少有一个插入的 VBD 磁盘 vbd 总 IOPS
vbd <vbd>_iowait I/0 等待时间百分比。 主机上的非 ISO VDI 至少有一个插入的 VBD 磁盘 vbd IO 等待
vbd <vbd>_inflight 当前正在进行的 I/O 请求。 主机上的非 ISO VDI 至少有一个插入的 VBD 磁盘 vbd 传输请求
vbd <vbd>_avgqu_sz 平均 I/O 队列大小。 主机上的非 ISO VDI 至少有一个插入的 VBD 磁盘 vbd 队列大小
vif_<vif>_rx 虚拟接口号 vif 上每秒接收的字节数。默认已启用。 VIF vif 存在 vif 接收
vif_<vif>_tx 在虚拟接口 vif 上每秒传输的字节数。默认已启用。 VIF vif 存在 vif 发送
vif_<vif>_rx_errors 虚拟接口 vif 上每秒发生的接收错误数。默认已启用。 VIF vif 存在 vif 接收错误数
vif_<vif>_tx_errors 虚拟接口 vif 上每秒发生的传输错误数。默认情况下处于启用状态。 VIF vif 存在 vif 发送错误数

注意:

<XenCenter-pif-name> 的值可能为以下任意一项:

  • NIC <pif> - 如果 <pif> 包含 pif_eth#,其中 ## 为 0—9
  • <pif> - 如果 <pif> 包含 pif_eth#.##pif_xenbr##pif_bond##
  • <Internal> Network <pif> - 如果 <pif> 包含 pif_xapi##,(请注意,<Internal> 按原样显示)
  • TAP <tap> - 如果 <pif> 包含 pif_tap##
  • xapi Loopback - 如果 <pif> 包含 pif_lo

分析和可视化指标

XenCenter 中的“性能”选项卡可提供整个资源池性能的实时监视统计数据,并以图表方式显示虚拟机和物理机性能的趋势。默认情况下,显示 CPU、 内存、 网络和磁盘 I/O 的图表包含在“性能”选项卡上。您可以添加更多指标,更改现有图表的外观或创建额外的图表。有关详细信息,请参阅以下部分中的配置指标

  • 可以查看最长 12 个月的性能数据,并可将数据放大,以便更清楚地查看活动高峰。

  • 当主机、VM 或 SR 上的 CPU、内存、网络 I/O、存储 I/O 或磁盘 I/O 使用率超过指定阈值时,XenCenter 会生成性能警报。有关详细信息,请参阅以下部分中的警报

注意:

安装 XenServer VM Tools 以查看完整的 VM 性能数据。

配置性能图表

要添加图表,请执行以下操作:

  1. 性能选项卡上,单击操作,然后单击新建图表。此时将显示新建图表对话框。

  2. 名称字段中,输入图表的名称。

  3. 数据源列表中,选择图表中要包含的数据源所对应的复选框。

  4. 单击保存

要编辑现有图表,请执行以下操作:

  1. 导航到性能选项卡,然后选择要修改的图表。

  2. 在图表上单击鼠标右键,选择操作,或者单击操作按钮。然后选择编辑图表

  3. 在“图表详细信息”窗口中,执行必要更改,然后单击确定

配置图表类型

可以采用折线图或面积图的形式来显示性能图表中的数据。要更改图表类型,请执行以下操作:

  1. 工具菜单上,单击选项,选择图表

  2. 要以折线图形式查看性能数据,请单击折线图选项。

  3. 要以面积图形式查看性能数据,请单击面积图选项。

  4. 单击确定以保存更改。

在 XenCenter 文档的监视系统性能部分中,可以找到有关配置和查看 XenCenter 性能图表的详细信息。

配置指标

注意:

C-state 和 P-state 是某些处理器的电源管理功能。可用状态范围取决于主机的物理功能以及电源管理配置。

主机和 VM 命令可以返回以下信息:

  • 数据源的完整说明

  • 应用到指标的单位

  • 可以使用的可能值范围

例如:

    name_label: cpu0-C1
    name_description: Proportion of time CPU 0 spent in C-state 1
    enabled: true
    standard: true
    min: 0.000
    max: 1.000
    units: Percent
<!--NeedCopy-->

启用特定指标

默认情况下,启用和收集大部分指标,要启用未启用的这些指标,请输入以下信息:

xe host-data-source-record data-source=metric name host=hostname
<!--NeedCopy-->

禁用特定指标

您可能不想定期收集某些指标。要禁用先前启用的指标,请输入以下信息:

xe host-data-source-forget data-source=metric name host=hostname
<!--NeedCopy-->

显示当前已启用的主机指标的列表

要列出当前正在收集的主机指标的列表,请输入以下信息:

xe host-data-source-list host=hostname
<!--NeedCopy-->

显示当前已启用的 VM 指标的列表

要托管当前收集的 VM 指标,请输入以下信息:

xe vm-data-source-list vm=vm_name
<!--NeedCopy-->

使用 RRD

XenServer 将使用 RRD 来存储性能指标。这些 RRD 包含大小固定的数据库中的多个轮询档案 (RRA)。

数据库中的每个档案以指定精度抽取其特定指标样本:

  • 在 10 分钟内每隔 5 秒钟
  • 在过去 2 个小时内每隔 1 分钟
  • 在过去 1 周内每隔 1 小时
  • 在过去 1 年内每隔 1 天

每隔 5 秒钟的抽样记录实际数据点,但是,下列 RRA 则使用整合函数。XenServer 支持的整合函数如下:

  • AVERAGE
  • MIN
  • MAX

各个 VM(包括 dom0)和 XenServer 主机都存在 RRD。VM RRD 存储在它们运行所在的主机上,不运行时,存储在池协调器上。因此,必须知道 VM 的位置,才能检索相关联的性能数据。

有关如何使用 XenServer RRD 的详细信息,请参阅《XenServer 软件开发工具包指南》。

使用 HTTP 分析 RRD

可以通过 HTTP 从使用 HTTP 处理程序(在 /host_rrd/vm_rrd 上注册)指定的 XenServer 主机下载 RRD。两个地址都要求进行 HTTP 身份验证,或者通过提供有效的管理 API 会话参考作为队列参数进行身份验证。例如:

下载主机 RRD。

wget http://server/host_rrd?session_id=OpaqueRef:SESSION HANDLE>
<!--NeedCopy-->

下载 VM RRD。

wget http://server/vm_rrd?session_id=OpaqueRef:SESSION HANDLE>&uuid=VM UUID>
<!--NeedCopy-->

这两个调用都将以能够导入 rrdtool 进行分析或直接解析的格式下载 XML。

使用 rrd2csv 分析 RRD

除了查看 XenCenter 中的性能指标之外,rrd2csv 工具还会将 RRD 记录为逗号分隔值 (CSV) 格式。提供手册和帮助页面。要显示 rrd2csv 工具手册或帮助页面,请运行以下命令:

man rrd2csv
<!--NeedCopy-->

rrd2csv --help
<!--NeedCopy-->

注意:

使用多个选项时,应当单独提供。例如:要返回与 VM 或主机相关联的 UUID 和名称标签,请调用 rrd2csv,如下所示:

rrd2csv -u -n

虽然返回的 UUID 是唯一的,而且可用作主密钥,但是,实体的名称标签可能不必是唯一的。

手册页 (rrd2csv --help) 是工具的明确性帮助文本。

警报

可以将 XenServer 配置为根据任何可用的主机或 VM 指标生成警报。此外,当主机经历某些条件和状态时,XenServer 提供可以触发的预配置警报。可以使用 XenCenter 或 xe CLI 查看这些警报。

使用 XenCenter 查看警报

您可以在 XenCenter 中查看不同类型的警报,方法是单击通知,然后单击警报。“警报”视图将显示各种类型的警报,包括性能警报、系统警报和软件更新警报。

性能警报

当以下值之一超出在托管主机、VM 或存储库 (SR) 上的指定阈值时,可以生成性能警报: CPU 使用率、网络使用率、内存使用率、控制域内存使用率、存储吞吐量或 VM 磁盘使用量。

默认情况下,警报重复间隔为 60 分钟,但如果需要,也可以修改此间隔。警报将显示在 XenCenter 的“通知”区域中的“警报”页面上。此外,还可以将 XenCenter 配置为以电子邮件形式发送任何指定的性能警报以及其他严重系统警报。

任何使用 xe CLI 配置的自定义警报也将在 XenCenter 中的“警报”页面上显示。

每个警报都有对应的优先级/严重级别。您也可以修改这些级别,根据需要选择在触发警报时接收电子邮件。默认警报优先级/严重性级别设为 3

优先级 名称 说明 默认电子邮件警报
1 严重 立即采取行动,否则数据可能永久丢失/损坏。
2 重大 立即采取行动,否则某些服务可能无法运行。
3 警告 立即采取行动,否则服务可能会中断。
4 次要 注意,有些事项仅得到改进。
5 信息 日常信息(VM 启动、停止、恢复等)
? 未知 未知错误

配置性能警报

  1. 资源窗格中,选择相应的主机、VM 或 SR,单击常规选项卡,然后单击属性

  2. 选择警报选项卡。下表汇总了哪些警报可用于主机、VM 或 SR:

    警报名称 主机 VM SR 说明
    生成 CPU 使用率警报 X X   设置将触发警报的 CPU 使用率和时间阈值。
    生成控制域 CPU 使用率警报 X     设置将触发警报的控制域 CPU 使用率和时间阈值。
    生成内存使用率警报 X     设置将触发警报的内存使用率和时间阈值。
    生成控制域内存使用率警报 X     设置将触发警报的控制域内存使用率和时间阈值。
    生成控制域可用内存警报 X     设置将触发警报的控制域可用内存和时间阈值。
    生成磁盘使用量警报   X   设置将触发警报的磁盘使用量和时间阈值。
    生成存储吞吐量警报     X 设置将触发警报的存储吞吐量和时间阈值。注意:物理块设备 (PBD) 代表特定 XenServer 主机与连接的 SR 之间的接口。当 PBD 上的总读取/写入 SR 吞吐量活动超过您指定的阈值时,与 PBD 连接的主机上将生成警报。与其他 XenServer 主机警报不同,此警报必须在 SR 上进行配置。
    生成网络使用量警报 X X   设置将触发警报的网络使用量和时间阈值。

    要更改警报重复间隔,请在警报重复间隔框中输入分钟数。达到警报阈值并生成一个警报时,只有在已耗完警报重复间隔时间后,才会生成另一个警报。

  3. 单击确定以保存更改。

要了解有关如何查看、过滤和配置性能警报严重性的详细信息,请参阅 XenCenter 文档中的配置性能警报

系统警报

下表显示了将触发在 XenCenter 中的“警报”页面上显示的警报的系统事件/条件。

名称 优先级/严重性 说明
license_expires_soon 2 XenServer 许可协议即将过期。
ha-statefile_lost 2 已断开与高可用性存储库的连接,立即采取行动。
ha-heartbeat_approaching_timeout 5 高可用性即将超时,主机可能重新启动,除非采取行动。
ha_statefile_approaching_timeout 5 高可用性即将超时,主机可能重新启动,除非采取行动。
haxapi_healthcheck_approaching_timeout 5 高可用性即将超时,主机可能重新启动,除非采取行动。
ha_network_bonding_error 3 潜在服务丢失。发送高可用性检测信号的网络已中断。
ha_pool_overcommited 3 潜在服务丢失。高可用性无法保障对已配置 VM 的保护。
ha_poor_drop_in_plan_exists_for 3 高可用性覆盖率已经下降,更有可能失败,目前还没有丢失。
ha_protected_vm_restart_failed 2 服务丢失。高可用性无法重新启动受保护的 VM。
ha_host_failed 3 高可用性检测到某个主机出现故障。
ha_host_was_fenced 4 高可用性已重新启动某个主机,以保护 VM 免遭损坏。
redo_log_healthy 4 XAPI redo 日志已从上一错误中恢复。
redo_log_broken 3 XAPI redo 日志遇到了错误。
ip_configured_pif_can_unplug 3 使用高可用性时,已配置 IP 的 NIC 会被 XAPI 拔出,这有可能导致出现高可用性故障。
host_sync_data_failed 3 无法同步 XenServer 性能统计信息。
host_clock_skew_detected 3 主机时钟与池中其他主机时钟不同步。
host_clock_went_backwards 1 主机时钟已损坏。
pool_master_transition 4 已将新主机指定为池协调器。
pbd_plug_failed_on_server_start 3 引导时,主机未连接到存储。
auth_external_init_failed 2 主机无法启用外部 AD 身份验证。
auth_external_pool_non-homogeneous 2 池中的主机有不同的 AD 身份验证配置。
multipath_period_alert 3 到 SR 的路径发生故障或已恢复。
bond-status-changed 3 绑定中的链路已断开连接或已重新连接。

软件更新警报

  • XenCenter 较旧: XenServer 需要使用较新的版本,但仍可连接到当前版本
  • XenCenter 已过期: XenCenter 太旧,无法连接到 XenServer
  • XenServer 已过期: XenServer 是当前 XenCenter 无法连接到的旧版本
  • 许可证已过期警报: XenServer 许可证已过期
  • 缺少 IQN 警报: XenServer 使用 iSCSI 存储,但主机 IQN 为空白
  • 重复 IQN 警报: XenServer 使用 iSCSI 存储,但存在重复的主机 IQN

使用 xe CLI 配置性能警报

注意:

检查警报触发的最小间隔为 5 分钟。此时间间隔可以避免因检查这些条件导致系统承受过多负载以及误报。将警报重复间隔设置为小于 5 分钟会导致在 5 分钟的最小间隔时仍生成警报。

性能监视 perfmon 工具每五分钟运行一次,并且平均一分钟从 XenServer 请求一次更新。这些默认值可以在 /etc/sysconfig/perfmon 中更改。

perfmon 工具每 5 分钟读取一次同一主机上运行的性能变量的更新。这些变量分成两组,一组与主机本身相关,另一组与在此主机上运行的每个 VM 相关。对于每个 VM 和 主机,perfmon 读取参数 other-config:perfmon,并且使用此字符串来确定监视哪些变量以及在哪种情况下生成消息。

例如,下面显示了通过将 XML 字符串写入参数 other-config:perfmon 来配置 VM“CPU 使用率”警报的示例:

xe vm-param-set uuid=vm_uuid other-config:perfmon=\

'<config>
    <variable>
        <name value="cpu_usage"/>
        <alarm_trigger_level value="0.5"/>
    </variable>
</config>'
<!--NeedCopy-->

注意:

您可以使用多个变量节点。

设置新配置后,请使用以下命令为每个主机刷新 perfmon

xe host-call-plugin host=host_uuid plugin=perfmon fn=refresh
<!--NeedCopy-->

如果不执行此刷新,则在新配置生效之前将出现延迟,因为默认情况下,perfmon 每隔 30 分钟检查一次新配置。此默认值可以在 /etc/sysconfig/perfmon 中更改。

有效的 VM 元素

  • name:变量的名称(无默认值)。如果名称值为 cpu_usagenetwork_usagedisk_usage,则不需要使用 rrd_regexalarm_trigger_sense 参数,因为将使用这些值的默认值。

  • alarm_priority:生成警报的优先级(默认值为 3)。

  • alarm_trigger_level:触发警报的值的级别(无默认值)。

  • alarm_trigger_sense:如果 alarm_trigger_level 为最大值,则值为 high,否则如果 alarm_trigger_level 为最小值,则值为 low(默认值为 high)。

  • alarm_trigger_period:在发送警报之前,能够接收的(高于或低于警报阈值)值的秒数(默认值为 60)。

  • alarm_auto_inhibit_period:在发送警报后将禁用此警报的秒数(默认值为 3600)。

  • consolidation_fn:将来自 rrd_updates 的变量合并为一个值。对于 cpu-usage,默认值为 average,对于 fs_usage,默认值为 get_percent_fs_usage,对于所有其他变量,则为 sum

  • rrd_regex:匹配来自 xe vm-data-sources-list uuid=vm_uuid 的变量的名称,以计算性能值。此参数具有已命名变量的默认值:

    • cpu_usage
    • memory_internal_free
    • network_usage
    • disk_usage

如果指定了正则表达式,将使用根据 consolidation_fn 指定的方法,对 xe vm-data-source-list 返回的项中名称与指定的正则表达式匹配的所有项的值进行合并。

有效的主机元素

  • name:变量的名称(无默认值)。
  • alarm_priority:生成警报的优先级(默认值为 3)。
  • alarm_trigger_level:触发警报的值的级别(无默认值)。
  • alarm_trigger_sense:当 alarm_trigger_level 为最大值时,该值为 high,否则如果 alarm_trigger_level 为最小值,则为 low。(默认值为 high
  • alarm_trigger_period:在发送警报之前,能够接收的(高于或低于警报阈值)值的秒数(默认值为 60)。
  • alarm_auto_inhibit_period:在发送某个警报后多久(秒)禁用该警报。(默认值为 3600)。
  • consolidation_fn:将来自 rrd_updates 的变量合并为一个值(默认值为 sumaverage
  • rrd_regex:与 xe vm-data-source-list uuid=vm_uuid 命令返回的变量的名称相匹配的正则表达式,用于计算统计值。此参数具有下列已命名变量的默认值:
    • cpu_usage
    • network_usage
    • memory_free_kib
    • sr_io_throughput_total_xxxxxxxx(其中 xxxxxxxx 是 SR-UUID 的前八个字符)。

SR 吞吐量:必须在 SR 而非主机上配置存储吞吐量警报。例如:

xe sr-param-set uuid=sr_uuid other-config:perfmon=\
'<config>
    <variable>
        <name value="sr_io_throughput_total_per_host"/>
        <alarm_trigger_level value="0.01"/>
    </variable>
</config>'
<!--NeedCopy-->

通用示例配置

以下示例显示了一个通用配置:

<config>
    <variable>
    <name value="NAME_CHOSEN_BY_USER"/>
    <alarm_trigger_level value="THRESHOLD_LEVEL_FOR_ALERT"/>
    <alarm_trigger_period value="RAISE_ALERT_AFTER_THIS_MANY_SECONDS_OF_BAD_VALUES"/>
    <alarm_priority value="PRIORITY_LEVEL"/>
    <alarm_trigger_sense value="HIGH_OR_LOW"/>
    <alarm_auto_inhibit_period value="MINIMUM_TIME_BETWEEN_ALERT_FROM_THIS_MONITOR"/>
    <consolidation_fn value="FUNCTION_FOR_COMBINING_VALUES"/>
    <rrd_regex value="REGULAR_EXPRESSION_TO_CHOOSE_DATASOURCE_METRIC"/>
    </variable>

    <variable>
    ...
    </variable>

    ...
</config>
<!--NeedCopy-->

配置电子邮件警报

可以将 XenServer 配置为在 XenServer 主机生成警报时发送电子邮件通知。XenServer 中的 mail-alarm 实用程序使用 sSMTP 发送这些电子邮件通知。可以使用 XenCenter 或 xe 命令行界面 (CLI) 启用基本电子邮件警报。要进一步配置电子邮件警报,您可以修改 mail-alarm.conf 配置文件。

使用不需要身份验证的 SMTP 服务器。通过需要身份验证的 SMTP 服务器发送的电子邮件将无法传送。

使用 XenCenter 启用电子邮件警报

  1. 在“Resources”窗格中,右键单击某个池并选择“Properties”。

  2. 在“Properties”窗口中,选择“Email Options”。

  3. 选中“Send email alert notifications”复选框。输入通知电子邮件的首选目的地地址和 SMTP 服务器详细信息。

  4. 从“Mail language”列表中选择您的首选语言。性能警报电子邮件的默认语言为“英语”。

使用 xe CLI 启用电子邮件警报

要配置电子邮件警报,请为通知电子邮件和 SMTP 服务器指定您的首选目标地址:

xe pool-param-set uuid=pool_uuid other-config:mail-destination=joe.bloggs@example.com
xe pool-param-set uuid=pool_uuid other-config:ssmtp-mailhub=smtp.example.com:<port>
<!--NeedCopy-->

XenServer 会自动将发件人地址配置为 noreply@<hostname>。但是,您可以明确设置发件人地址:

xe pool-param-set uuid=pool_uuid other-config:mail-sender=serveralerts@example.com
<!--NeedCopy-->

打开电子邮件通知功能后,在生成优先级为 3 或更高的警报时,您会收到一封电子邮件通知。因此,默认的最低优先级为 3。可以使用以下命令更改此默认值:

xe pool-param-set uuid=pool_uuid other-config:mail-min-priority=level
<!--NeedCopy-->

注意:

某些 SMTP 服务器只转发地址使用 FQDN 的邮件。如果您发现无法转发电子邮件,则可能是由于此原因导致。在这种情况下,可以将服务器主机名设置为 FQDN,以便通过此地址连接到您的邮件服务器。

要配置性能警报电子邮件的语言,请执行以下操作:

xe pool-param-set uuid=pool_uuid other-config:mail-language=ja-JP
<!--NeedCopy-->

性能警报电子邮件的默认语言为“英语”。

进一步配置

要在 XenServer 中进一步配置邮件警报实用程序,请创建一个包含以下内容的 /etc/mail-alarm.conf 文件:

root=postmaster
authUser=<username>
authPass=<password>
mailhub=@MAILHUB@
<!--NeedCopy-->

/etc/mail-alarm.conf 是用户为 sSMTP 的配置文件 ssmtp.conf 提供的模板,用于 XenServer 主机生成的所有警报。它由多个键组成,其中 key=@KEY@@KEY@pool.other_config 中的 ssmtp-key 的相应值替换。然后将这些值传递给 ssmtp,允许您使用 pool.other_config 中的值控制 sSMTP 配置的各个方面。注意,@KEY@(大写)如何对应 ssmtp-key(小写,前缀为 ssmtp-)。

例如,如果您设置 SMTP 服务器:

xe pool-param-set uuid=pool_uuid other-config:ssmtp-mailhub=smtp.example.com
<!--NeedCopy-->

然后将以下内容添加到您的 /etc/mail-alarm.conf 文件中:

mailhub=@MAILHUB@
<!--NeedCopy-->

mailhub=@MAILHUB@ 变成 mailhub=smtp.example.com

每个 SMTP 服务器在设置上都略有不同,并且可能需要额外配置。要进一步配置 sSMTP,请修改其配置文件 ssmtp.conf。通过将相关密钥存储在 mail-alarm.conf 文件中,您可以使用 pool.other_config 中的值来配置 sSMTP。从 ssmtp.conf 手册页解压的以下内容将显示正确的语法和可用选项:

NAME
    ssmtp.conf – ssmtp configuration file

DESCRIPTION
    ssmtp reads configuration data from /etc/ssmtp/ssmtp.conf The file con-
    tains keyword-argument pairs, one per line. Lines starting with '#'
    and empty lines are interpreted as comments.

The possible keywords and their meanings are as follows (both are case-
insensitive):

    Root
    The user that gets all mail for userids less than 1000. If blank,
    address rewriting is disabled.

    Mailhub
        The host to send mail to, in the form host | IP_addr port :
        <port>. The default port is 25.

    RewriteDomain
    The domain from which mail seems to come. For user authentication.

    Hostname
        The full qualified name of the host. If not specified, the host
        is queried for its hostname.

    FromLineOverride
        Specifies whether the From header of an email, if any, may over-
        ride the default domain. The default is "no".

    UseTLS
    Specifies whether ssmtp uses TLS to talk to the SMTP server.
    The default is "no".

    UseSTARTTLS
        Specifies whether ssmtp does a EHLO/STARTTLS before starting TLS
        negotiation. See RFC 2487.

    TLSCert
        The file name of an RSA certificate to use for TLS, if required.

    AuthUser
        The user name to use for SMTP AUTH. The default is blank, in
        which case SMTP AUTH is not used.

    AuthPass
        The password to use for SMTP AUTH.

    AuthMethod
        The authorization method to use. If unset, plain text is used.
        May also be set to "cram-md5".
<!--NeedCopy-->

自定义字段和标记

XenCenter 支持创建标记和自定义字段,这样可以组织和快速搜索 VM、存储等对象。有关详细信息,请参阅监视系统性能

自定义搜索

XenCenter 支持创建自定义搜索。可以导出和导入搜索,还可以在导航面板中显示搜索结果。有关详细信息,请参阅监视系统性能

确定物理总线适配器的吞吐量

对于 FC、SAS 和 iSCSI HBA,可以通过以下步骤确定 PBD 的网络吞吐量。

  1. 列出主机上的 PBD。
  2. 确定哪个 LUN 在哪个 PBD 上路由。
  3. 对于每个 PBD 和 SR,列出 SR 上引用 VDI 的 VBD。
  4. 针对主机上连接到 VM 的所有活动 VBD,计算组合吞吐量。

针对 iSCSI 和 NFS 存储,检查网络统计,以确定阵列上是否存在吞吐量瓶颈,或者 PBD 是否已饱和。

使用 NRPE 监视主机和 dom0 资源

注意:

NRPE 功能适用于 XenServer Premium 或 Trial Edition 客户。有关 XenServer 许可的详细信息,请参阅许可。要升级或购买 XenServer 许可证,请访问 XenServer Web 站点

具有池管理员角色的用户可以使用支持 Nagios Remote Plugin Executor (NRPE) 的任何第三方监视工具来监视 XenServer 主机和 dom0(主机的控制域)消耗的资源。

可以使用以下检查插件来监视主机和 dom0 资源:

指标 NRPE 检查名称 说明 默认警告阈值 默认临界阈值 返回的性能数据
主机 CPU 负载 check_host_load 获取并检查主机每个物理 CPU 的当前负载,其中负载是指处于运行或可运行状态的 vCPU 的数量。 3 4 主机 CPU 的当前系统负载(通过获取主机物理 CPU 的平均负载进行计算)。
主机 CPU 使用率 (%) check_host_cpu 获取并检查主机的当前平均总 CPU 使用率。 80% 90% 当前可用的主机 CPU 的百分比和正在使用的百分比。
主机内存使用率 (%) check_host_memory 获取并检查主机的当前内存使用率。 80% 90% 当前可用的主机内存的百分比和正在使用的百分比。
主机 vGPU 使用率 (%) check_vgpu 获取并检查主机的当前所有正在运行的 Nvidia vGPU 使用率。 80% 90% 当前可用的正在运行的 vGPU 的百分比和正在使用的百分比。
主机 vGPU 内存使用率 (%) check_vgpu_memory 获取并检查主机当前所有正在运行的 Nvidia vGPU 内存使用率(包括共享内存和图形内存)。 80% 90% 当前可用的正在运行的 vGPU 内存(包括共享内存和图形内存)的百分比以及正在使用的百分比。
Dom0 CPU 负载 check_load 获取并检查 dom0 的每个 CPU 的当前系统负载平均值,其中负载是指处于运行或可运行状态的进程数。 2.7,2.6,2.5 3.2,3.1,3 主机 CPU 负载数据是通过获取过去 1、5 和 15 分钟的平均值计算得出的。
Dom0 CPU 使用率 (%) check_cpu 获取并检查 dom0 的当前平均整体 CPU 使用率。 80% 90% dom0 的平均整体 CPU 使用率(以百分比表示)。
Dom0 内存使用率 (%) check_memory 获取并检查 dom0 的当前内存使用率。 80% 90% 当前可用的 dom0 内存的百分比和正在使用的百分比。
Dom0 可用 Swap (%) check_swap 获取并检查 dom0 的当前 swap 使用率。 20% 10% dom0 上当前可用的 MB 百分比。
Dom0 根分区可用空间 (%) check_disk_root 获取并检查 dom0 的当前根分区使用率。 20% 10% dom0 根分区上当前可用的 MB 百分比。
Dom0 日志分区可用空间 (%) check_disk_log 获取并检查 dom0 的当前日志分区使用率。 20% 10% dom0 日志分区上当前可用的 MB 百分比。
Toolstack 状态 check_xapi 获取并检查 XenServer 管理 Toolstack(又称为 XAPI)的状态。     XAPI 在几秒钟内就结束了正常运行时间。
多路径状态 check_multipath 获取并检查存储路径的状态。     存储路径的状态。OK 表示所有路径都有效,WARNING 表示某些路径失效,但有多个路径有效,CRITICAL 表示只有一个路径有效或者所有路径都已失效,UNKNOWN 表示主机多路径功能已禁用,并且无法提取路径的状态。

NRPE 是一项在 dom0 中运行的本地服务,在 TCP 端口(默认)5666 上侦听来自监视工具的检查执行请求。请求到达后,NRPE 会对其进行解析,从配置文件中找到相应的检查命令(包括参数的详细信息),然后运行该命令。检查结果将发送到监视工具,该工具存储过去的检查结果并提供用于显示历史性能数据的图表。

必备条件

为了能够使用 NRPE 监视主机和 dom0 资源,您使用的监视工具必须满足以下必备条件:

  • 监视工具必须与 NRPE 版本 4.1.0 兼容。
  • 为了允许 NRPE 与监视工具之间进行通信,监视工具必须支持使用密码 ECDHE-RSA-AES256-GCM-SHA384ECDHE-RSA-AES128-GCM-SHA256 的 TLS 1.2,而 EC 曲线为 secp384r1

限制

  • 可以为整个池或不属于池的独立主机配置 NRPE 设置。当前,您无法为池中的单个主机配置 NRPE 设置。
  • 如果将主机添加到已在其上启用并配置了 NRPE 的池中,XenCenter 不会自动将该池的 NRPE 设置应用到新主机。添加新主机后,必须在池上重新配置 NRPE 设置,或者在将新主机添加到池之前使用相同的 NRPE 设置配置新主机。

    注意:

    添加新主机后在池上重新配置 NRPE 设置时,请确保主机已启动并且正在运行。

  • 如果将主机从在其上启用并配置了 NRPE 的池中删除,XenCenter 不会更改主机或池上的 NPRE 设置。

使用 xe CLI 配置 NRPE

可以使用 xe CLI 或 XenCenter 来配置 NRPE。有关如何使用 XenCenter 配置 NRPE 的详细信息,请参阅使用 NRPE 监视主机和 dom0 资源

对 NRPE 进行配置更改后,请使用以下方法重新启动 NRPE 服务:

xe host-call-plugin host-uuid=<host uuid> plugin=nrpe fn=restart
<!--NeedCopy-->

启用 NRPE

在 XenServer 中,NRPE 默认处于禁用状态。要在主机的控制域 (dom0) 中启用 NRPE,请在 xe CLI 中运行以下命令:

  1. 获取要监视的主机的主机 UUID:

    xe host-list

  2. 在主机上启用 NRPE:

    xe host-call-plugin host-uuid=<host uuid> plugin=nrpe fn=enable

    如果操作成功运行,此命令将输出 Success。XenServer 重新启动时,NRPE 会自动启动。

要停止、启动、重新启动或禁用 NRPE,请执行以下操作:

xe host-call-plugin host-uuid=<host uuid> plugin=nrpe fn=<operation>
<!--NeedCopy-->

其中,operationstopstartrestartdisable

监视服务器

这是以逗号分隔的、允许与 NRPE 守护程序通信的 IP 地址或主机名列表。还支持带有位掩码的网络地址(例如 192.168.1.0/24)。

查看当前的监视服务器列表:

xe host-call-plugin host-uuid=<host uuid> plugin=nrpe fn=get-config args:allowed_hosts
<!--NeedCopy-->

允许监视工具执行检查:

xe host-call-plugin host-uuid=<host uuid> plugin=nrpe fn=set-config args:allowed_hosts=<IP address or hostname>
<!--NeedCopy-->

查询所有 NRPE 设置:

xe host-call-plugin host-uuid=<host uuid> plugin=nrpe fn=get-config
<!--NeedCopy-->

配置多个 NRPE 设置:

xe host-call-plugin host-uuid=<host uuid> plugin=nrpe fn=set-config args:allowed_hosts=<IP address or hostname> args:ssl_logging=<SSL log level> args:debug=<debug log level>
<!--NeedCopy-->

日志

调试日志记录

默认情况下,禁用调试日志记录。

要检查是否启用了调试日志记录,请运行以下命令:

xe host-call-plugin host-uuid=<host uuid> plugin=nrpe fn=get-config args:debug
<!--NeedCopy-->

如果返回 debug: 0,则调试日志记录处于禁用状态。

要启用调试日志记录,请执行以下操作:

xe host-call-plugin host-uuid=<host uuid> plugin=nrpe fn=set-config args:debug=1
<!--NeedCopy-->
SSL 日志记录

默认情况下,禁用 SSL 日志记录:

ssl_logging=0x00
<!--NeedCopy-->

要检查是否启用了 SSL 日志记录,请运行以下命令:

xe host-call-plugin host-uuid=<host uuid> plugin=nrpe fn=get-config args:ssl_logging
<!--NeedCopy-->

要启用 SSL 日志记录,请执行以下操作:

xe host-call-plugin host-uuid=<host uuid> plugin=nrpe fn=set-config args:ssl_logging=0x2f
<!--NeedCopy-->

警告和临界阈值

对于这些检查插件中的某些插件,您可以设置警告阈值和临界阈值,以便在检查插件返回的值超过阈值时生成警报。警告阈值表示潜在问题,临界阈值表示需要立即关注的更严重的问题。尽管已为警告阈值和临界阈值设置了默认值,但您可以调整阈值。

要查询所有检查的默认警告阈值和临界阈值,请运行以下 xe CLI 命令,该命令会返回所有检查及其关联的警告阈值和临界阈值的列表:

xe host-call-plugin host-uuid=<host uuid> plugin=nrpe fn=get-threshold
<!--NeedCopy-->

也可以查询特定检查的阈值。例如,要获取 check_memory 检查插件的警告阈值和临界阈值,请运行以下 xe CLI 命令:

xe host-call-plugin host-uuid=<host uuid> plugin=nrpe fn=get-threshold args:check_memory
<!--NeedCopy-->

也可以更改阈值的默认值。例如,要更改 check_memory 检查插件的默认阈值,请运行以下 xe CLI 命令:

xe host-call-plugin host-uuid=<host uuid> plugin=nrpe fn=set-threshold args:check_memory args:w=75 args:c=85
<!--NeedCopy-->

使用 SNMP 监视主机和 dom0 资源

注意:

SNMP 功能适用于 XenServer Premium 或 Trial Edition 客户。有关 XenServer 许可的详细信息,请参阅许可。要升级或购买 XenServer 许可证,请访问 XenServer Web 站点

使用池管理员角色,您可以使用 SNMP 远程监视 XenServer 主机和 dom0(主机的控制域)消耗的资源。SNMP 管理器(又称为网络管理系统 (NMS))向 XenServer 主机上运行的 SNMP 代理发送查询请求。SNMP 代理通过将根据各种指标收集的数据发送回 NMS 来答复这些查询请求。可以收集的数据由名为管理信息库 (MIB) 的文本文件中的对象标识符 (OID) 进行定义。OID 代表有关网络设备的特定可测量信息片段,例如 CPU 或内存使用率。

您还可以配置陷阱,这些陷阱是代理启动的消息,用于提醒 NMS XenServer 中发生了特定事件。查询请求和陷阱均可用于监视 XenServer 池的状态。它们被定义为指标和陷阱对象,通过 MIB 文件 XENSERVER-MIB.txt 中的 OID 进行标识,可从 XenServer 下载页面下载。下表提供了有关这些指标和陷阱对象的信息。

指标对象

您可以使用下表中列出的指标请求有关 XenServer 主机的特定信息片段。SNMP 管理器在向 SNMP 代理发送查询请求时使用这些指标,因此您可以在 NMS 中查看此数据。

可以从 NMS 或 xe CLI 查看这些指标对象返回的数据。要从 xe CLI 查询指标对象,请运行 host-data-source-queryvm-data-source-query 并提供 RRDD 数据源作为 data-source 参数的值。例如:

xe host-data-source-query data-source=cpu_avg host=<host UUID>
<!--NeedCopy-->

注意:

默认情况下,NMS 使用端口 161 向 SNMP 代理发送 OID 查询请求。

对象标识符 (OID) RRDD 数据源 返回的数据 类型
.1.3.6.1.4.1.60953.1.1.1.1 memory Dom0 总内存 (MB) Unsigned32
.1.3.6.1.4.1.60953.1.1.1.2 memory_internal_free Dom0 可用内存 (MB) Unsigned32
.1.3.6.1.4.1.60953.1.1.1.3 cpu_usage Dom0 CPU 使用率(百分比) 浮动
.1.3.6.1.4.1.60953.1.1.1.4 memory_total_kib 主机总内存 (MB) Unsigned32
.1.3.6.1.4.1.60953.1.1.1.5 memory_free_kib 主机可用内存 (MB) Unsigned32
.1.3.6.1.4.1.60953.1.1.1.6 cpu_avg 主机 CPU 使用率(百分比) 浮动
.1.3.6.1.4.1.60953.1.1.1.7 (请参阅备注 1) pCPU 数量 Unsigned32
.1.3.6.1.4.1.60953.1.1.1.8 running_vcpus 正在运行的 vCPU 数量 Unsigned32
.1.3.6.1.4.1.60953.1.1.1.9 running_domains 正在运行的 VM 数量 Unsigned32

备注:

  1. pCPU 的名称采用 cpu 后跟数字的格式。要从 xe CLI 查询 pCPU 的数量,请运行以下命令:

    xe host-data-source-list host=<host UUID> | grep -E 'cpu[0-9]+$'

    This returns a list of the CPU metrics that match the regular expression cpu[0-9]+.

陷阱

陷阱是指 SNMP 代理发送的警报,用于在某些事件发生时通知 SNMP 管理器,使您能够监视 XenServer 主机并尽早发现问题。您可以配置 SNMP 设置,使其在达到限制时生成陷阱(例如,如果主机 CPU 使用率过高)。生成陷阱后,它会发送到您的 NMS,并且以下字段将作为陷阱对象的一部分返回。

注意:

默认情况下,池协调器主机上的 SNMP 代理使用 UPD 端口 162 向 NMS 发送陷阱。

对象标识符 (OID) 字段名称 类型 说明
.1.3.6.1.4.1.60953.1.10.1.1 operation 字符串 可以是以下值之一:adddel。如果陷阱由 XenServer 生成并发送到您的 NMS(也会在 XenCenter 中创建警报),则 operation 设置为 add,或者如果警报已销毁(例如,如果您消除了警报),则设置为 del
.1.3.6.1.4.1.60953.1.10.1.2 ref 字符串 陷阱对象的参考。
.1.3.6.1.4.1.60953.1.10.1.3 uuid 字符串 陷阱对象的 UUID。
.1.3.6.1.4.1.60953.1.10.1.4 name 字符串 陷阱对象的名称。
.1.3.6.1.4.1.60953.1.10.1.5 priority 整数 陷阱的严重性。可以是以下值之一:1:严重,2:主要,3:警告,4:次要,5:信息,others:未知。
.1.3.6.1.4.1.60953.1.10.1.6 class 字符串 生成的陷阱的类别。可以是以下值之一:VMHostSRPoolVMPPVMSSPVS_proxyVDICertificate
.1.3.6.1.4.1.60953.1.10.1.7 obj-uuid 字符串 字段 class 的各种类的 xapi 对象 UUID。
.1.3.6.1.4.1.60953.1.10.1.8 timestamp 字符串 陷阱的生成时间。
.1.3.6.1.4.1.60953.1.10.1.9 body 字符串 有关字段 name 的详细信息。

必备条件

  • 池中的所有主机必须运行相同的 XenServer 版本,并且此版本必须包含 SNMP 插件。

    注意:

    如果在 XenCenter 中看不到 SNMP 选项卡,可能是因为主机或池中的成员未运行支持 SNMP 的 XenServer 版本。将主机或池更新到 XenServer 的最新版本。

  • 您使用的 NMS 必须支持 SNMPv2c 或 SNMPv3。

  • 您的 NMS 和 XenServer 必须连接网络。

限制

  • 可以为整个池或不属于池的独立主机配置 SNMP 设置。当前,您无法为池中的单个主机配置 SNMP 设置。
  • 如果将主机添加到已在其上启用并配置了 SNMP 的池中,XenCenter 不会自动将该池的 SNMP 设置应用到新主机。添加新主机后,必须在池上重新配置 SNMP 设置,或者在将新主机添加到池之前使用相同的 SNMP 设置配置新主机。

    注意:

    添加新主机后在池上重新配置 SNMP 设置时,请确保主机已启动并且正在运行,不处于维护模式。

  • 在执行从 Citrix Hypervisor 8.2 CU1 到 XenServer 8 的滚动池升级或对您的 XenServer 主机和池应用更新之前,如果您之前手动修改了以下配置文件并且需要使用这些文件,请对其进行备份:

    • /etc/snmp/snmpd.xs.conf
    • /etc/sysconfig/snmp
    • /var/lib/net-snmp/snmpd.conf
  • 当 SNMP 代理处于脱机状态时,无法生成陷阱。例如,如果重新启动 SNMP 代理或者重新启动或重新指定池协调器。

使用 xe CLI 配置 SNMP

可以使用 xe CLI 或 XenCenter 来配置 SNMP。有关如何使用 XenCenter 配置 SNMP 的详细信息,请参阅使用 SNMP 监视主机和 dom0 资源

result 对象

配置 SNMP 时,所有响应都以 JSON 格式返回。如果命令成功执行,它将返回密钥值对 "code": 0。某些命令(例如 get-config 命令)会返回一个名为 result 的嵌套 JSON 对象。用于更新 SNMP 配置的 set-config 命令也需要 result JSON 对象。

result JSON 对象由以下对象 commonagent、和 nmss 组成:

common

字段 允许的值 默认值
enabled no(禁用 SNMP 服务)或 yes(启用 SNMP 服务) no
debug_log no(禁用调试日志记录)或 yes(启用调试日志记录) no
max_nmss 不适用(此字段为只读字段,指定支持的 NMS 的最大数量) 1

agent

字段 允许的值 默认值
v2c no(禁用 SNMPv2c)或 yes(启用 SNMPv2c) yes
community COMMON_STRING_TYPE(请参阅备注 1) public
v3 no(禁用 v3)或 yes(启用 v3) no
user_name COMMON_STRING_TYPE(请参阅备注 1)  
authentication_password COMMON_STRING_TYPE,其中长度 >= 8(请参阅备注 1)  
authentication_protocol MD5SHA  
privacy_password COMMON_STRING_TYPE,其中长度 >= 8(请参阅备注 1)  
privacy_protocol DESAES  
engine_id 不适用(此字段为只读字段,在 SNMP 代理首次启动时生成)  

nmss

字段 允许的值 默认值
uuid NMS UUID(您在配置 NMS 陷阱接收器时设置此值,并且此值应在池中的所有主机之间保持一致)  
address NMS IPv4 地址或主机名 (FQDN)  
port 1 更改为 65535 162
v2c no(禁用 SNMPv2c)、yes(启用 SNMPv2c)或支持 SNMPv2c 或 v3。 yes
community COMMON_STRING_TYPE(请参阅备注 1) public
v3 no(禁用 v3)、yes(启用 v3)或支持 SNMPv2c 或 SNMPv3。 no
user_name COMMON_STRING_TYPE(请参阅备注 1)  
authentication_password COMMON_STRING_TYPE,其中长度 >= 8(请参阅备注 1)  
authentication_protocol MD5SHA  
privacy_password COMMON_STRING_TYPE,其中长度 >= 8(请参阅备注 1)  
privacy_protocol DESAES  

备注:

  1. COMMON_STRING_TYPE 是指满足以下要求的字符串:
    • 字母、数字、连字符 (-)、句点 (.)、英镑 (#)、at 符号 (@)、等号 (=)、冒号 (:) 或下划线字符 (_) 的任意组合。
    • 长度介于 6 到 32(含)之间。
  2. 密码不以纯文本形式存储在 XenServer 中的任何配置文件中。它们转换为本地化的密钥并存储。get-config 命令将密码显示为由星号 (*) 组成的隐藏常量。

配置 SNMP 服务

获取 SNMP 服务的状态:

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=status
<!--NeedCopy-->

启动、停止或重新启动 SNMP 服务:

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=<operation>
<!--NeedCopy-->

其中,operationstartstoprestart

获取 SNMP 配置详细信息:

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=get-config
<!--NeedCopy-->

如果成功,此命令将返回密钥值对 "code": 0 和包含 SNMP 服务的配置详细信息的 result JSON 对象。例如:

"code": 0,
  "result": {
    "common": {
      "enabled": "no",
      "debug_log": "no",
      "max_nmss": 1
    },
    "agent": {
      "v2c": "yes",
      "v3": "no",
      "community": "public",
      "user_name": "",
      "authentication_password": "",
      "authentication_protocol": "",
      "privacy_password": "",
      "privacy_protocol": "",
      "engine_id": "<engine_id>"
    },
    "nmss": []
  }
<!--NeedCopy-->

请将 result JSON 对象复制到您的首选文本编辑器,然后从文件中删除所有换行符 (\n)。使用您的 SNMP 配置详细信息更新字段。通过参考 NMS 文档并指定 nmss 对象所需的字段的值来配置您的 NMS。有关详细信息,请参阅上面列出的对象

要配置 SNMP 服务,请运行 set-config 命令并将编辑后的 result JSON 对象作为参数值提供给 args:config 参数。

设置 SNMP 配置:

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=set-config args:config='<result>'
<!--NeedCopy-->

其中,result 是您复制并编辑的 get-config 命令返回的 result JSON 对象。

注意:

要为整个池配置 SNMP,您必须为池中的每台主机运行 set-config 命令。

如果配置更改成功,该命令将返回密钥值对 "code": 0。如果配置更改不成功,set-config 命令将返回以下键值对之一,这表示发生了错误:

  • "code": 1:常见的错误字符串。例如,未知异常。
  • "code": 2:错误字符串(缺少参数)。
  • "code": 3:以列表形式返回 message 对象,其中每个元素的格式都为 [field_path, key, value, error string]

您还可以向 NMS 发送测试 SNMP 陷阱,以验证指定的陷阱接收器信息是否正确。

发送测试 SNMP 陷阱:

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=send-test-trap args:config='{"nmss":[{"uuid":"<uuid>","address":"<address>","port":162,"v2c":"yes","v3":"no","community":"public","user_name":"<user_name>","authentication_password":"<authentication_password>","authentication_protocol":"<authentication_protocol>","privacy_password":"<privacy_password>","privacy_protocol":"<privacy_protocol>"}]}'
<!--NeedCopy-->

此命令将带有 TEST_TRAPmsg_nameThis is a test trap from XenServer pool "<pool name>" to verify the NMS Trap Receiver configuration.msg_body 的测试陷阱发送到您的 NMS

如果您没有收到测试陷阱,请再次检查您的 SNMP 配置。如果不成功,send-test-trap 命令还会返回以下键值对之一,这表示发生了错误:

  • "code": 1:常见的错误字符串。例如,未知异常。
  • "code": 2:错误字符串(缺少参数)。
  • "code": 3:以列表形式返回 message 对象,其中每个元素的格式都为 [field_path, key, value, error string]
  • "code": 4: 以列表形式返回 message 对象,其中每个元素的格式都为 [nms address, nms port, error string]
监视和管理您的部署