LoginSignup
0
0

More than 1 year has passed since last update.

CDPzを利用したz/OS-ELK連携 - (8)カスタマイズ-RMF Monitor III

Last updated at Posted at 2020-06-28

はじめに

Logforwarderを利用して、RMF Monitor IIIの情報を取得することができます。ここでは、RM Monitor IIIの情報の取り込みを行ってみます。
ちなみに、CDPz V2.1では、RMF Monitor IIIのうち、以下の4つのレポートの取得が可能です。
CPC - CPC Capacity Report
DELAY - Delay Report
PROCU - Processor Usage Report
SYSINFO - System Information Report

※SYSLOGと同様、稼働状況をリアルタイムに取得することになるので、後からバッチ的に情報をElasticsearchに取り込むことはできません。

関連記事

CDPzを利用したz/OS-ELK連携 - (1)セットアップ編
CDPzを利用したz/OS-ELK連携 - (2)SYSLOG取得編
CDPzを利用したz/OS-ELK連携 - (3)SMF-バッチ編
CDPzを利用したz/OS-ELK連携 - (4)SMF-リアルタイム編
CDPzを利用したz/OS-ELK連携 - (5)カスタマイズ-共通
CDPzを利用したz/OS-ELK連携 - (6)カスタマイズ-SYSLOG
CDPzを利用したz/OS-ELK連携 - (7)カスタマイズ-CICS
CDPzを利用したz/OS-ELK連携 - (8)カスタマイズ-RMF Monitor III
CDPzを利用したz/OS-ELK連携 - (9)カスタマイズ-fluentdの利用

利用コンポーネント

今回扱うのは、以下の赤枠の範囲のイメージです。
image.png

Logforwarderは、RMFからMonitor IIIの情報をDDS(Distributed Data Server)経由で取得します。そのため、RMFの設定として、Monitor III,および、DDSを有効化しておく必要があります。また、CDPzからDDSに対するアクセスが行えるようにしておく必要があります。

RMF関連設定

RMF自体は稼働している前提とします。

RMF Monitor III

参考:
Defining parameters for Monitor III
Description of Monitor III data gatherer options

設定

関連するプロシージャー、PARMLIBは以下の辺り。
PROCLIB(RMFGAT)
PARMLIB(ERBRMF04)

主なパラメーター

ERBRMF04
...
 CYCLE(1000)
 MINTIME(60)
...

CYCLE: サンプル取得単位(millisec)
MINTIME: 集約単位(sec)
上の例だと、1秒単位でサンプル取得して、レポート上は1分単位に集約して出力されます。
CDPzから情報取得する際も、この設定に依存するため、1分単位に集約された情報が取得されることになります。

操作

開始  /F RMF,START III
停止  /F RMF,STOP III
確認  
  /F RMF,D ACTIVE
  /F RMF,D ALL

開始時メッセージ例
F RMF,START III                                                          
IEE252I MEMBER ERBRMF04 FOUND IN SYS0.PARMLIB                            
ERB115I START RMFGAT MONITOR III SESSION III                             
$HASP100 RMFGAT   ON STCINRDR                                            
IEF695I START RMFGAT   WITH JOBNAME RMFGAT   IS ASSIGNED TO USER IBMUSER 
 , GROUP SYS1                                                            
$HASP373 RMFGAT   STARTED                                                
IEF403I RMFGAT - STARTED - TIME=14.17.41                                 
ERB105I III: DATA GATHERER ACTIVE                                        
ERB100I III: ACTIVE                                                      
ERB425I III: UNABLE TO GATHER RESOURCE HSM         

DDS(Distributed Data Server)

参考: Setting up the Distributed Data Server for z/OS

設定

関連するプロシージャー、PARMLIBは以下の辺り。
PROCLIB(GPMSERVE)
PARMLIB(GPMSRV00)

PassTicketの構成

CDPzからDDSにアクセスできるよう、PassTicketの構成をしておきます。
参考: Configuring PassTicket support for the Distributed Data Server

実行例
[CICS004@EPLEX1:/u/cics004] tsocmd "RDEFINE PTKTDATA GPMSERVE SSIGNON(KEYMASKED(0000000000000000))"
RDEFINE PTKTDATA GPMSERVE SSIGNON(KEYMASKED(0000000000000000))
ICH10006I RACLISTED PROFILES FOR PTKTDATA WILL NOT REFLECT THE ADDITION(S) UNTIL A SETROPTS REFRESH IS ISSUED.

[CICS004@EPLEX1:/u/cics004] tsocmd "SETROPTS RACLIST(PTKTDATA) REFRESH"
SETROPTS RACLIST(PTKTDATA) REFRESH

操作

