这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.
2022 Zabbix中国峰会
2022 Zabbix中国峰会

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 宿主机和虚拟机。

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

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

主机原型

可以使用低级别发现规则创建主机原型。当发现虚拟机时,这些原型就变成了真正的主机。原型在被发现之前不能有自己的监控项和触发器,除了来自所链接的模板的那些。发现的主机将属于 existing 主机。

为了使从主机原型创建的主机具有唯一的主机名, 主机名(Host name) 字段必须包含至少一个 低级别发现宏

从 Zabbix 5.2 开始,发现的主机可以配置自定义接口或继承发现规则所属主机的 IP(默认)。要添加一个或多个自定义接口,请将 接口(Interface) 选择器从 继承(Inherit) 模式切换到 自定义(Custom) 模式,然后按下add_link.png 并从出现的下拉菜单中选择所需的接口类型。可以为主机原型定义所有支持的接口类型:Zabbix agent、SNMP、JMX、IPMI。接口字段支持低级别发现宏和 用户宏。如果指定了多个自定义接口 - 使用 默认(Default) 列指定主接口。

注意:

  • 如果选择 自定义 但未指定接口,则将创建没有接口的主机。
  • 如果为属于模板的主机原型选择了 继承 ,则发现的主机将继承模板链接到的主机的接口。

如果主机接口包含不正确的数据,则不会创建主机。

LLD 宏还可用于可见名称、主机组原型字段、标签值或主机原型用户宏的值。

可以为主机原型指定的其他选项包括:

  • 与现有主机组的链接
  • 模板链接
  • 加密

如果选中 Create enabled ,则添加的主机将处于启用状态。如果未选中,仍会添加主机,但处于禁用状态。

如果选中 Discover (默认),则将创建主机。如果未选中,则不会创建主机,除非在 发现规则 中覆盖此设置。此功能在创建发现规则时提供了额外的灵活性。

发现的主机在主机列表中以创建它们的发现规则的名称为前缀。发现的主机可以手动删除,也可以根据 发现规则的保留丢失资源的天数(Keep lost resources period (in days)) 被自动删除。大多数配置选项都是只读的,除了启用/禁用主机和主机清单。发现的主机不能拥有自己的主机原型。

开箱即用的模板

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

主机配置

要使用 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 身份验证所需的主机宏:
    {{..:..:assets:en:manual:vm_monitoring:vm_host_macros.png|}}
       * Link the host to the VMware service template: 
           {{..:..:assets:en:manual:vm_monitoring:vm_host_templates.png|}}
       * Click on the //Add// button to save the host        

扩展日志记录

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

Increase log level of all vmware collectors:
       shell> zabbix_server -R log_level_increase="vmware collector"
       
       Increase log level of second vmware collector:
       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 知识库 文章