引言
Universal Management Enablement(UME) 是 IBM i 上的一個授權(quán)程序(License Program),該程序遵循 DMTF(Distributed Management Task Force)的 CIM(Common Information Model)規(guī)范來完成系統(tǒng)管理功能。UME 自 IBM i 5.4 版本引入,主要架構(gòu)移植自開源項目 OpenPegasus,目前經(jīng)過 3 個版本的開發(fā),已經(jīng)實現(xiàn)了 IBM i 平臺上硬件,軟件和補丁,存儲,網(wǎng)絡(luò),用戶,系統(tǒng)值等基本信息的管理,并且能夠?qū)π阅軘?shù)據(jù),消息隊列以及部分異常事件進行監(jiān)控。UME 對管理對象的建模方式遵循了行業(yè)標準,這使得基于 UME 開發(fā)的管理應(yīng)用具有良好的可擴展性。上層應(yīng)用通過集成開源 Java 開發(fā)包 SBLIM(Standards-Based Linux Instrumentation for Manageability)來訪問 UME,這將有助于提升上層應(yīng)用的可移植性。
表 1.IBM i CIM 產(chǎn)品的版本
產(chǎn)品標識 | 版本號 | 支持平臺 | 發(fā)布日期 | 備注 |
5722UME | V1R2M0 | IBM i 5.4/6.1 | 2008.4 | |
5770UME | V1R3M0 | IBM i 6.1/7.1 | 2010.4 | |
5770UME | V1R3M1 | IBM i 6.1/7.1 | 2011.8 | 通過補丁發(fā)布,補丁號 SI41540 和 SI41685 |
在 IBM i 5.4 及之前的版本,CIM 是 IBM i 操作系統(tǒng)的一部分并跟隨 IBM i 發(fā)布,開發(fā)環(huán)境是 IBM i 集成語言環(huán)境(ILE,Integrated language Environment)。在將 CIM 功能放入 UME 授權(quán)程序后,CIM 的開發(fā)是在類 AIX 環(huán)境 PASE 下 (Portable Application Solutions Environment),這使得 CIM 的開發(fā)工作擁有更廣泛的技術(shù)基礎(chǔ)。
本文以下的部分將對 CIM 在 IBM i 平臺功能做簡要介紹。
查看資源列表
運用 CIM 進行系統(tǒng)管理的一個基本功能是資源查看。通過 CIM 模型,可以將系統(tǒng)資源進行分類,并保證建模的通用和標準化。
硬件資源
表 2 中列舉了 CIM 如何對 IBM i 典型的硬件資源進行建模和管理。
表 2. 硬件資源建模
硬件類型 | CIM 模型 | 重點關(guān)注屬性 |
處理器 | IBMi_Processor | 類型號,零件號,序列號 |
內(nèi)存 | IBM_PhysicalMemory | 類型號,零件號,序列號 |
主板 | IBMi_Chassis | 位置 |
磁帶 | IBMOS400_TapeDrive | 容量 |
總線控制器 | IBMi_BusController | 序列號 |
存儲控制器 | IBMi_StorageController | 序列號 |
內(nèi)存池 | IBM_StoragePool | 剩余空間,總?cè)萘?/td> |
打印機 | IBMi_Printer | 表單類型,分頁數(shù) |
使用 CIM 自帶的客戶端查看系統(tǒng)資源是最方便的手段。
圖 1. 通過 cimcli 客戶端命令發(fā)現(xiàn)系統(tǒng) CPU 資源
cimcli 是 UME 發(fā)布的一個客戶端命令,目前 UME 不支持圖形化界面。上層管理應(yīng)用也可以通過 SBLIM 來調(diào)用 CIM 接口。
軟件資源
表 3 中列舉了 CIM 如何對 IBM i 的軟件及補丁進行建模和管理。
表 3. 軟件資源建模
軟件類型 | CIM模型 | 重點關(guān)注屬性 |
軟件 | IBMi_SoftwareProduct | 產(chǎn)品名,選項,版本,過期時間,授權(quán)碼 |
補丁 | IBMi_TemporaryFix | 補丁號,狀態(tài) |
補丁包 | IBMi_TempFixGroup | 名稱,狀態(tài),級別 |
網(wǎng)絡(luò)資源
表 4 中列舉了 CIM 如何對 IBM i 網(wǎng)絡(luò)相關(guān)的概念進行建模和管理。
表 4. 網(wǎng)絡(luò)資源建模
網(wǎng)絡(luò)基本概念 | CIM模型 | 重點關(guān)注屬性 |
鏈路描述 | IBM_EthernetPort | 狀態(tài),鏈路速度 |
局域網(wǎng)端點 | IBM_LANEndpoint | MAC 地址 |
TCP 端點 | IBM_TCPProtocolEndpoint | TCP 端口號 |
IP 地址 | IBM_IPProtocolEndpoint | IP 地址 |
存儲資源
表 5 中列舉了 CIM 如何對 IBM i 存儲領(lǐng)域建模和管理。其中包含了外部磁盤,虛擬磁盤以及 RAID 等方面,并且涉及到一系列的 Profile。
表 5. 存儲資源建模
存儲設(shè)備 | CIM模型 | 重點關(guān)注屬性 |
磁盤 | IBMi_DiskDrive | 類型,序列號 |
輔助存儲池 | IBM_CompositeExtent | 編號,剩余容量 |
存儲集合 | IBM_PrimordialStoragePool | RAID 支持,集合編號 |
修改系統(tǒng)配置
除了上述的查看功能外,CIM 還支持對被管對象進行修改以及創(chuàng)建和刪除。目前支持修改操作的對象包括用戶賬號,用戶組,聯(lián)系人以及系統(tǒng)值。其中可以對賬號,用戶組,聯(lián)系人進行創(chuàng)建刪除操作。
用戶賬號,組和聯(lián)系人
修改賬號屬性
圖 2 顯示了使用 cimcli 命令修改用戶 ZHUJTTEST 的主目錄為 /HOME/ss。
圖 2. 修改賬號屬性
創(chuàng)建和刪除用戶賬號
CIM 通過 CreateInstance 和 DeleteInstance 接口來支持創(chuàng)建和刪除用戶賬號操作。圖 3 演示了如果通過 cimcli 命令來創(chuàng)建一個名為 ZHUJTTES 的賬號并將其刪除。
圖 3. 創(chuàng)建和刪除賬號
系統(tǒng)值
系統(tǒng)值是 IBM i 系統(tǒng)上的全局環(huán)境變量,修改系統(tǒng)值會影響 IBM i 上所有作業(yè)。在 IBM i 命令行提供了 WRKSYSVAL 命令來查看和修改系統(tǒng)值,現(xiàn)在 CIM 也支持這個功能。CIM 按照系統(tǒng)值的類別進行建模,例如和日期和時間相關(guān)的系統(tǒng)值,和密碼相關(guān)的系統(tǒng)值以及和性能相關(guān)的系統(tǒng)值等等。
這里以登錄相關(guān)的系統(tǒng)值為例展示 CIM 可以通過修改屬性來改變系統(tǒng)值,UME 中使用類 IBMi_SignonSettingData 建模登錄相關(guān)的系統(tǒng)值,該類繼承自標準類 CIM_SettingData。運行命令請參閱上節(jié) 圖 2。
表 6. 建模登錄系統(tǒng)值
屬性 | 系統(tǒng)值 | 描述 |
string MaxInvalidSignonAttempts | QMAXSIGN | 最大登錄嘗試次數(shù) |
string ActionToMaxInvalidSignonAttempts | QMAXSGNACN | 登錄失敗后行為 |
string SignonInformation | QDSPSGNINF | 登錄后顯示信息 |
string SpecificDeviceAccessForPrivilegedUser | QLMTSECOFR | 特權(quán)用戶設(shè)備訪問的限制 |
string DeviceSessionLimit | QLMTDEVSSN | 設(shè)備會話限制 |
string RemoteSignonControl | QRMTSIGN | 遠程登錄控制 |
發(fā)現(xiàn)關(guān)聯(lián)對象
通過 CIM 的類建模并實現(xiàn)了 IBM i 上對象之后,可能單一對象不能夠完整表示客戶需要的信息,可以使用關(guān)聯(lián)類將有內(nèi)在聯(lián)系的一組對象進行捆綁。
表 7. 典型關(guān)聯(lián)
關(guān)聯(lián)類名 | 關(guān)聯(lián)對象 | 應(yīng)用舉例 |
IBM_Realizes | 物理硬件和邏輯硬件 | 用來發(fā)現(xiàn)物理機器上各種卡的邏輯功能,如網(wǎng)卡,內(nèi)存卡等 |
IBM_ControlledBy | 設(shè)備間的控制關(guān)系 | 用來發(fā)現(xiàn)一個端口控制器能管理的所有端口 |
IBMi_FixesInSoftwareProduct | 軟件產(chǎn)品和補丁 | 用來發(fā)現(xiàn)軟件上已安裝了的補丁 |
IBMi_MemberOfGroup | 用戶和組的關(guān)系 | 用來發(fā)現(xiàn)一個組包含的所有用戶 |
例子:通過關(guān)聯(lián)類 IBMi_MemberOfGroup 來查找 Test 組包含的用戶。
圖 4. 關(guān)聯(lián)類的使用
監(jiān)控各類事件
上述獲取信息的方式都是采用了客戶端主動查詢的方式,請求和響應(yīng)是同步的。還有一種情況,當客戶請求的事件發(fā)生是不確定的,應(yīng)采用訂閱方式向 CIM 服務(wù)器登記感興趣的事件,在事件發(fā)生后由 CIM 異步通知客戶。訂閱請求主要包含兩部分內(nèi)容,關(guān)注的事件以及接受者的信息。CIM_IndicationFilter 類建模了關(guān)注事件信息,使用 SQL 語句來描述監(jiān)控的對象以及觸發(fā)條件;CIM_ListenerDestinationCIMXML 類通常提供接受者的 IP 及端口。最后通過創(chuàng)建關(guān)聯(lián)類 CIM_IndicationSubscription 將上述兩個類的實例進行綁定。
圖 5 演示了使用 UME 發(fā)布的 cimsub 命令來訂閱事件。其中 -cf 命令選項指定創(chuàng)建 CIM_IndicationFilter 的實例 filter1,并在 -Q 后添加 SQL 語句;-ch 命令選項創(chuàng)建 CIM_ListenerDestinationCIMXML 的實例 handler1,并且用 -D 提供事件接收者的地址;-cs 命令選項使用 filter1 和 handler1 實例作為參數(shù)創(chuàng)建一個完整的訂閱。用戶可以通過對 CIM_IndicationSubscription 進行 getInstance 操作來查看訂閱確保已成功。注意:只有當 CIM_IndicationSubscription 的實例創(chuàng)建成功后該訂閱才有效。
圖 5. 事件的訂閱
消息隊列
消息隊列是 IBM i 上 *MSGQ 類型的對象,用戶可以通過監(jiān)聽一個消息隊列來及時獲得通知。用戶通過訂閱語句指定特定類型的消息。
清單 1. 訂閱消息對列 <QueryString>SELECT * FROM IBM_MessageQueueIndication WHERE AlertingManagedElement = 'QSYS/QSYSOPR' AND MessageID LIKE 'CPF.*' </QueryString>
AlertingManagedElement 是必要的參數(shù),用來指定消息隊列的名稱。MessageID 和 MessageSeverity 用來過濾不滿足條件消息。
當 CPF1231 進入消息隊列 QSYSOPR 時,CIM 會向接受者發(fā)送一個事件的實例。EventTime 是事件的發(fā)生時刻。
清單 2. 返回消息實例 Instance of IBM_MessageQueueIndication {
string IndicationIdentifier = CPF1231;
string CorrelatedIndications = ;
datetime IndicationTime = 20110907110514.000000+480;
string OtherSeverity = ; s
tring IndicationFilterName = ;
string SequenceContext = ;
sint64 SequenceNumber = ;
string Description = IBM i message queue indication CPF1231;
string AlertingManagedElement = QSYS/QSYSOPR;
uint16 AlertingElementFormat = 2;
string OtherAlertingElementFormat = Library/Name;
uint16 AlertType = 2; string OtherAlertType = ;
uint16 PerceivedSeverity = 6;
uint16 ProbableCause = 1;
string ProbableCauseDescription =
Cause . . . . . : A prestart job for program in library cannot be started.
The job description in the entry specifies an output queue in library that was not
found, or the output queue or library could not be allocated. The subsystem job log
may contain more information.
Recovery . . . : Display the job log (DSPJOBLOG command) for the subsystem
for more information. If the output queue does not exist, create it. If the output
queue cannot be allocated, use the Work with Object Locks (WRKOBJLCK) command to
determine when the output queue is not locked. Then wait until message CPC0905 is
shown on the system operator (QSYSOPR)) message queue, indicating that the entry
is no longer active. To start new jobs, enter the Start Prestart Jobs (STRPJ)
command.;
uint16 Trending = 0;
…
string EventID = CPF1231;
datetime EventTime = 20110907110452.000000+480;
string SystemCreationClassName = IBMOS400_ComputerSystem;
string SystemName = C60D070C.CN.IBM.COM;
string ProviderName = QUME_MessageQueueIndicationProvider;
string Message = Subsystem cannot start prestart job .;
string MessageArguments = ;
string MessageID = CPF1231;
string OwningEntity = IBM i;
string MessageType = 04;
string MessageKey = 0x000097E0;
uint16 MessageSeverity = 60;
string SenderJob = QZRCSRVS QUSER 668715;
string AlertOption = *NO;
string ProblemIdentification = ;
string DefaultReply = ;
string ReplyStatus = N;
boolean IsCriticalBreakMessage = FALSE;
};
|
性能
IBM i 的性能數(shù)據(jù)來自于 Performance Collection Service。該數(shù)據(jù)是按周期發(fā)布的,最短間隔可以到 15 秒。
表 8. 性能數(shù)據(jù)的分類
性能數(shù)據(jù) | 定義 |
CPU 利用率平均值 | MDOS2A |
作業(yè)交互速率平均值 | MDOS41 |
磁盤使用率平均值 | MDOS48 |
批處理作業(yè)邏輯數(shù)據(jù)庫輸入輸出速率 | MDOS45 |
用戶存儲池錯誤平均值 | MDOS46 |
訂閱語句要指定一個性能指標,由 MetricDefinitionId 保存。
清單 3. 訂閱性能數(shù)據(jù) <QueryString>
SELECT l.* FROM CIM_InstModification l WHERE l.SourceInstance
ISA IBMOS400_ColSrvMetricValue
and l.SourceInstance.IBMOS400_ColSrvMetricValue::MetricDefinitionId
='MDOS2A' </QueryString>
|
CIM 從 Performance Collection Service 接收到最新的 CPU 利用率平均值,在 SourceInstance 的 MetricValue 中,Duration 說明統(tǒng)計周期是 30 秒。
清單 4. 返回性能數(shù)據(jù)實例 Instance of IBM_ColSrvMetricValueModification {
string IndicationIdentifier = 4E65EC35-000B-354F-0006-2A780D0E664B;
string CorrelatedIndications = ;
datetime IndicationTime = 20110906174733.739620+480;
uint16 PerceivedSeverity = ;
string OtherSeverity = ;
string IndicationFilterName = ;
string SequenceContext = ;
sint64 SequenceNumber = ;
object SourceInstance
= <INSTANCE CLASSNAME="IBMOS400_ColSrvMetricValue" >
< ROPERTY NAME="Caption" PROPAGATED="true" TYPE="string">
</PROPERTY>
< ROPERTY NAME="Description" PROPAGATED="true" TYPE="string">
</PROPERTY>
< ROPERTY NAME="ElementName" PROPAGATED="true" TYPE="string">
</PROPERTY>
< ROPERTY NAME="InstanceID" PROPAGATED="true" TYPE="string">
<VALUE>0000005CMDOS2A</VALUE> </PROPERTY>
< ROPERTY NAME="MetricDefinitionId" PROPAGATED="true" TYPE="string">
<VALUE>MDOS2A</VALUE>
</PROPERTY>
< ROPERTY NAME="MeasuredElementName" PROPAGATED="true" TYPE="string">
<VALUE>LWI07</VALUE>
</PROPERTY>
< ROPERTY NAME="TimeStamp" PROPAGATED="true" TYPE="datetime">
<VALUE>20110906133930.000000+480</VALUE>
</PROPERTY>
< ROPERTY NAME="Duration" PROPAGATED="true" TYPE="datetime">
<VALUE>00000000000030.000000:000</VALUE>
</PROPERTY>
< ROPERTY NAME="MetricValue" PROPAGATED="true" TYPE="string">
<VALUE>18.98</VALUE>
</PROPERTY>
< ROPERTY NAME="BreakdownDimension" PROPAGATED="true" TYPE="string">
</PROPERTY>
<;PROPERTY NAME="BreakdownValue" PROPAGATED="true" TYPE="string">
</PROPERTY>
<;PROPERTY NAME="Volatile" PROPAGATED="true" TYPE="boolean">
<VALUE>TRUE</VALUE>
</PROPERTY>
</INSTANCE>
;
… .
};
|
異常
這類事件主要用來監(jiān)控各類錯誤情況或者告警。目前支持下列情況:
表 9. 異常事件分類
異常類型 | CIM模型 |
保單到期 | IBMPSG_Warranty |
租約到期 | IBMPSG_Lease |
磁盤使用率超警戒值 | IBMPSG_StorageEvent |
網(wǎng)絡(luò)斷開 / 恢復(fù) / 錯誤 | IBMPSG_NetworkAdapterOnlineEvent/ IBMPSG_NetworkAdapterOfflineEvent/ IBMPSG_NetworkAdapterFailedEvent |
存儲控制器緩存的電池告警 / 失效 | IBMi_CacheBatteryEvent |
結(jié)束語
隨著 CIM 技術(shù)研究和開發(fā)的不斷深入,更多系統(tǒng)管理功能也將轉(zhuǎn)移至 CIM 框架之內(nèi),包括更多的性能數(shù)據(jù)的采集,系統(tǒng)硬件軟件問題的分析報告以及作業(yè)管理等等。