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 环境大小以及 VMwareFrequency 和 VMwarePerfFrequency 配置参数(见下文)。VMwareCacheSize
VMwareFrequency
VMwarePerfFrequency
VMwareTimeout
有关更多详细信息,请参阅 Zabbix server 和proxy 的配置文件页面。
为了支持数据存储容量指标,Zabbix 要求 VMware 配置 vpxd.stats.maxQueryMetrics 参数的值至少为 64。另请参阅 VMware 知识库 文章。
自动发现规则
Zabbix 可以使用低级别发现规则来自动发现 VMware 宿主机和虚拟机。
所有必填字段都标有红色星号。
上面屏幕截图中的发现规则键值是 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。
主机配置
要使用 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 收集器收集的数据以进行详细调试。可以在 server 和 proxy 配置文件中设置此级别,或者使用运行时控制选项(-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.xml 中maxQuerysize
的值相同。有关详细信息,请参阅此 VMware 知识库 文章。