Managed Object Browser(MOB)是一個和vSphere(ESXi和vCenter)捆綁在一起的工具,可以直觀的瀏覽或查詢vSphere當中各種物件的資訊,比如叢集、主機以及虛擬機器等。這些物件包含多個屬性,我們可以透過這些屬性瞭解相關物件的詳細資訊,比如物件的狀態、配置以及結構等。同時,在不同的物件裡,還可以透過“Invoke Method”呼叫引數指定某些屬性或者執行一項特定的任務,比如關閉虛擬機器和建立快照等。
Managed Object Browser(MOB)訪問地址是https://vcsa-IP-or-FQDN/mob,在vCenter的地址後面增加mob即可直接訪問它。或者,也可以登入https://vcsa-IP-or-FQDN/,點選右邊的“瀏覽 vSphere 管理的物件”進行訪問。
如果是獨立的ESXi主機,預設情況下Managed Object Browser(MOB)服務是關閉的,我們需要在高階設定裡面將MOB配置(Config.HostAgent.plugins.solo.enableMob)的值修改為TRUE,瀏覽器輸入https://esxi-FQDN-or-IP/mob皆可進行訪問。
輸入vCenter Server的SSO管理員和密碼或者ESXi的ROOT管理員和密碼登入MOB後,MOB的介面如下圖所示。
在使用MOB之前,先來了解一下Managed Object Browser(MOB)工具的元件構成:
- Managed Object Type(託管物件型別):vCenter中對應的物件型別,如資料中心Datacenter、主機HostSystem以及虛擬機器VirtualMachine等。
- Managed Object ID(託管物件 ID):vCenter中給某一個物件生成的唯一ID,也叫MOID。
- Data Object Type(資料物件型別):某一個物件內屬性下的子物件,為父屬性中的Type值。
- Parent Managed Object ID(託管物件父 ID):某一個物件內具有一個或多個子物件,則子物件具有上一個物件的父ID。
- Property Path(屬性路徑):標識當前物件所在的屬性名稱,為父屬性中的Value值。
- Properties(屬性):某一個物件內具有一個或多個屬性,包含該屬性的名字、型別以及值。
- Methods(操作):某一個物件記憶體在對該物件的一個或多個Method,則可以使用Invoke呼叫引數執行任務。
當安裝完vCenter Server後,預設情況下會建立一個例項,或者說叫站點,這個例項的名字在vSphere Client中顯示的是vCenter Server的FQDN或者IP地址,然後再在這個例項下面建立資料中心、叢集以及虛擬機器等。在MOB當中,這個預設例項叫ServiceInstance,在這個ServiceInstance下面會有一個預設的資料夾Folder,這個資料夾下面才是資料中心Datacenter(預設情況下,必須要先建立資料中心),資料中心可以建立一個或者多個,在每個資料中心下面有四個資料夾Folder,分別對應vCenter中的計算、虛擬機器、網路、儲存板塊。在這四個資料夾(或者四種資源)下面具有其他的物件,比如計算資料夾下面有主機物件、資源池物件;在虛擬機器資料夾下面有虛擬機器物件、虛擬APP物件;在網路檔案下面有標準交換機、分散式交換機等物件;在儲存資料夾下面有儲存叢集、本地儲存等物件。這些所有物件構成了vCenter中的清單,MOB就是基於這個清單物件進行使用的。
(vCenter Server 清單物件)
(ESXi 清單物件)
實際上,vSphere中vCenter Server和ESXi主機中所具備的MOB清單物件並不一樣,不是說名字不一樣,而是vCenter Server和ESXi主機因為所在的視角不一樣,所以物件清單會不同,有點類似於兩者之間所支援的功能不同一樣,下面列出了兩者的所具備物件清單的差別:
物件型別 | ESXi清單 | vCenter清單 |
ClusterComputeResource | 不具有。從ESXi角度看,看不到這種物件型別。 | 具有多個。支援建立多個叢集。可以看到多個。 |
ComputeResource | 一個。從ESXi角度看,只能看到主機自身。 | 具有多個。支援新增多個主機。可以看到多個。 |
Datacenter | 一個。從ESXi角度看,只能看到主機所在的資料中心。 | 具有多個。支援建立多個資料中心。可以看到多個。 |
Datastore | 具有多個。從ESXi角度看,主機上面可以有多個儲存。 | 具有多個。支援新增多個資料儲存。可以看到多個。 |
DistributedVirtualSwitch | 具有多個。從ESXi角度看,主機上面可以建立多個分散式交換機。 | 具有多個。支援建立多個虛擬交換機。可以看到多個。 |
Folder | 一個。從ESXi角度看,主機上面只能看到一個資料夾。 | 具有多個。支援建立多個虛擬機器資料夾。可以看到多個。 |
HostSystem | 一個。從ESXi角度看,只能看到主機本身。 | 具有多個。支援新增多個主機。可以看到多個。 |
Network | 具有多個。從ESXi角度看,可以看到多個標準網路交換機。 | 具有多個。支援新增多個虛擬機器交換機。可以看到多個。 |
ResourcePool | 具有多個。從ESXi角度看,可以看到多個資源池。 | 具有多個。支援新增多個資源池。可以看到多個。 |
VirtualApp | 不具有。從ESXi角度看,看不到這種物件型別。 | 具有多個。支援新增多個vAPP。可以看到多個。 |
VirtualMachine | 具有多個。從ESXi角度看,主機上面可以有多個虛擬機器。 | 具有多個。支援建立多個虛擬機器。可以看到多個。 |
注:上面的角度是從MOB出發,在ESXi或vCenter清單下所支援看到的不同物件型別,不是指功能。比如,在ESXi主機加入了vCenter建立的分散式交換機的情況下支援檢視DistributedVirtualSwitch物件。
登入vSphere Client,我們可以點選vCenter中不同的物件,在瀏覽器位址列中,即可看到不同的物件型別(Managed Object Type)以及MOID。比如Folder:group-d1中,Folder表示物件型別,group-d1表示MOID,這是全域性唯一的ID,我們可以使用 https://vcenter.mulab.local/mob/?moid= 後面加MOID直接在MOB當中訪問指定物件。
在瞭解的MOB當中的元件以及物件型別後,下面我們到MOB中詳細去看一下。
ServiceInstance 託管物件是清單例項中的根物件,由vSphere建立,所有清單物件基於它進行建立。在ServiceInstance 託管物件下包含capability、content以及serverClock屬性,capability表示API定義的功能範圍,content中提供各種Manager服務,基於這些管理器可以遍歷整個vSphere清單實體,serverClock包含最近從伺服器獲取的時間,時間不一定是實時的,若要獲取當前時間,ServiceInstance 託管物件下提供了Methods的CurrentTime。當前物件下,還包含CurrentTime(獲取當前時間)、QueryVMotionCompatibility(查詢虛擬機器與一組主機的VMotion相容性,已棄用)、RetrieveProductComponents(檢索捆版產品的元件)、RetrieveServiceContent(檢索服務content例項的屬性,包括各種Manager)、ValidateMigration(檢查虛擬機器遷移的有效性,已棄用)等Methods。這些內容可以在Managed Object - ServiceInstance中找到。
Content屬性是MOB中最核心的部分,點選以後我們可以看到以下內容,關於每個Manager的介紹以及使用方法可以在Data Object - ServiceContent中找到,其中rootFolder就是清單物件中的根Folder物件。
NAME | TYPE | VALUE |
---|---|---|
about | AboutInfo | about |
accountManager | ManagedObjectReference:HostLocalAccountManager | Unset |
alarmManager | ManagedObjectReference:AlarmManager | AlarmManager |
authorizationManager | ManagedObjectReference:AuthorizationManager | AuthorizationManager |
certificateManager | ManagedObjectReference:CertificateManager | certificateManager |
clusterProfileManager | ManagedObjectReference:ClusterProfileManager | ClusterProfileManager |
complianceManager | ManagedObjectReference:ProfileComplianceManager | MoComplianceManager |
cryptoManager | ManagedObjectReference:CryptoManagerKmip | CryptoManager |
customFieldsManager | ManagedObjectReference:CustomFieldsManager | CustomFieldsManager |
customizationSpecManager | ManagedObjectReference:CustomizationSpecManager | CustomizationSpecManager |
datastoreNamespaceManager | ManagedObjectReference:DatastoreNamespaceManager | DatastoreNamespaceManager |
diagnosticManager | ManagedObjectReference:DiagnosticManager | DiagMgr |
dvSwitchManager | ManagedObjectReference:DistributedVirtualSwitchManager | DVSManager |
eventManager | ManagedObjectReference:EventManager | EventManager |
extensionManager | ManagedObjectReference:ExtensionManager | ExtensionManager |
failoverClusterConfigurator | ManagedObjectReference:FailoverClusterConfigurator | FailoverClusterConfigurator |
failoverClusterManager | ManagedObjectReference:FailoverClusterManager | FailoverClusterManager |
fileManager | ManagedObjectReference:FileManager | FileManager |
guestCustomizationManager | ManagedObjectReference:VirtualMachineGuestCustomizationManager | GuestCustomizationManager |
guestOperationsManager | ManagedObjectReference:GuestOperationsManager | guestOperationsManager |
healthUpdateManager | ManagedObjectReference:HealthUpdateManager | HealthUpdateManager |
hostProfileManager | ManagedObjectReference:HostProfileManager | HostProfileManager |
hostSpecManager | ManagedObjectReference:HostSpecificationManager | HostSpecificationManager |
ioFilterManager | ManagedObjectReference:IoFilterManager | IoFilterManager |
ipPoolManager | ManagedObjectReference:IpPoolManager | IpPoolManager |
licenseManager | ManagedObjectReference:LicenseManager | LicenseManager |
localizationManager | ManagedObjectReference:LocalizationManager | LocalizationManager |
overheadMemoryManager | ManagedObjectReference:OverheadMemoryManager | OverheadMemoryManager |
ovfManager | ManagedObjectReference:OvfManager | OvfManager |
perfManager | ManagedObjectReference:PerformanceManager | PerfMgr |
propertyCollector | ManagedObjectReference:PropertyCollector | propertyCollector |
rootFolder | ManagedObjectReference:Folder | group-d1 (Datacenters) |
scheduledTaskManager | ManagedObjectReference:ScheduledTaskManager | ScheduledTaskManager |
searchIndex | ManagedObjectReference:SearchIndex | SearchIndex |
serviceManager | ManagedObjectReference:ServiceManager | ServiceMgr |
sessionManager | ManagedObjectReference:SessionManager | SessionManager |
setting | ManagedObjectReference:OptionManager | VpxSettings |
siteInfoManager | ManagedObjectReference:SiteInfoManager | SiteInfoManager |
snmpSystem | ManagedObjectReference:HostSnmpSystem | SnmpSystem |
storageQueryManager | ManagedObjectReference:StorageQueryManager | StorageQueryManager |
storageResourceManager | ManagedObjectReference:StorageResourceManager | StorageResourceManager |
taskManager | ManagedObjectReference:TaskManager | TaskManager |
tenantManager | ManagedObjectReference:TenantTenantManager | TenantManager-23319993 |
userDirectory | ManagedObjectReference:UserDirectory | UserDirectory |
vStorageObjectManager | ManagedObjectReference:VcenterVStorageObjectManager | VStorageObjectManager |
viewManager | ManagedObjectReference:ViewManager | ViewManager |
virtualDiskManager | ManagedObjectReference:VirtualDiskManager | virtualDiskManager |
virtualizationManager | ManagedObjectReference:VirtualizationManager | Unset |
vmCompatibilityChecker | ManagedObjectReference:VirtualMachineCompatibilityChecker | CompatChecker |
vmProvisioningChecker | ManagedObjectReference:VirtualMachineProvisioningChecker | ProvChecker |
開啟Folder物件(MOID為group-d1)後,可以看到包含的Properties和Methods,關於屬性的介紹以及Methods的使用方法可以檢視Managed Object - Folder。
比如說在Folder屬性中,提供了AddStandaloneHost_Task的Methods,我們開啟這個操作,可以看到如下圖所示。在Parameters引數下面,有三列,第一列為引數的名字,第二列為引數的型別,第三列為引數的VAlUE值。其中在引數的第一列NAME下,如果名字後是required代表該引數是必填項,如果名字後是optional代表該引數是可選項。最後,當所有值都填入以後,點選Invoke Method應用操作。
關於這個Methods中的引數的介紹和說明如下,我可以在Folder屬性中找到所對應的methods,這在不同的清單屬性中會有不同的介紹。
拿CreateDatacenter Methods舉一個例,開啟後看到具有如下引數。只需要設定Name引數,即可Invoke Method。
執行後,再重新整理Folder物件,可以看到剛剛的Methods已經執行成功並完成建立。
我們來看看CreateDatacenter的介紹,透過該Methods我們可以在Folder物件下建立資料中心物件,這對應上面所說的vSphere清單結構。該Methods中的Parameters引數中具有NAME引數,型別為xsd:string,後面描述了string的要求;Return Value表示執行Invoke Method後返回的值,我們上面返回的值就是我們建立的資料中心名字的全域性唯一MOID,不同的Methods會有返回不同的值;Faults表示返回的錯誤,當前CreateDatacenter操作可能存在四種型別的Fault錯誤,比如說第一種型別DuplicateName表示CreateDatacenter操作中輸入的引數NAME值在當前清單物件中已經存在;Events表示執行操作法發生的事件,WSDL表示當前Methods的XML型別格式。
在Folder物件屬性中,再點選childEntity託管物件型別Datacenter後,可以看到資料中心屬性中的四個資料夾,分別對應四種型別。
瞭解清單物件中的屬性以及操作後,我知道該如何檢視以及如果透過MOB對某些物件進行某些Methods,但是vSphere清單物件如此龐大,而Methods非常之多,我們該如何知道怎麼使用呢?透過下面的快速查詢網頁,我們就可以瞭解不同的清單物件以及物件中不同Methods操作使用方法。這些快速查詢位於vdc-repo或vdc-download中。
透過 Managed Object Types 查詢(Quick Index)所有的託管物件型別。
透過 Data Object Types 查詢(Quick Index)所有的資料物件型別。
透過 Enumerated Types 查詢(Quick Index)所有的列舉型別。
透過 Fault Types 查詢(Quick Index)Methods返回的所有的錯誤型別。
透過 All Types 查詢(Quick Index)上面的所有型別。
透過 All Methods 查詢(Quick Index)上面的所有清單物件中的Methods。
透過 All Properties 查詢(Quick Index)上面的所有清單物件中的Properties屬性。
透過 All Enumerations 查詢(Quick Index)上面的所有清單物件中的列舉(列舉是一種資料結構,用於儲存預定義值(通常是字串))。
參考:
- Using the MOB to Explore the Object Model
- Using the MOB to Invoke Methods
- VMware vSphere API Reference Documentation