免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2803 | 回复: 0
打印 上一主题 下一主题

利用 CIM 管理 IBM i 并与之交互 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-19 14:35 |只看该作者 |倒序浏览
引言
Universal Management Enablement(UME) 是 IBM i 上的一个授权程序(License Program),该程序遵循 DMTF(Distributed Management Task Force)的 CIM(Common Information Model)规范来完成系统管理功能。UME 自 IBM i 5.4 版本引入,主要架构移植自开源项目 OpenPegasus,目前经过 3 个版本的开发,已经实现了 IBM i 平台上硬件,软件和补丁,存储,网络,用户,系统值等基本信息的管理,并且能够对性能数据,消息队列以及部分异常事件进行监控。UME 对管理对象的建模方式遵循了行业标准,这使得基于 UME 开发的管理应用具有良好的可扩展性。上层应用通过集成开源 Java 开发包 SBLIM(Standards-Based Linux Instrumentation for Manageability)来访问 UME,这将有助于提升上层应用的可移植性。

表 1.IBM i CIM 产品的版本
产品标识
版本号
支持平台
发布日期
备注
5722UMEV1R2M0IBM i 5.4/6.12008.4
5770UMEV1R3M0IBM i 6.1/7.12010.4
5770UMEV1R3M1IBM i 6.1/7.12011.8通过补丁发布,补丁号 SI41540 和 SI41685

在 IBM i 5.4 及之前的版本,CIM 是 IBM i 操作系统的一部分并跟随 IBM i 发布,开发环境是 IBM i 集成语言环境(ILE,Integrated language Environment)。在将 CIM 功能放入 UME 授权程序后,CIM 的开发是在类 AIX 环境 PASE 下 (Portable Application Solutions Environment),这使得 CIM 的开发工作拥有更广泛的技术基础。
本文以下的部分将对 CIM 在 IBM i 平台功能做简要介绍。

查看资源列表
运用 CIM 进行系统管理的一个基本功能是资源查看。通过 CIM 模型,可以将系统资源进行分类,并保证建模的通用和标准化。
硬件资源
表 2 中列举了 CIM 如何对 IBM i 典型的硬件资源进行建模和管理。

表 2. 硬件资源建模
硬件类型
CIM 模型
重点关注属性
处理器IBMi_Processor类型号,零件号,序列号
内存IBM_PhysicalMemory类型号,零件号,序列号
主板IBMi_Chassis位置
磁带IBMOS400_TapeDrive容量
总线控制器IBMi_BusController序列号
存储控制器IBMi_StorageController序列号
内存池IBM_StoragePool剩余空间,总容量
打印机IBMi_Printer表单类型,分页数

使用 CIM 自带的客户端查看系统资源是最方便的手段。

图 1. 通过 cimcli 客户端命令发现系统 CPU 资源

cimcli 是 UME 发布的一个客户端命令,目前 UME 不支持图形化界面。上层管理应用也可以通过 SBLIM 来调用 CIM 接口。
软件资源
表 3 中列举了 CIM 如何对 IBM i 的软件及补丁进行建模和管理。

表 3. 软件资源建模
软件类型
CIM模型
重点关注属性
软件IBMi_SoftwareProduct产品名,选项,版本,过期时间,授权码
补丁IBMi_TemporaryFix补丁号,状态
补丁包IBMi_TempFixGroup名称,状态,级别

网络资源
表 4 中列举了 CIM 如何对 IBM i 网络相关的概念进行建模和管理。

表 4. 网络资源建模
网络基本概念
CIM模型
重点关注属性
链路描述IBM_EthernetPort状态,链路速度
局域网端点IBM_LANEndpointMAC 地址
TCP 端点IBM_TCPProtocolEndpointTCP 端口号
IP 地址IBM_IPProtocolEndpointIP 地址

存储资源
表 5 中列举了 CIM 如何对 IBM i 存储领域建模和管理。其中包含了外部磁盘,虚拟磁盘以及 RAID 等方面,并且涉及到一系列的 Profile。

表 5. 存储资源建模
存储设备
CIM模型
重点关注属性
磁盘IBMi_DiskDrive类型,序列号
辅助存储池IBM_CompositeExtent编号,剩余容量
存储集合IBM_PrimordialStoragePoolRAID 支持,集合编号


修改系统配置
除了上述的查看功能外,CIM 还支持对被管对象进行修改以及创建和删除。目前支持修改操作的对象包括用户账号,用户组,联系人以及系统值。其中可以对账号,用户组,联系人进行创建删除操作。
用户账号,组和联系人
修改账号属性
图 2 显示了使用 cimcli 命令修改用户 ZHUJTTEST 的主目录为 /HOME/ss。

图 2. 修改账号属性

创建和删除用户账号
CIM 通过 CreateInstance 和 DeleteInstance 接口来支持创建和删除用户账号操作。图 3 演示了如果通过 cimcli 命令来创建一个名为 ZHUJTTES 的账号并将其删除。

图 3. 创建和删除账号

系统值
系统值是 IBM i 系统上的全局环境变量,修改系统值会影响 IBM i 上所有作业。在 IBM i 命令行提供了 WRKSYSVAL 命令来查看和修改系统值,现在 CIM 也支持这个功能。CIM 按照系统值的类别进行建模,例如和日期和时间相关的系统值,和密码相关的系统值以及和性能相关的系统值等等。
这里以登录相关的系统值为例展示 CIM 可以通过修改属性来改变系统值,UME 中使用类 IBMi_SignonSettingData 建模登录相关的系统值,该类继承自标准类 CIM_SettingData。运行命令请参阅上节 图 2。

