10. 虚拟机监控

概述

Zabbix 从 2.2.0 版开始支持对 VMware 环境的监控。

Zabbix 可以使用低级别发现规则自动发现 VMware 宿主机(即 VMware hypervisors)和虚拟机,并根据预定义的主机原型创建主机来监控它们。

Zabbix 中的默认数据集提供了几个现成的模板,用于监控 VMware vCenter 或 ESX 宿主机。

所需的最低 VMware vCenter 或 vSphere 版本为 5.1。

细节

虚拟机监控分两步完成。首先,虚拟机数据由Zabbix 进程 vmware collector 收集。这些进程通过 SOAP 协议从 VMware Web 服务获取必要的信息,对其进行预处理并存储到 Zabbix 服务器共享内存中。然后,轮询器使用 Zabbix 简单检查 VMware keys 检索此数据。

从 Zabbix 2.4.4 版本开始,收集的数据分为 2 种类型:VMware 配置数据和 VMware 性能计数器数据。这两种类型都由 vmware collectors 独立收集。因此,建议启用比受监视的 VMware 服务更多的收集器。否则,VMware 性能计数器统计信息的检索可能会因检索 VMware 配置数据而延迟(大型安装需要一段时间)。

目前只有数据存储、网络接口和磁盘设备统计信息以及自定义性能计数器项是基于 VMware 性能计数器信息的。

配置

为了使虚拟机监控可以正常工作,Zabbix 应该使用 —with-libxml2 和 —with-libcurl 编译选项进行 编译

以下配置文件选项可用于调整虚拟机监控:

  • StartVMwareCollectors - 预设的 vmware collector 实例的数量。
    此值取决于您要监控的 VMware 服务的数量。在大多数情况下,这应该是:
    servicenum < StartVMwareCollectors < (servicenum * 2)
    其中servicenum 是 VMware 服务的数量。例如,如果有 1 个要监控的 VMware 服务,请将 StartVMwareCollectors 设置为 2,如果您有 3 个 VMware 服务,请将其设置为 5。请注意,在大多数情况下,此值不应小于 2,也不应大于监控的 VMware 服务数量的 2 倍。另外,此值还取决于您的 VMware 环境大小以及 VMwareFrequencyVMwarePerfFrequency 配置参数(见下文)。

  • VMwareCacheSize

  • VMwareFrequency

  • VMwarePerfFrequency

  • VMwareTimeout

有关更多详细信息,请参阅 Zabbix serverproxy 的配置文件页面。

为了支持数据存储容量指标,Zabbix 要求 VMware 配置 vpxd.stats.maxQueryMetrics 参数的值至少为 64。另请参阅 VMware 知识库 文章

自动发现规则

Zabbix 可以使用低级别发现规则来自动发现 VMware 宿主机和虚拟机。

10. 虚拟机监控 - 图1

所有必填字段都标有红色星号。

上面屏幕截图中的发现规则键值是 vmware.hv.discovery[{$URL}]

开箱即用的模板

Zabbix 官方默认提供了几个开箱即用的模板,用于监控 VMware vCenter 或直接 ESX hypervisor。这些模板包含预配置的 LLD 规则以及一些用于监控虚拟化安装的内置检查。

VMware vCenter 和 ESX hypervisor 监控模板:

  • VMware - 为相应的宏使用 UUID 数据;
  • VMware FQDN - 将 FQDN 数据用于相应的宏。

为了使 VMware FQDN 模板正常工作,每个受监控的 VM 都应具有符合 FQDN 规则的唯一操作系统名称,并且必须在每台计算机上安装 VMware Tools。如果满足以上条件,建议使用 VMware FQDN 模板。在 Zabbix 5.2 中引入了使用自定义接口创建主机的功能后, VMware FQDN 模板的创建成为可能。

如果无法满足 FQDN 要求, VMware 模板仍然可以使用。 VMware 模板有个已知问题:使用保存在 vCenter 中的名称(例如,VM1、VM2 等)创建已发现虚拟机的主机。如果稍后在这些主机上安装 Zabbix agent 并启用自动注册,由于不存在相应的主机,则自动注册进程将读取主机名作为他们启动时的注册名(例如,vm1.example.com、vm2.example.com 等)并创建一个新的主机。因此,每台机器都会有两个具有不同名称的重复主机。

发现虚拟主机使用的模板(通常,这些模板不应该被手动链接到其他主机):

  • VMware Hypervisor
  • VMware Guest

10. 虚拟机监控 - 图2

主机配置

要使用 VMware 简单检查,主机必须定义以下用户宏:

  • {$VMWARE.URL} - VMware 服务 (vCenter 或 ESX hypervisor) SDK
  • {$VMWARE.USERNAME} - VMware 服务用户名
  • {$VMWARE.PASSWORD} - VMware 服务 {$VMWARE.USERNAME} 用户密码

示例

以下示例演示了如何在 Zabbix 上快速设置 VMware 监控:

  • 使用所需选项(—with-libxml2 和 —with-libcurl)编译 zabbix server
  • 将 Zabbix server 配置文件中的 StartVMwareCollectors 选项设置为 1 或更多
  • 创建一个新主机
  • 设置 VMware 身份验证所需的主机宏:
  1. {{..:..:assets:en:manual:vm_monitoring:vm_host_macros.png|}}
  2. * Link the host to the VMware service template:
  3. {{..:..:assets:en:manual:vm_monitoring:vm_host_templates.png|}}
  4. * Click on the //Add// button to save the host

扩展日志记录

可以使用 debug 5 记录 VMware 收集器收集的数据以进行详细调试。可以在 serverproxy 配置文件中设置此级别,或者使用运行时控制选项(-R log_level_increase="vmware collector,N", 其中 N 是进程号)。以下示例演示了如何在已设置调试级别 4 的情况下启动扩展日志记录:

  1. Increase log level of all vmware collectors:
  2. shell> zabbix_server -R log_level_increase="vmware collector"
  3. Increase log level of second vmware collector:
  4. shell> zabbix_server -R log_level_increase="vmware collector,2"

如果不需要对 VMware 收集器数据进行扩展日志记录,则可以使用该-R log_level_decrease 选项将其停止。

故障排除

  • 如果指标不可用,请确保在当前的 VMware vSphere 版本中它们是否不可用或默认关闭,或者是否未对性能指标数据库查询设置一些限制。更多详细信息,请参见 ZBX-12094

  • 如果出现 ‘config.vpxd.stats.maxQueryMetrics’ is invalid or exceeds the maximum number of characters permitted** 的报错,请向 vCenter Server 配置中添加参数 config.vpxd.stats.maxQueryMetrics 。此参数的值应与 VMware 的 web.xmlmaxQuerysize 的值相同。有关详细信息,请参阅此 VMware 知识库 文章