使用VMware VSphere WebService SDK进行开发 (一)——基本信息阐述

               
欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。

 

网上对于VSphere WebService SDK的介绍比较少(至少我能查到的资料比较少),官方提供的也是英文版的api,而且没有注明使用方法。最近接触到关于VSphere WebService SDK的开发,刚开始也是烦躁,比如要获取一个cpu使用情况的信息,按照惯例,API应该提供类似:long getCpuUsage() 之类的接口,但是绝逼没有那么easy,不过很快掌握了规律。我觉得有必要分享一下我所了解到的知识点,希望能够给各位读者有那么一点抛砖引玉的作用。

我准备通过几篇文章来主要讲述如何使用VSphere WebService SDK 进行对资源信息的监控和告警的采集。对资源监视的监控主要包括:对虚拟机(Virtual Machine)信息的监控(cpu使用情况、磁盘的写入以及读取速度、内存的滞后时间、网络的丢弃的传输和接收的数据报数等待)、对主机(HostSystem)的监控、对集群(Cluster, Compute Resource)信息的监控. 告警也是对这几个主要的对象进行告警采集。

关于软件的安装,譬如vSphere的配置以及vSphere Client的安装就此略过。我这里使用的版本是VMware-vSphere-SDK-5.0.0-429209。

本篇文章主要先阐述一些基本知识。

VMware vSphere支持健壮的、容错的虚拟化应用、网络和存储。vSphere提供许多可选的组件和模块,例如VMware High Availability(HA) 和VMware VMotion。VMware vSphere Web Services SDK提供给Web Services开发者通过编程的方式访问vSphere组件。

vSphere API以无关语言的Web Serivce的形式实现,客户端应用通过远程调用来访问ESX/ESXi, VCenter vSphere systems上的服务和组件。

VMware vSphere客户端程序基于一个异步通讯的分布式架构模型,架构的基础基于server-side managed object, client-side managed object references和data objects.

Managed Object: 在vSphere server(ESX/ESXi 或 vCenter Server system)上,代表着vSphere的服务和组件。服务包括 PropertyCollector, SearchIndex, PerformanceManager和ViewManager。组件包括inventory objects例如VirtualMachine,Datastore和Folder.

Managed Object refereneces:是客户端应用服务器端managed objects.你的客户端应用程序通过使用ManagedObjectReference objects来向服务器发送请求操作。在object的生命周期内ManagedObjectReferences是唯一和持久有效地。当一个存在与清单中由于过期sessions或服务器重启而删除的object的应用会依然存在。假如你删除一个object,例如一个虚拟机,然后又找回它,对它的引用将改变。

Data objects:包含着关于managed objects的信息,你的客户端程序发送data objects和接收data objects与一个vSphere server, 不同的标准和功能object例如VirtualMachineConfigSp和HostCapability.

下图清楚的说明了这三种数据对象及 vSphere Sever 与 client 的关系。

在这三种数据对象中,MO 代表了服务器端的服务或组件,他们都直接或间接继承自 ManagedEntity 抽象类。下面的类图展示了目前 vSphere Infrastructure 中的 7 种最重要的 MO 类型和它们的继承关系,它们代表了 vSphere Infrastructure 中的 7 种组件或者实体。

使用 SDK 开发自己的 vSphere 客户端程序,首要的问题就是如何访问和遍历在 vSphere Inventory 中的对象。下面我们将介绍这方面的内容。

 

vSphere Inventory 介绍

 

 

vSphere inventory 其实就是 vSphere datacenter 及其管理的对象。在 vSphere inventory 中包含了以下三种类型的对象:

在 datacenter 中被管理的系统,比如 Host、VirtualMachine、VirtualApp 等。

具有一定功能的组件,比如 ComputeResource、DataStore,、Network 等。

负责组织归类的组件,它们负责把 datacenter 中的对象按照层级关系组织起来形成了一个树状结构,比如 Folder 和 DataCenter。

ESX/ESXi server 和 vCenter 的 inventory 结构是类似的,只是在 ESX server 中,有些对象的数量有限制,比如在一个 ESX server 的 inventory 中只能有一个 Host 实体。下面两张图分别给出了 vCenter 这 ESX server 的 inventory 的结构。

 

vCenter Inventory 结构

 

 

 

上面这个关系图很关键,对于系统中关键信息的检索,首先要根据这张图搜寻相关的ManagedObjectReference对象,然后根据此对象的属性树进行遍历。比如搜寻DataCenter对象的相关信息:

 

 private static TraversalSpec getDatacenterTraversalSpec() {  SelectionSpec sSpec = 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值