表 6. 建模登录系统值
属性
系统值
描述
string MaxInvalidSignonAttemptsQMAXSIGN最大登录尝试次数
string ActionToMaxInvalidSignonAttemptsQMAXSGNACN登录失败后行为
string SignonInformationQDSPSGNINF登录后显示信息
string SpecificDeviceAccessForPrivilegedUserQLMTSECOFR特权用户设备访问的限制
string DeviceSessionLimitQLMTDEVSSN设备会话限制
string RemoteSignonControlQRMTSIGN远程登录控制


发现关联对象
通过 CIM 的类建模并实现了 IBM i 上对象之后,可能单一对象不能够完整表示客户需要的信息,可以使用关联类将有内在联系的一组对象进行捆绑。

表 7. 典型关联
关联类名
关联对象
应用举例
IBM_Realizes物理硬件和逻辑硬件用来发现物理机器上各种卡的逻辑功能,如网卡,内存卡等
IBM_ControlledBy设备间的控制关系用来发现一个端口控制器能管理的所有端口
IBMi_FixesInSoftwareProduct软件产品和补丁用来发现软件上已安装了的补丁
IBMi_MemberOfGroup用户和组的关系用来发现一个组包含的所有用户

例子:通过关联类 IBMi_MemberOfGroup 来查找 Test 组包含的用户。

图 4. 关联类的使用


监控各类事件
上述获取信息的方式都是采用了客户端主动查询的方式,请求和响应是同步的。还有一种情况,当客户请求的事件发生是不确定的,应采用订阅方式向 CIM 服务器登记感兴趣的事件,在事件发生后由 CIM 异步通知客户。订阅请求主要包含两部分内容,关注的事件以及接受者的信息。CIM_IndicationFilter 类建模了关注事件信息,使用 SQL 语句来描述监控的对象以及触发条件;CIM_ListenerDestinationCIMXML 类通常提供接受者的 IP 及端口。最后通过创建关联类 CIM_IndicationSubscription 将上述两个类的实例进行绑定。
图 5 演示了使用 UME 发布的 cimsub 命令来订阅事件。其中 -cf 命令选项指定创建 CIM_IndicationFilter 的实例 filter1,并在 -Q 后添加 SQL 语句;-ch 命令选项创建 CIM_ListenerDestinationCIMXML 的实例 handler1,并且用 -D 提供事件接收者的地址;-cs 命令选项使用 filter1 和 handler1 实例作为参数创建一个完整的订阅。用户可以通过对 CIM_IndicationSubscription 进行 getInstance 操作来查看订阅确保已成功。注意:只有当 CIM_IndicationSubscription 的实例创建成功后该订阅才有效。

图 5. 事件的订阅

消息队列
消息队列是 IBM i 上 *MSGQ 类型的对象,用户可以通过监听一个消息队列来及时获得通知。用户通过订阅语句指定特定类型的消息。
清单 1. 订阅消息对列 <QueryString>SELECT * FROM IBM_MessageQueueIndication WHERE AlertingManagedElement = 'QSYS/QSYSOPR' AND MessageID LIKE 'CPF.*' </QueryString>
AlertingManagedElement 是必要的参数,用来指定消息队列的名称。MessageID 和 MessageSeverity 用来过滤不满足条件消息。
当 CPF1231 进入消息队列 QSYSOPR 时,CIM 会向接受者发送一个事件的实例。EventTime 是事件的发生时刻。

清单 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 的性能数据来自于 Performance Collection Service。该数据是按周期发布的,最短间隔可以到 15 秒。

表 8. 性能数据的分类
性能数据
定义
CPU 利用率平均值MDOS2A
作业交互速率平均值MDOS41
磁盘使用率平均值MDOS48
批处理作业逻辑数据库输入输出速率MDOS45
用户存储池错误平均值MDOS46

订阅语句要指定一个性能指标,由 MetricDefinitionId 保存。

清单 3. 订阅性能数据 <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 说明统计周期是 30 秒。

清单 4. 返回性能数据实例 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>  
;
… .  
};

异常
这类事件主要用来监控各类错误情况或者告警。目前支持下列情况:

表 9. 异常事件分类
异常类型
CIM模型
保单到期IBMPSG_Warranty
租约到期IBMPSG_Lease
磁盘使用率超警戒值IBMPSG_StorageEvent
网络断开 / 恢复 / 错误IBMPSG_NetworkAdapterOnlineEvent/ IBMPSG_NetworkAdapterOfflineEvent/ IBMPSG_NetworkAdapterFailedEvent
存储控制器缓存的电池告警 / 失效IBMi_CacheBatteryEvent


结束语
随着 CIM 技术研究和开发的不断深入,更多系统管理功能也将转移至 CIM 框架之内,包括更多的性能数据的采集,系统硬件软件问题的分析报告以及作业管理等等。


关于作者
荆雷,IBM CSTL 的 CIM provider for IBM i 项目的一名软件工程师。他所感兴趣和专长的领域包括 DMTF WBEM 架构,CIM schema 和 IBM i 上的管理软件开发。




http://www.ibm.com/developerworks/cn/ibmi/library/i-cn-cim/i-cn-cim.html


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP