【vSphere API学习笔记#4】属性收集器(Property Collector)

2017年10月14日 0 条评论 254 次阅读 0 人点赞

4.1 内容简介

在本章内容将重点介绍属性收集器。在这部分内容介绍属性收集器受管对象PropertyCollectory 及其涉及到的数据对象和方法,着重介绍单一收集操作和增量收集操作。除此之外,还简单介绍了SearchIndex。

4.2 概念

4.2.1     什么是属性收集器?

属性收集器是用于查询和监控受管对象信息的服务接口。属性收集器对应的受管对象是PropertyCollector。

因此,属性收集器有两个作用,第一作用是查询受管对象信息,第二个作用是监控受管对象的信息。

4.2.2     属性收集器如何查询受管对象信息?

属性收集器通过一个或多个筛选器(filter)来决定收集数据的范围,然后其自己的方法来经查询数据。

数据收集的途径主要是单一收集和增量收集(也是受管对象监控)。其中单一收集主要是使用RetrievePropertiesEx 方法,而这种方法主要适用于收集不需要与服务器状态保持同步的数据。增量收集使用  WaitForUpdatesEx 方法,适用于收集需要与服务器状态保持同步的数据。

4.2.3     什么是筛选器及其组成

筛选器由一组数据对象组成,其作用是确定属性收集器收集数据的范围。

筛选器数据对象信息

4.3 对象

4.3.1        受管对象

  • PropertyCollector:查询其他受管对象的属性信息以及检测其他受管对象的属性的改变。
属性名称 属性类型 描述
filter PropertyFilter[] MoR 用于确定增量查询属性的的过滤器
  • SearchIndex:通过参数查询清单中指定的实体。

4.3.2        数据对象

  • PropertyFilterSpec:指定筛选器中包含的属性数据。至少包含一个ObjectSpec 数据对象和一个 PropertySpec 数据对象。
属性名称 属性类型 描述
objectSet ObjectSpec[] 确定要筛选的对象的规范集。
propSet PropertySpec[] 包括在筛选器中的属性集, 为每个对象类型指定。
reportMissingObjectsInResults xsd:boolean 可选参数。控制如何报告在筛选器创建期间丢失的对象。
  • ObjectSpec:标识属性收集的开始对象。也可以标识将收集的其他额外的对象。
属性名称 属性类型 描述
obj ManagedObjectReference 开始的对象。
selectSet SelectionSpec[] 可选参数。选项集, 以指定要筛选的其他对象。
skip xsd:boolean 可选参数。标志来指定是否报告此受管对象的属性。如果该标志为 true, 则筛选器将不报告此受管对象的属性。
  • TraversalSpec:标识属性集合的对象类型。还提供了一个或多个用于清单遍历的路径。
属性名称 属性类型 描述
path xsd:string 用于选择其他对象的属性名称。
selectSet SelectionSpec[] 可选参数。选项集, 以指定要筛选的其他对象。
skip xsd:boolean 可选参数。指定是否筛选“path”中的对象。设置为false,PropertyCollector将会从 path对象中收集数据。
type xsd:string 包含属性的对象的类型名称
name xsd:string 可选参数。选择规范的名称。继承于SelectionSpec
  • SelectionSpec:用于指定要筛选的其他对象的基类型。
属性名称 属性类型 描述
name xsd:string 可选参数。选择规范的名称。继承于SelectionSpec
  • PropertySpec:指定要收集的属性。
属性名称 属性类型 描述
all xsd:boolean 可选参数。指定对象的所有属性是否被读取。
pathSet xsd:string[] 可选参数。指定要查询的受管对象的属性。
type xsd:string 被收集的受管对象的名称
  • View objects:标识vSphere清单对象的子集。
  • RetrieveOptions:RetrievePropertiesEx的选项。
属性名称 属性类型 描述
maxObjects xsd:int 可选参数。RetrievePropertiesEx 返回的单次结果中ObjectContent数据对象的最大数量 。

不设置值指示没有最大。但是PropertyCollector策略仍然会限制最大数量。

  • RetrieveResult:RetrievePropertiesEx 和 ContinueRetrievePropertiesEx的结果。
