You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PyVmomi API统计指定时间区间内各VM的快照数量?

使用PyVmomi统计vCenter中近7天创建的虚拟机快照数量

PyVmomi没有提供直接按时间区间过滤快照的API,你需要手动遍历所有虚拟机的快照树,对比快照的创建时间来统计。以下是实现思路和代码示例:

核心思路

  1. 连接vCenter并获取所有虚拟机对象
  2. 遍历每个虚拟机的快照树(快照是层级结构,需递归/迭代处理子快照)
  3. 计算7天前的UTC时间戳,对比每个快照的createTime属性(该属性为UTC时间)
  4. 统计所有符合时间条件的快照数量

代码实现

from pyVim.connect import SmartConnect, Disconnect
from pyVmomi import vim
import datetime

def count_recent_snapshots(content, days=7):
    # 计算7天前的UTC时间,避免时区偏差
    cutoff_time = datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta(days=days)
    total_count = 0

    # 获取所有虚拟机视图
    vm_container = content.viewManager.CreateContainerView(
        content.rootFolder, [vim.VirtualMachine], recursive=True
    )
    all_vms = vm_container.view
    vm_container.Destroy()

    for vm in all_vms:
        # 跳过无快照的虚拟机
        if not vm.snapshot:
            continue
        
        # 递归遍历快照树
        def traverse_snaps(snap_nodes):
            nonlocal total_count
            for node in snap_nodes:
                if node.snapshot.createTime >= cutoff_time:
                    total_count += 1
                # 处理子快照
                if node.childSnapshotList:
                    traverse_snaps(node.childSnapshotList)
        
        traverse_snaps(vm.snapshot.rootSnapshotList)
    
    return total_count

# 连接vCenter(根据实际环境修改参数)
vcenter_host = "your-vcenter-address"
vcenter_user = "your-account"
vcenter_pwd = "your-password"

si = SmartConnect(
    host=vcenter_host,
    user=vcenter_user,
    pwd=vcenter_pwd,
    port=443,
    disableSslCertValidation=False  # 生产环境请保留证书验证,如需禁用请谨慎
)

if not si:
    print("无法连接到vCenter服务器")
    exit()

content = si.RetrieveContent()
recent_snap_count = count_recent_snapshots(content, days=7)
print(f"近7天创建的快照总数: {recent_snap_count}")

Disconnect(si)

注意事项

  • 时区处理:vCenter返回的createTime是UTC时间,所以计算截止时间时必须使用UTC,否则会出现统计偏差
  • 证书验证:生产环境不要禁用证书验证,可通过导入ssl模块配置信任证书
  • 性能优化:如果vCenter中虚拟机数量极多,可考虑添加分页获取或并行处理逻辑,避免API请求过载

内容的提问来源于stack exchange,提问作者Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:57:23