最近在对接 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 用户添加进去。

操作步骤

  1. 登录 vCenter

进入:

Administration(管理)

  1. 进入用户组管理

路径:

Single Sign On
→ Users and Groups
→ Groups

  1. 搜索权限组

搜索:

SystemConfiguration.ReadOnly

  1. 添加 Zabbix 用户

将:

zabbix

或你实际使用的监控账号:

添加到:

SystemConfiguration.ReadOnly

组中。

配置示意图

zabbix 报警示意图
CleanShot 2026-05-07 at 11.24.20@2x

搜索权限组
添加用户到组
CleanShot 2026-05-07 at 11.26.39@2x

最终效果

添加完成后:

  • 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