属性名称 属性类型 描述
objects ObjectContent[] 查询到的对象
token xsd:string 可选参数。用于下一次查询结果的token。如果有,则可以使用ContinueRetrievePropertiesEx继续获取结果。否则,没有可以查询的结果。
  • WaitOptions:WaitForUpdatesEx的选项。
属性名称 属性类型 描述
maxObjectUpdates xsd:int 可选参数。WaitForUpdatesEx 返回的单次结果中ObjectUpdate实体的最大数量。
maxWaitSeconds xsd:int 可选参数。在返回空之前,PropertyCollector的等待时间,以秒为单位。
  • UpdateSet:一组更新, 表示自以前调用 CheckForUpdates、WaitForUpdates 或 WaitForUpdatesEx 后所做的更改。
属性名称 属性类型 描述
filterSet PropertyFilterUpdate[] 由特定筛选器检测到的受管对象更新集
truncated xsd:boolean 如果为 true, 则此 UpdateSet 包含挂起的更改计算的结果, 这将限制对version的使用。

如果为 false, 则此 UpdateSet 包含一个完整的更改计算或一系列挂起的更改计算的最后一部分。该版本可以多次传递给 CheckForUpdates、WaitForUpdates 或 WaitForUpdatesEx。重新使用version允许客户端在上一个调用的瞬时失败后恢复更改序列。

version xsd:string 在下一次调用 CheckForUpdates、WaitForUpdates 或 WaitForUpdatesEx 时要传递的新数据版本。

 

4.4 方法

4.4.1    PropertyCollector

分类 方法 描述
使用多种不同的筛选器监控属性 CreatePropertyCollector 用途 创建一个新的会话指定的 PropertyCollector, 可用于检索与任何其他 PropertyCollector 无关的属性更新。
参数 _this(MoR)
返回值 PropertyCollector MoR
DestoryPropertyCollector 用途 从客户端应用中销毁一个由CreatePropertyCollector创建的PropertyCollector实例。
参数 _this(MoR)
返回值 NONE
单一收集操作 RetrievePropertiesEx 用途 查询特定受管对象的特定属性
参数 _this(MoR)
specSet(PropertyFilterSpec[]):指定要查询的属性
Options(RetrieveOptions):其他方法选项。如果省略, 则等效于没有设置字段的选项参数。
返回值 RetrieveResult
ContinueRetrievePropertiesEx 用途 从由RetrievePropertiesEx开始的操作中获取额外的数据
参数 _this(MoR)
token(xsd:string):同一个会话中,由同一个PropertyCollector返回的前一个 RetrieveResult 中的token
返回值 RetrieveResult
CancelRetrievePropertiesEx 用途 取消RetrievePropertiesEx或ContinueRetrievePropertiesEx操作
参数 _this(MoR)
token(xsd:string):同一个会话中,由同一个PropertyCollector返回的前一个 RetrieveResult 中的token
返回值 NONE
增量收集或监控操作 WaitForUpdatesEx 用途 获取上一次WaitForUpdatesEx周期之后属性值的变化。

WaitForUpdatesEx阻塞,直到满足请求或者请求超时。

支持分块数据收集。适用于收集需要同步的服务器数据。

参数 _this(MoR)
version(xsd:string):可选参数。客户端当前已知的数据版本。
options(WaitOptions):可选参数。控制更改计算的其他选项。如果省略, 则等效于没有设置字段的选项参数。
返回值 UpdateSet
CancelWaitForUpdatesEx 用途 尝试在当前会话中取消对 WaitForUpdates 或 WaitForUpdatesEx 的未完成调用
参数 _this(MoR)
CreateFilter 用途 为给出的一组受管对象创建一个新的筛选器
参数 _this(MoR)
spec(PropertyFilterSpec):筛选器的规范
partialUpdates(xsd:boolean):标志来指定对嵌套属性的更改是否只报告嵌套更改
返回值 PropertyFilter MoR

4.4.2    SearchIndex