開始  /F RMF,DDS
停止  /F RMF,NODDS

開始時メッセージ例
F RMF,DDS                                                                 
ERB140I RMF: DDS OPTION ACCEPTED                                          
IEA631I  OPERATOR CICS004  NOW INACTIVE, SYSTEM=ZOS1    , LU=09552FEC     
S GPMSERVE.RMFDDS01                                                       
ERB141I RMF: STARTING DISTRIBUTED DATA SERVER                             
$HASP100 GPMSERVE ON STCINRDR                                             
IEF695I START GPMSERVE WITH JOBNAME GPMSERVE IS ASSIGNED TO USER IBMUSER  
 , GROUP SYS1                                                             
$HASP373 GPMSERVE STARTED                                                 
IEF403I GPMSERVE - STARTED - TIME=09.05.31                                

参考

CDPzでは、RMF Monitor IIIのうち、以下の4つのレポートのみ取得可能です。それぞれの詳細情報は以下のリンクから確認可能です。

CPC - CPC Capacity Report
https://www.ibm.com/support/knowledgecenter/SSLTBW_2.3.0/com.ibm.zos.v2r3.erbb500/cfc3.htm#erbb500-gen77
https://www.ibm.com/support/knowledgecenter/SSLTBW_2.3.0/com.ibm.zos.v2r3.erbb700/erbb700132.htm
DELAY - Delay Report
https://www.ibm.com/support/knowledgecenter/SSLTBW_2.3.0/com.ibm.zos.v2r3.erbb500/delay.htm#erbb500-gen80
https://www.ibm.com/support/knowledgecenter/SSLTBW_2.3.0/com.ibm.zos.v2r3.erbb700/erbb700133.htm
PROCU - Processor Usage Report
https://www.ibm.com/support/knowledgecenter/SSLTBW_2.3.0/com.ibm.zos.v2r3.erbb500/erbb500177.htm
https://www.ibm.com/support/knowledgecenter/SSLTBW_2.3.0/com.ibm.zos.v2r3.erbb700/erbb700151.htm
SYSINFO - System Information Report
https://www.ibm.com/support/knowledgecenter/SSLTBW_2.3.0/com.ibm.zos.v2r3.erbb500/erbb500238.htm
https://www.ibm.com/support/knowledgecenter/SSLTBW_2.3.0/com.ibm.zos.v2r3.erbb700/erbb700165.htm

CDPz側構成

RMF DDSとの接続用構成

参考: CDPz - Configuring the z/OS RMF Distributed Data Server to collect RMF Monitor III reports

CDPzからDDSにアクセスするため、CDPz実行ユーザー(ここではCDP201)に対してRACF権限設定を行う。

実行例
[CICS004@EPLEX1:/u/cics004] tsocmd "RDEFINE PTKTDATA IRRPTAUTH.GPMSERVE.* UACC(NONE)"
RDEFINE PTKTDATA IRRPTAUTH.GPMSERVE.* UACC(NONE)
ICH10006I RACLISTED PROFILES FOR PTKTDATA WILL NOT REFLECT THE ADDITION(S) UNTIL A SETROPTS REFRESH IS ISSUED.

[CICS004@EPLEX1:/u/cics004] tsocmd "PERMIT IRRPTAUTH.GPMSERVE.* CLASS(PTKTDATA) ID(CDP201)ACCESS(UPDATE)"
PERMIT IRRPTAUTH.GPMSERVE.* CLASS(PTKTDATA) ID(CDP201)ACCESS(UPDATE)
ICH06011I RACLISTED PROFILES FOR PTKTDATA WILL NOT REFLECT THE UPDATE(S) UNTIL A SETROPTS REFRESH IS ISSUED

[CICS004@EPLEX1:/u/cics004] tsocmd "SETROPTS RACLIST(PTKTDATA) REFRESH"
SETROPTS RACLIST(PTKTDATA) REFRESH

Policy作成

Syslogの例と同じようにRMF III関連のData Streamを追加してPolicyを作成する。
image.png

DataStreamer/Logforwarder構成

Syslogの例と同様。

ELK側構成

Logstash関連構成

DELAY, SYSINFOでは、数値として扱いたいフィールドに、"N/A"という文字列が入ってくるフィールドが多々ある。型の不一致で取り込みに不具合が生じるため、DELAY, SYSINFOについては、一律で"N/A"文字列を""(nil)に変換することとする。

以下のようにLogstash設定ファイルを修正(いずれも、csvプラグインの前に、mutateプラグインを追加)。

