如何使用govc cli查看指定VM的所有历史任务
govc查询指定VM全量历史任务实现方案
默认命令仅返回近期任务的原因
govc tasks <vm-name>默认仅拉取vCenter实时任务缓存中的近期数据,vCenter会定期将过期的实时任务移入归档库,超出缓存留存周期的任务不会被默认查询返回,已经被vCenter按留存规则清理删除的任务无法被检索。
具体实现方法
- 拉取归档库中的历史任务
执行查询时追加--archive参数读取归档任务存储,同时通过-n指定足够大的返回条数上限、通过--from/--to指定查询的时间区间即可拉取对应范围的历史任务,示例命令:
参数说明:# 查询test-web-01虚拟机2023年1月1日至今的最多2000条历史任务 govc tasks -n 2000 --archive --from "2023-01-01T00:00:00Z" test-web-01-n:指定返回任务的最大数量,默认值较低,查询长周期历史时建议设置为1000以上--from/--to:指定查询的时间范围,时间格式遵循RFC3339标准,例如2024-01-01T00:00:00Z代表UTC时间2024年1月1日零点- 如果环境中存在重名虚拟机,建议先通过
govc vm.info <vm-name>获取虚拟机的MOID,用MOID替代VM名称作为查询参数,避免匹配错误
- 调整vCenter任务留存周期
如果上述命令仍无法查询到目标时间范围的任务,需要先调整vCenter的任务保留配置:- 登录vCenter管理界面,进入系统配置-高级设置页
- 找到
config.task.maxAgeEnabled参数,将值设置为true开启任务长期留存 - 找到
config.task.maxAge参数,将值设置为你需要保留任务的天数,例如设置为365即保留1年的任务记录 - 重启vCenter服务后配置生效,配置调整前已经被系统清理的任务无法恢复查询
- 结构化导出任务数据
如果需要后续对任务数据做筛选分析,可以追加-json参数输出结构化的JSON格式结果,示例:govc tasks -n 2000 --archive --from "2023-01-01T00:00:00Z" -json test-web-01 > vm_task_history.json
注意:若执行命令时提示
--archive参数不存在,请将本地govc客户端升级到与当前vCenter版本匹配的最新版本后重试。
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

