• Share
  • ?
  • Profiles ▼
  • Communities ▼
  • Apps ▼

Blogs

  • My Blogs
  • Public Blogs
  • My Updates
  • Administration
  • Log in to participate

▼ Tags

 

▼ Archive

  • September 2016
  • June 2016
  • May 2016
  • April 2016
  • March 2016
  • February 2016
  • January 2016
  • December 2015
  • November 2015
  • October 2015
  • September 2015
  • August 2015
  • July 2015
  • June 2015
  • May 2015
  • April 2015
  • March 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • August 2014
  • July 2014
  • June 2014
  • February 2014
  • January 2014
  • December 2013
  • November 2013
  • October 2013
  • September 2013
  • August 2013
  • July 2013
  • June 2013
  • May 2013
  • April 2013

▼ Blog Authors

IBM System z 中国实验室

View All Entries
Clicking the button causes a full page refresh. The user could go to the "Entry list" region to view the new content.) Entry list

利用REXX脚本扩展z/OS状态检测工具

OliveHuang 2700051NSU | ‎ | 7,498 Views

适宜读者:(三年以上z/OS 用户)

背景知识:(z/OS基础知识)

原文:http://www.ibmsystemsmag.com/mainframe/administrator/systemsmanagement/health_check_rexx/

作者:Prashant Muragod

编写你自己的状态检测工具来检测Z/OS系统中的异常并防止其出现问题,这是一件很有价值的事情。本文将描述如何利用系统REXX代码并结合IBM状态检测工具来为Z/OS扩展状态检测工具。用REXX的代码作为框架,可以让你在短时间内编写大量不同类型的状态检测程序。这些状态检测程序能够被当做是IBM提供的检查程序从而可以动态的启用或者禁用。文章中还将提到一些用于定制和测试那些尚未结合IBM状态检测工具的REXX代码的技巧以及一些常用的状态检测指令。总体来看,编写一个状态检测程序的步骤包括:

  • 为需要进行状态检测的函数编写REXX代码
  • 创建/更新状态检测程序的parmlib 成员:parmlib member-HZSPRMXX.
  • 创建并且收集定制信息,这个信息表用于显示检查成功或失败时需要显示的定制的错误信息
  • 使用命令行指令来动态使能状态检测工具

 

REXX的代码

接下来展示的REXX代码包含以下功能:连接到适用于Z/OS的IBM状态检测工具;对函数进行测试;从信息表里检索获取信息;最后,断开和状态检测工具的连接。将下面的代码放进系统的REXX数据集(SYS.SAXREXEC)或者放到由AXRnn parmlib 成员中的REXXLIB串联所指定的任何一个库中。

图像

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

图像图像

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

图像

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

图像

 

 

 

 

 

 

 

 

 

 

 

 

To create/update the Health Checker parmlib member—HZSPRMXX:

 

ADDREP CHECK(USERCHK,USR_ASM_LOCAL_PAGE)

       EXEC(USERCHEK)

       REXXHLQ(UUUUUUU)

       REXXTSO(YES)

       REXXIN(NO)

       REXXTIMELIMIT(60)

       MSGTBL(HZSMSGXX)

       VERBOSE(YES)

       INACTIVE

       PARM('MINLOCALS(3)')

       SEVERITY(LOW)

       INTERVAL(ONETIME)

       DATE(20130710)

       REASON('TEST-CHECK')

如果启用了调试模式, “UUUUUUU.USERCHEK.REXXOUT” 数据集将会包含REXX的输出。不活跃的属性表明在一开始检查将是不活跃的。

设置信息表

要创建、收集和连接编辑信息表,首先要把SYS1.SAMPLIB(HZSSMSGT)复制到你本地的数据集并对它进行编辑。这张表包含了REXX检查中所需的所有要求用户定制的信息。

在之前的例子中,我们有两个场景。对于这两个检测不成功的场景,我们可以如下来编写代码:

<msg class=exception>                  

<msgnum xreftext=001>HZUSR001E</msgnum>

对于那些成功的场景,可以按照下面进行编写:

<msg class=Information>                

<msgnum xreftext=002>HZUSR021I</msgnum>

 

其他所有的变量都可以定制以满足你的每一项需求。想了解更多关于如何定制信息表,请参考IBM红皮书“Exploiting the IBM Health Checker for z/OS Infrastructure.”