H_RMF_DELAY.lsh
filter {
   if [sourceType] == "zOS-RMF_DELAY" {

      mutate {
        gsub => [ "message", "N/A", "" ]
      }

      csv{ columns => [  "LOCALSTART", "LOCALEND", "JDELDAN", "JDELASI", "JDETYPX", "JDEPSVCL", "JDEGMIP", "JDELWFL", "JDELUSG", "JDELDEL", "JDELIDL",
 "JDELUKN", "JDELPROC", "JDELDEV", "JDELSTOR", "JDELSUBS", "JDELOPER", "JDELENQ", "JDELJES", "JDELHSM", "JDELXCF", "JDELMNT", "JDELMES", "JDELQUI", "J
DELCAP", "JDELCP", "JDELCBP", "JDELSUP", "JDELIFA", "JDELREAS" ]
         separator => "," }

   }
}
H_RMF_SYSINFO.lsh
filter {
   if [sourceType] == "zOS-RMF_SYSINFO" {

      mutate {
        gsub => [ "message", "N/A", "" ]
      }

      csv{ columns => [  "LOCALSTART", "LOCALEND", "SYSPARVC", "SYSMODVC", "SYSMDLVC", "SYSTSVVC", "SYSPOLVC", "SYSPRVVC", "SYSCUVVC", "SYSTSEVC", "SY
SPADVC", "SYSPROVC", "SYSLCPVC", "SYSAPOVC", "SYSPATVC", "SYSPRTVC", "SYSAPTVC", "SYSAOCVC", "SYSATCVC", "SYSLOAVG", "SYSCVAVC", "SYSCUAVC", "SYSMUAVC
", "SYSCUOVC", "SYSMUOVC", "SYSCUIVC", "SYSMUIVC", "SYSAHPVC", "SYSIHPVC", "SYSPKCVC", "SYSPKAVC", "SYSPKOVC", "SYSPKIVC", "SYSPRIVC", "SYSAPIVC", "SY
SICVVC", "SYSAICVC", "SYSIPVVC", "SYSOPVVC", "SYSVEPVC", "SYSTCTVC", "SYSUCTVC", "SYSCCTVC", "SYSCULVC", "SYSNAMVC", "SYSTYPVC", "SYSWFLVC", "SYSTUSVC
", "SYSAUSVC", "SYSTRSVC", "SYSAFCVC", "SYSRSPM", "SYSAUPVC", "SYSAUDVC", "SYSADPVC", "SYSADDVC", "SYSADSVC", "SYSADUVC", "SYSADOVC", "SYSADEVC", "SYS
ADJVC", "SYSADHVC", "SYSADXVC", "SYSADNVC", "SYSADMVC", "SYSCPUVC", "SYSSRBVC", "SYSTCBVC", "SYSIFAVC", "SYSCPVC", "SYSIFCVC", "SYSRSPVC", "SYSVELVC",
 "SYSUGMVC", "SYSUGPVC", "SYSUGDVC", "SYSWGDVC", "SYSWGPVC", "SYSDGMVC", "SYSUJMVC", "SYSDJMVC", "SYSDGEVC", "SYSDGHVC", "SYSDGDVC", "SYSDGJVC", "SYSD
GOVC", "SYSDGPVC", "SYSDGSVC", "SYSDGUVC", "SYSDGXVC", "SYSDDSIN", "SYSDDSIT", "SYSDDSIP", "SYSRCTNT", "SYSEAPVC", "SYSLPIVC", "SYSSUPVC", "SYSSUCVC",
 "SYSPDPVC", "SYSTODVC", "SYSCPDVC", "SYSAPDVC", "SYSIPDVC", "SYSRGCVC", "SYSDLYVC", "SYSMEMUS", "SYSCBPVC", "SYSCBCVC", "SYSCBDVC", "SYSVECVC" ]
         separator => "," }

   }
}

また、PROCUのPRUPCLPフィールドには"*"が入るケースがあるため、"*"の場合は当該フィールドを削除するロジックを追加。

H_RMF_PROCU.lsh
filter {
   if [sourceType] == "zOS-RMF_PROCU" {

      csv{ columns => [  "LOCALSTART", "LOCALEND", "PRUPJOB", "PRUPASI", "PRUPCLA", "PRUPCLAX", "PRUPSVCL", "PRUPCLP", "PRUPCPT", "PRUPAACT", "PRUPCBC
T", "PRUPIICT", "PRUPCPE", "PRUPAAPE", "PRUPCBPE", "PRUPIIPE", "PRUPTOTC", "PRUPTOTE", "PRUPTCB", "PRUPSRB", "PRUPPCS", "PRUPEPS", "PRUTCPUT" ]
         separator => "," }

      if [PRUPCLP] == "*" {
        mutate { remove_field => [ "PRUPCLP" ] }
      }

   }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0