10. 虚拟机监控

概述

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

在Zabbix中同样包含多个现成的监控模板用于监控VMware vCenter 或者 ESXi hypervisors。

截至目前为止,支持监控的VMware vCenter或vSphere 版本为5.1版。

数据采集

虚拟机的监控包含两个步骤:

  1. Zabbix vmware collector(vmware 采集器)进程完成对虚拟机的数据采集 - 这些进程通过SOAP协议收集包括必要的VMware web服务信息,对这些信息进行预处理并且存储于Zabbix Server的共享内存。

  2. Zabbix poller (轮询)进程通过VMware monitoring item keys完成对数据的检索。

Zabbix将采集的数据分为两种,分别是VMware 配置数据和VMware性能计算数据。这两种类型的数据都由vmware collector独自完成采集。

下列所统计的参数都是可查看的VMware 性能计算信息:

  • Datastore(数据存储)
  • Disk device(磁盘设备)
  • CPU
  • Power(电源)
  • Network interface(网络接口)
  • Custom performance counter items(自定义性能计算参数)

用户若对完整的VMware 性能计算参数有查阅需求,请查看VMware monitoring item keys

请注意,Vmware事项的检索频率依赖于vmware.eventlog的轮询间隔,且该间隔不能小于5秒钟。

配置

如果Zabbix server采用基于编译的方式由sources安装,那么用户必须在编译安装添加--with-libcurl --with-libxml2 配置选项来使能虚拟机的监控。而用户若采用 Zabbix安装包的方式,那么相关的配置选项已集成于安装包中。

以下的Zabbix Server配置文档参数可用于调整虚拟机监控:

强烈建议相较用于被监控的Vmware服务的采集器数量,用户可以使能更多的采集器数量;否则,对于VMware性能计算数据的检索会由于VMware配置数据的检索而造成延迟(尤其是大型的安装会需要更多的时间)。

通常情况下,StartVMwareCollectors的值不会低于2而且也不应大于监控VMware服务总数的两倍:服务数量< StartVMwareCollectors < (服务数量 * 2)。 举例来说,当监控一个VMware服务时,设定StartVMwareCollectors的值为2;当监控三个服务时,则需要用户设定StartVMwareCollectors的值为5

请注意,系统所需的采集器数量同样也依赖于VMware环境的大小,同时用户还需考虑VMwareFrequencyVMwarePerfFrequency两个配置参数。

为了能够支持数据存储容量指标,请确保VMware vpxd.stats.maxQueryMetrics参数的键值至少设定为64。 若需要更多资讯,请查阅VMware Knowledge Base article

自动发现规则

Zabbix可以使用low-level discovery rules(低级别发现规则,例如vmware.hv.discovery[{$VMWARE.URL}])来实现 VMware hypervisors(宿主机)和虚拟机的自动发现。

除此之外,Zabbix可以使用host prototypes(主机原型)来实现对发现的实体进行自动生成监控主机的功能。 更多信息,请参考Host prototypes

开箱即用的监控模板

Zabbix包含了可开箱即用的templates (监控模板),可用于监控VMware vCenter 或 ESXi hypervisors。这些监控模板包含与配置的LLD规则同时配置了用于监控虚拟化安装的内部检查功能。

以下所罗列的监控模板可以用于监控VMware vCenter 或者 ESXi hypervisors:

  • VMware - 将UUID数据用于对应的macros(宏);
  • VMware FQDN - 将FQDN数据用于对应的 macros(宏);

为了使VMware FQDN模板可以正常工作,每个被监控的虚拟机都应具有负责FQDN规则的且唯一的操作系统名称。并且每个虚拟机都需要安装VMware Tools/Open Virtual Machine tools。如果满足以上所属条件,建议用户采用VMware FQDN模板。VMware FQDN 模板自Zabbix 5.2版本便已引入。伴随着该模板的应用,用户可以根据自定义的接口创建主机。

即便无法满足FQDN的要求,典型的VMware模板仍然可以使用。但是,VMware模板存在一个已知的问题。为发现的虚拟机创建主机,若为该主机所创建的名称已经保存于(如 “VM1”,,”VM2”,等)vCenter中。如果这些虚拟机中均安装过Zabbix agent,同时开启了Zabbix agent的自动注册功能,那么自动注册进程会直接读取虚拟机的名称作为他们启动时的注册名称 (例如, “vm1.example.com”,”vm2.example.com”,等等)。这个问题会导致系统为已经存在的虚拟机创建一个新的名称(由于没有发现对应的名称),其结果为存在具有不同名称的重复的主机。

以下模板可用于发现虚拟机,通常情况下,这些模板不应该通过手动链接的方式应用于主机配置:

  • VMware Hypervisor
  • VMware Guest
主机宏配置

若用户需要使用VMware simple checks(简单检查),则该主机必须定义下列的用户级别宏:

  • {$VMWARE.URL} - VMware service (vCenter or ESXi hypervisor) SDK URL (https://servername/sdk)
  • {$VMWARE.USERNAME} - VMware service 用户名称
  • {$VMWARE.PASSWORD} - VMware service {$VMWARE.USERNAME} 用户密码
配置示例

该示例为用户展示了如何通过VMware FQDN模板为Zabbix快速配置一个VMware监控,请参考Monitor VMware with Zabbix.

若用户需要了解更多有关如何为监控的VMware虚拟机创建一个主机、一个LLD规则和一个主机原型,请查阅Setup example

日志扩展

用户可以使用“debug level 5”来对vmware collector进程所收集的数据进行详细调试。用户可以在serverproxy 配置文档中对调试等级进行配置或者使用运行时间控制选项 -R log_level_increase="vmware collector,N"来实现,“N”在这里指的是进程号。

举例来说,若想要提升所有的vmware collector进程等级由4升到5, 请运行如下命令:

  1. zabbix_server -R log_level_increase="vmware collector"

若想要提升第二个vmware collector进程的调试等级由4升到5,则运行如下命令:

  1. zabbix_server -R log_level_increase="vmware collector,2"

若用户不再需要开启VMware采集器数据的日志扩展,则可以应用 -R log_level_decrease 命令来恢复其调试等级(缺省等级3)。

故障排除

  • 若指标不可用,请确保在当前的 VMware vSphere 版本中出于不可用或默认关闭状态,又或者是否未对数据库性能指标未设置限制。若想了解更多信息,请查阅 ZBX-12094
  • config.vpxd.stats.maxQueryMetrics无效或者超出了允许字符错误的最大阈值,那么用户可以通过添加一个config.vpxd.stats.maxQueryMetrics参数到vCenter Server 配置中来解决这个问题。该参数的值应于VMware web.xml文档中maxQuerysize的值相同。更多的信息,请查阅VMware Knowledge Base article