使用示例代码JCL-SYS1.SAMPLIB(HZSMSGNJ)来编译信息表成员。这些作业控制语言(JCL)中唯一需要修改的部分就是HZSMDSN,它需要指向定制的信息表。使用JCL来链接编辑目标成员的代码如下所示:

//ASSEMBLJ JOB 0,'USER',                                        

//             CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID

//       SET MSGTLOAD=UUUUUUU.SAMPLE.LOAD(HZSMSGXX)             

//ASSEMBLE EXEC ASMACL,PARM.L='RENT'                           

//C.SYSIN DD DISP=OLD,DSN=UUUUUUU.TEMP.ASM                     

//C.SYSPRINT DD DUMMY                                          

//L.SYSPRINT DD DUMMY                                          

//L.SYSLMOD DD DISP=SHR,DSN=&MSGTLOAD                          

//* 

增添/结合IBM状态检测工具

下一步,确保授权程序工具(APF)批准认证了汇编后的装载模块。操作过程如下所示:

SETPROG APF,ADD,DSN=UUUUUUU.SAMPLE.LOAD,VOLUME=XXXXXX

 

最后,更新HZSPROC启动任务来包含含有了信息表的数据集,并重启已经启动的任务。输入命令行指令F HZSPROC,ADD,PARMLIB=XX来添加新的状态检测。最后一步的命令如下:

//HZSPROC  PROC HZSPRM='00'                          

//HZSSTEP  EXEC   PGM=HZSINIT,REGION=0K,TIME=NOLIMIT,

//      PARM='SET PARMLIB=&HZSPRM'                   

//STEPLIB  DD  DSN=UUUUUUU.SAMPLE.LOAD,DISP=SHR       

//HZSPDATA DD   DSN=SYS1.&SYSNAME..HZSPDATA,DISP=SHR 

//        PEND                                       

//        EXEC HZSPROC

在状态检测程序之后输入“A”(由SDSF->CK界面进入)。该检查的通过或者失败,由HZSPRMXX中的PARM 值来确定。

 

提示与常用命令

此外,你可以通过移除任何对HZSLSTRT、HZSLSTOP、HZSLFMSG的函数引用并用命令行CPF USERCHEK来测试REXX代码。其中CPF是一个系统综合体宽度的指令前缀,可以在parmlib的AXRnn成员中找到它。

如果要使用除了系统REXX数据集以外的其他数据集或是创建新数据集、复制REXX状态检测的代码并把它添加到parmlib的AXRnn成员中(例如该命令,REXXLIB ADD DSN(SYS1.USER01.SAXREXEC))。请确保重启AXR的地址空间来获得新的REXXLIB的数据集。

下面是一些常用的状态检测命令行指令:

  1. 调试一段REXX检查代码:

   F HZSPROC,UPDATE,CHECK=(USERCHK,USR_ASM_LOCAL_PAGE),DEBUG=ON

  1. 当调试模式被打开时,显示REXX的输出写入了哪个数据集:

   F HZSPROC,DISPLAY,CHECK(USERCHK,USR_ASM_LOCAL_PAGE),DETAIL

  1. SDSF的CK界面下可以使用的几个命令的含义:

   A-ACTIVATE

   H-DEACTIVATE

   E-REFRESH

   D-DISPLAY

   P-DELETE

   U-UPDATE

   R-RUN

总的来说,由于REXX编程接口的易用性,使用系统REXX具有很高的灵活性,这使你能够发布系统指令并读取它们的输出,并将其用于编写你的状态检测工具。除此以外,由于这些函数是由IBM状态检测工具所提供的,也能让它们更快捷方便的被调用。

 

何川是IBM CSTL的一名软件工程师,他是z/OS XML团队的成员,从事主机XML的开发工作。

邮箱:hchuanbj#cn.ibm.com(替换#为@)

内容声明:文中专业名词因翻译原因,表述中难免存在差异。如有疑惑,请以英文为准。如果您对我们的话题感兴趣或者有疑问或批评指正之处,请通过电子邮箱联系我们。

Modified on by IBM System z 中国实验室 27000662T2
  • Add a Comment Add a Comment
  • Edit
  • More Actions v
  • Quarantine this Entry
Notify Other People
notification

Send Email Notification

+

Quarantine this entry

deleteEntry
duplicateEntry

Mark as Duplicate

  • Previous Entry
  • Main
  • Next Entry
Feed for Blog Entries | Feed for Blog Comments | Feed for Comments for this Entry