本次实验测试如何在Zabbix中添加Vcenter监控对象实现对VMware虚拟化平台的监控。
一、测试环境
1、Zabbix服务器配置:
Zabbix 版本: Zabbix 7.0.11 LTS
操作系统: Ubuntu 24.04
数据库: MySQL 8
Web 服务器: Apache
IP:192.168.1.242
2、监控目标配置
Vcenter版本: 6.7
ESXI版本:6.5
Vcenter IP:192.168.0.46
二、vCenter 权限配置
使用管理员账号登录 vCenter,创建只读账户
用户创建:系统管理 → 用户和组 → 在 vsphere.local 域下创建用户zabbix。
赋权:全局权限 → 添加权限 → 选择用户zabbix → 分配 Read-only 角色 → 勾选“传播到子对象”。
验证:用新账号登录 vCenter,确认能查看所有资源。
检查 SDK 接口连通性
# curl -i -k --data "" https://192.168.0.46/sdk
返回 HTTP 500 表示接口正常
看了一下7.0版本返回信息是这样的
不同版本的Vcenter返回结果略有不同,但都有HTTP 500
三、ESXi 主机设置
登录每台 ESXi 主机(或通过 vCenter 操作):
启用 MOB 服务:配置 → 高级系统设置 → 搜索 Config.HostAgent.plugins.solo.enableMob → 将值从 false 改为 true。
不开启,将无法获取 ESXi 的 UUID 导致监控失败。
四、Zabbix Server 配置
修改配置文件 /etc/zabbix/zabbix_server.conf:
ini
StartVMwareCollectors=5 # 建议值 = VMware 服务数量 × 1.5(如 3 个服务设 5)
VMwareCacheSize=128M # 大型环境需增大缓存
VMwareFrequency=60 # 配置数据收集间隔(秒)
VMwarePerfFrequency=300 # 性能数据收集间隔(≥60 秒)
VMwareTimeout=300 # 超时时间(大型环境建议 ≥300)
重启服务生效:
#systemctl restart zabbix-server
五、Zabbix Web 界面配置
添加 vCenter 主机
接口:不添加 Agent 接口(使用 SOAP 协议直接通信)。
设置主机宏(关键步骤!)
宏 值
{$VMWARE.URL} https:// 192.168.0.46/sdk
{$VMWARE.USERNAME} zabbix@vsphere.local
{$VMWARE.PASSWORD} 密码
链接模板
使用内置模板:Template VM VMware(自动关联发现规则)。
在host页面出现了Esxi主机对象。
由于虚拟机已添加监控,为避免自动发现重复添加虚拟机监控主机,在Discovery rules中将Discover VMware VMs 设置为 Disabled。
网上有资料提到要设置证书验证或在 Zabbix 主机宏中设置 {$VMWARE.TLS.SKIP_VERIFY}=1忽略验证
在 zabbix_server.conf 添加 VMwareTLSCAFile=/etc/zabbix/vcenter.crt。
实测添加后systemctl start zabbix-server重启zabbix-server 报错:
Jun 25 10:31:43 zabbix7 zabbix_server[243807]: zabbix_server [243807]: unknown parameter "VMwareTLSCAFile" in config file "/etc/zabbix/zabbix_server.conf", line 427 Jun 25 10:31:43 zabbix7 systemd[1]: zabbix-server.service: Control process exited, code=exited, status=1/FAILURE
提示未知参数错误,删除VMwareTLSCAFile配置后重启正常
后续也未设置{$VMWARE.TLS.SKIP_VERIFY}忽略验证。