方法 描述
FindAllByDnsName 用途 通过DNS名称查找所有虚拟机或主机
参数 _this(MoR)
datacenter(Datacenter MoR):可选参数。如果指定,则在指定的Datacenter中查找
dnsName(xsd:string):要查找的完全限定的域名。
vmSearch(xsd:boolean):设置为true时,查找虚拟机,否则查找主机
返回值 ManagedEntity[] MoR
FindAllByIp 用途 通过IP地址查找所有虚拟机或主机
参数 _this(MoR)
datacenter(Datacenter MoR):可选参数。如果指定,则在指定的Datacenter中查找
ip(xsd:string):要查找的ip地址。
vmSearch(xsd:boolean):设置为true时,查找虚拟机,否则查找主机
返回值 ManagedEntity[] MoR
FindAllByUuid 用途 通过UUID查找所有虚拟机或主机
参数 _this(MoR)
datacenter(Datacenter MoR):可选参数。如果指定,则在指定的Datacenter中查找
uuid(xsd:string):要查找的UUID。
vmSearch(xsd:boolean):设置为true时,查找虚拟机,否则查找主机
instanceUuid(xsd:boolean):可选参数。在vmSearch设置为true时可使用,如果指定,查找虚拟机的实例UUID,否则,搜索BIOS UUID。
返回值 ManagedEntity[] MoR
FindByDatastorePath 用途 通过虚拟机在datastore上的位置查找虚拟机
参数 _this(MoR)
datacenter(Datacenter MoR):指定datastore路径所属的datacenter
path(xsd:string):到虚拟机.vmx文件的datastore路径
返回值 VirtualMachine MoR
FindByDnsName 用途 通过DNS 名称查找一台虚拟机或主机
参数 _this(MoR)
datacenter(Datacenter MoR):可选参数。如果指定,则在指定的Datacenter中查找
dnsName(xsd:string):要查找的完全限定的域名。
vmSearch(xsd:boolean):设置为true时,查找虚拟机,否则查找主机
返回值 ManagedEntity MoR
FindByInventoryPath 用途 根据受管实体在清单中的位置查找该实体
参数 _this(MoR)
inventoryPath(xsd:string): 实体路径
返回值 ManagedEntity MoR
FindByIp 用途 通过IP地址查找一台虚拟机或主机
参数 _this(MoR)
datacenter(Datacenter MoR):可选参数。如果指定,则在指定的Datacenter中查找
ip(xsd:string):要查找的ip地址。
vmSearch(xsd:boolean):设置为true时,查找虚拟机,否则查找主机
返回值 ManagedEntity MoR
FindByUuid 用途 通过UUID查找所有虚拟机或主机
参数 _this(MoR)
datacenter(Datacenter MoR):可选参数。如果指定,则在指定的Datacenter中查找
uuid(xsd:string):要查找的UUID。
vmSearch(xsd:boolean):设置为true时,查找虚拟机,否则查找主机
instanceUuid(xsd:boolean):可选参数。在vmSearch设置为true时可使用,如果指定,查找虚拟机的实例UUID,否则,搜索BIOS UUID。
返回值 ManagedEntity MoR
FindChild 用途 根据受管实体名称查找特定的子集。仅搜索受管实体的直接子级。
参数 _this(MoR)
entity(ManagedEntity MoR):受管实体
name(xsd:string):子级对象的名称
返回值 ManagedEntity MoR

4.5 内容

4.5.1        单一收集操作详解

单一收集操作主要应用于收集客户端与服务端不需要保持同步的数据。单一收集操作使用的方法是RetrievePropertiesEx,与该方法配套的方法有ContinueRetrievePropertiesEx、CancelRetrievePropertiesEx。

需要注意的是每次执行 RetrievePropertiesEx 和 ContinueRetrievePropertiesEx 方法获得到结果 RetrieveResult 中 查询到的对象最多为100个,即使RetrieveOptions中maxObjects设置的值超过100。如果需要查询结果中的对象对于100,则需要调用ContinueRetrievePropertiesEx 并将当前结果中的token属性值传给 ContinueRetrievePropertiesEx 。

单一收集操作流程

4.5.1.1    使用TraversalSpec 遍历

示例:

步骤一:创建和配置遍历起点ObjectSpec。

步骤二:创建清单遍历路径 TraversalSpec,并将其添加到 ObjectSpec中。

 

 

