如何通过VMware vCloud API单次请求获取VDC全部VM CPU使用量?
单次请求获取VDC实际CPU使用量的vCloud API方案
1. 批量VM指标查询(推荐)
使用POST /api/query接口一次性拉取目标VDC下所有VM的cpu.usagemhz.average指标,无需逐个调用VM的metrics接口:
请求体(XML格式):
<QueryList xmlns="http://www.vmware.com/vcloud/v1.5"> <QueryRecordType>vm</QueryRecordType> <Filter>container==urn:vcloud:vdc:YOUR_VDC_URN</Filter> <Fields>cpu.usagemhz.average,name</Fields> </QueryList>
替换YOUR_VDC_URN为你的VDC唯一标识(可通过GET /api/orgVdc/{vdc-id}接口获取)。该请求会返回VDC内所有VM的实时CPU使用MHz值,你只需在本地求和即可。
2. 修正OrgVdc指标调用
之前用OrgVdcRollupType返回0,大概率是未明确指定具体指标或参数错误。在vCloud Director 9.1+版本中,调用:
GET /api/orgVdc/{vdc-id}/metrics?metrics=cpu.usagemhz.average&rollupType=CURRENT
确保请求参数中明确指定cpu.usagemhz.average,而非泛用的CPU指标。同时检查账号是否拥有ViewMetrics权限,无权限会导致返回空值或0。
关键注意事项
- 批量查询的请求次数远低于逐个调用VM接口,能有效规避API限额问题。
- 若需实时数据,
rollupType=CURRENT是最优选择;若允许一定延迟,可选择HOUR/DAY等粒度减少请求频率。
内容的提问来源于stack exchange,提问作者Matthew Knill
相关产品推荐
相关产品推荐

