最近在对接 Zabbix 与 VMware vCenter 时,遇到了一个比较隐蔽的问题:
大部分监控项都能正常获取,但唯独 “获取整体健康 VC 状态(Overall health VC status)” 始终失败。
排查了很久,最终发现并不是 API、网络或者权限继承的问题,而是 vCenter 用户权限缺少一个特殊组授权。
这篇文章记录一下解决过程,避免后面继续踩坑。
⸻
问题现象
Zabbix 已成功连接 vCenter:
- ESXi 主机数据正常
- VM 数据正常
- Datastore 数据正常
- CPU / 内存 / 网络监控正常
但:
- “整体健康状态”
- vCenter Health
- 部分 Appliance Health API
始终获取失败。
通常会看到:
- unsupported
- permission denied
- cannot retrieve service health
- 无返回值
⸻
原因分析
很多教程都会说:
给 Zabbix 用户分配 Read-Only(只读)权限即可。
但实际上:
仅加入 “ReadOnly” 权限组是不够的。
vCenter 的部分健康状态接口属于:
- Appliance API
- System Configuration API
这些接口需要额外的:
SystemConfiguration.ReadOnly
权限组。
这也是为什么:
- 普通资源监控正常
- 健康状态获取失败
因为两者调用的并不是同一套权限体系。
⸻
解决方案
进入 vCenter:
管理
→ 单点登录
→ 用户和组
→ 组
搜索:
SystemConfiguration.ReadOnly
然后:
将用于 Zabbix 的 vCenter 用户添加进去。
⸻
操作步骤
- 登录 vCenter
进入:
Administration(管理)
⸻
- 进入用户组管理
路径:
Single Sign On
→ Users and Groups
→ Groups
⸻
- 搜索权限组
搜索:
SystemConfiguration.ReadOnly
⸻
- 添加 Zabbix 用户
将:
zabbix
或你实际使用的监控账号:
添加到:
SystemConfiguration.ReadOnly
组中。
⸻
配置示意图
zabbix 报警示意图
⸻
搜索权限组
添加用户到组
⸻
最终效果
添加完成后:
- Zabbix 无需重启
- 稍等几分钟
- 重新采集即可恢复
随后:
- VC Overall Health
- Appliance Health
- System Health
都会恢复正常。
⸻
总结
这个问题最大的坑在于:
VMware vCenter 的 “ReadOnly” 并不包含全部只读 API 权限。
对于 Zabbix 监控来说:
除了:
ReadOnly
还需要:
SystemConfiguration.ReadOnly
否则:
- 大部分监控正常
- 但健康状态相关监控会失败
属于非常容易忽略的一个细节。
⸻
适用环境
适用于:
- Zabbix 对接 VMware vCenter
- VMware vSphere
- VCSA(vCenter Server Appliance)
测试环境:
- Zabbix 7.x
- vCenter 7.x / 8.x