步骤三:指定将要查询的属性,即创建PropertySpec。

 

 

步骤四:创建筛选器和筛选器列表。

步骤五:查询数据。

4.5.1.2    使用SelectionSpec 遍历

ObjectSpec 和 TraversalSpec 对象中的 selectSet 数组可以包括 TraversalSpec 对象和 SelectionSpec 对象。SelectionSpec 是 TraversalSpec 对象的基类。在 selectSet 数组中使用 SelectionSpec 对象作为对有相同name属性值的 TraversalSpec 对象的引用。通过使用 SelectionSpec 引用, 可以重用 TraversalSpec, 并且可以定义递归遍历。

  • 简单SelectionSpec引用

使用 SelectionSpec 引用可避免写入重复的 TraversalSpec 声明。在 SelectionSpec 引用中标识的 TraversalSpec 必须在同一 PropertyFilterSpec 中。如果 ObjectSpec selectSet 数组包含 SelectionSpec, 则引用的 TraversalSpec 必须标识相同的对象类型。TraversalSpec. type 必须与 ObjectSpec. obj 中指定的对象的类型匹配。PropertyCollector 将 TraversalSpec 应用于对象, 并使用 TraversalSpec. path 属性来扩展其遍历。在下图中显示了对虚拟机TraversalSpec的引用的使用。SelectionSpec 引用与网络和数据存储遍历关联。

简单SelectionSpec引用

  • 递归遍历(Recursive Traversal

使用 SelectionSpec 将 TraversalSpec 应用于其自身遍历的结果。若要使用递归筛选结构, 需要创建一个指定 TraversalSpec 名称的 SelectionSpec, 并将其添加到命名的 TraversalSpec 选择集。递归构造将清单遍历扩展到 TraversalSpec 对象直接表示的路径之外。

递归遍历(Recursive Traversal)

4.5.2        增量收集操作详解

增量收集操作,也是监控操作,主要应用于收集客户端与服务端需要保持同步的数据。使用的主要方法是  CreateFilter 和 WaitForUpdatesEx ,其中CreateFilter主要用于创建持久化的属性筛选器规范。在RetrievePropertiesEx 方法中使用的 PropertyFilterSpec 对象有有限的寿命,在收集结果返回给客户端后,服务器将会自动销毁 PropertyFilterSpec 对象。但是在 WaitForUpdatesEx 方法中需要多次调用PropertyFilterSpec 对象。因此,用于增量收集操作的筛选器在会话期间持续存在, 或者直到销毁它们为止。

WaitForUpdatesEx 方法支持基于指定的等待时间的属性集合的轮询机制。WaitOptions. maxWaitSeconds 属性的值确定 PropertyCollector 是否使用即时检索或轮询模型。当用0的等待时间调用 WaitForUpdatesEx 时, 它将检查更新并立即返回。当用大于0的等待时间调用 WaitForUpdatesEx 时, 该方法将一直等到指定的时间或更改为止。WaitForUpdatesEx 会阻止进程, 直到出现更新或超时。超时受 maxWaitSeconds 值、收集更新属性值所需的时间和 PropertyCollector 策略的影响。

需要注意的是,WaitForUpdatesEx 返回的结果中的受管对象更新集最大为100。更新集超过100,则需要继续调用WaitForUpdatesEx 并将结果中的version传给它。

4.5.3        属性收集器性能

在任何会话中,下列因素会影响属性收集器的性能:

  • 对象的数量
  • 属性的数量
  • 属性数据的密度
  • 服务器上对象和数据更改的频率
  • 遍历的深度

此外, vSphere 服务器还受 PropertyCollector 实例的数量和每个实例在服务器上的所有会话中支持的筛选器数量的影响。 要最小化 PropertyCollector 开销和客户端应用程序的网络通信量, 可以使用 PropertyCollector 的View对象。

4.5.4        SearchIndex详解

SearchIndex 受管对象提供了一组方法, 用于获取对 vSphere 清单中的受管对象的引用。可以按受管对象的清单路径、IP 地址、数据存储路径、DNS 名称和其他各种标识属性进行搜索。

 

 

realks

这个人太懒什么东西都没留下

文章评论(0)