はじめに
z/OS上でTCP/IPのパケットトレース取得したときのメモです。
急にz/OS側でパケットトレース取らないといけなくなったのですが、すっごい久しぶりで、大昔のメモを頼りに取得しようと思ったらなんだかうまくいかずに色々手こずりました。
パケットトレース取りたいだけなのに何故だかクソ面倒な手順踏まないといけないし、ググっても分かりやすい情報が出てこない。こういう所がイケてないんだよなぁ...ブツブツ。
ということで、ここにメモをアップしておくことにします。
さらに、なんでパケットトレースくらいコマンド一発で操作できるようになってないんだ!!!と怒りが沸々と湧き上がってきてしまったので、手順を簡素化するためのスクリプトも作りました。
※ここで使用した環境はz/OS V2.3です。
事前準備
トレースを指定のデータセットに書き出すためには、どうもExternal Writerというプロシージャーを事前に用意しておいて、そこで出力先のデータセットを指定する必要があるようです。
(絶望的に分かりにくいっ!こんなのオプションで指定できるようにしてくれよと思うのだが。)
これは仕組み上作らないとしょうがなさそうなので、PROCLIBに以下のようなプロシージャーを作っておきます(この例ではCICSWT4という名前で作成)。
//CICSWT4 PROC
//IEFPROC EXEC PGM=ITTTRCWR,REGION=32M
//TRCOUT01 DD DSNAME=CICS004.CTRACE.D&YYMMDD..T&HHMMSS.,
// UNIT=3390,VOL=SER=ZSPK01,
// SPACE=(4096,(100,10)),DISP=(NEW,CATLG),DSORG=PS
TRCOUT01 DDにて、出力先データセットを指定しています。
この例では、上書きされないように、日付、時刻が付いた名前でデータセットを作成するようにしています。CICS004.CTRACE.D190902.T103811 という感じの名前でデータセットが作成される想定です。
パケットトレース取得手順
まずは普通にコマンドを手動で打つ場合の手順
(1) トレース開始
以下のような流れでMVSコマンドを実行していきます。
(1)-1 トレースオプション指定&トレース開始 (VARY TCPIPコマンド)
v tcpip,tcpip,pkt,on,portnum=51421
EZZ0060I PROCESSING COMMAND: VARY TCPIP,TCPIP,PKT,ON,PORTNUM=51421
EZZ0053I COMMAND VARY PKTTRACE COMPLETED SUCCESSFULLY
上の例だとportnum=51421
という部分がフィルターをかけるためのオプション指定です。ポート51421の通信のみ取得するイメージです。その他のオプションは以下を参考に。
参考: VARY TCPIP,,PKTTRACE
(1)-2 External Writer開始 (TRACEコマンド)
TRACE CT,WTRSTART=CICSWT4
ITT038I ALL OF THE TRANSACTIONS REQUESTED VIA THE TRACE CT COMMAND WERE
SUCCESSFULLY EXECUTED.
IEE839I ST=(ON,0001M,00002M) AS=ON BR=OFF EX=ON MO=OFF MT=(ON,024K)
316
ISSUE DISPLAY TRACE CMD FOR SYSTEM AND COMPONENT TRACE STATUS
ISSUE DISPLAY TRACE,TT CMD FOR TRANSACTION TRACE STATUS
IEF196I 1 //CICSWT4 JOB MSGLEVEL=1
IEF196I 2 //STARTING EXEC CICSWT4
IEF196I STMT NO. MESSAGE
IEF196I 2 IEFC001I PROCEDURE CICSWT4 WAS EXPANDED USING SYSTEM
IEF196I LIBRARY SYS0.PROCLIB
IEF196I 3 XXCICSWT4 PROC
IEF196I 4 XXIEFPROC EXEC PGM=ITTTRCWR,REGION=32M
IEF196I 5 XXTRCOUT01 DD
IEF196I DSNAME=CICS004.CTRACE.D&YYMMDD..T&HHMMSS.,
IEF196I XX UNIT=3390,VOL=SER=ZSPK01,
IEF196I XX SPACE=(4096,(100,10)),DISP=(NEW,CATLG),
IEF196I DSORG=PS
IEF196I IEFC653I SUBSTITUTION JCL -
IEF196I DSNAME=CICS004.CTRACE.D190905.T045414,UNIT=3390,VOL=SER=ZSPK01,
IEF196I SPACE=(4096,(100,
IEF196I 10)),DISP=(NEW,CATLG),DSORG=PS
IEF403I CICSWT4 - STARTED - TIME=13.54.14
IEF196I IEFA111I CICSWT4 IS USING THE FOLLOWING JOB RELATED SETTINGS:
IEF196I SWA=BELOW,TIOT SIZE=32K,DSENQSHR=DISALLOW,GDGBIAS=JOB
IEF196I IEF236I ALLOC. FOR CICSWT4 CICSWT4
IEF196I IGD100I 5187 ALLOCATED TO DDNAME TRCOUT01 DATACLAS ( )
IEF196I AHL906I THE OUTPUT BLOCK SIZE OF 27998 WILL BE USED FOR
IEF196I OUTPUT
IEF196I DATA SETS:
IEF196I CICS004.CTRACE.D190905.T045414
AHL906I THE OUTPUT BLOCK SIZE OF 27998 WILL BE USED FOR OUTPUT 338
DATA SETS:
CICS004.CTRACE.D190905.T045414
ITT110I INITIALIZATION OF CTRACE WRITER CICSWT4 COMPLETE.
これでWriterが開始されます。
(1)-3 External Writerと接続 (TRACEコマンド)
ここでWriterを指定します。Writerで指定した宛先にデータが書き出されることになるらしい。ここでのオプション指定はよく調べてないのでナゾですが、とりあえずこれで取得はできた。
("接続"という表現が適切かどうか分からないが、停止時に逆の操作を行う際に"disconnect"というキーワードが出てくるので...)
TRACE CT,ON,COMP=SYSTCPDA,SUB=(TCPIP)
*70 ITT006A SPECIFY OPERAND(S) FOR TRACE CT COMMAND.
ここでReply聞かれるので、これに対して返答(この返答でWriterを指定する)
R 70,WTR=CICSWT4,END
IEE600I REPLY TO 70 IS;WTR=CICSWT4,END
ITT038I ALL OF THE TRANSACTIONS REQUESTED VIA THE TRACE CT COMMAND WERE
SUCCESSFULLY EXECUTED.
IEE839I ST=(ON,0001M,00002M) AS=ON BR=OFF EX=ON MO=OFF MT=(ON,024K)
418
ISSUE DISPLAY TRACE CMD FOR SYSTEM AND COMPONENT TRACE STATUS
ISSUE DISPLAY TRACE,TT CMD FOR TRANSACTION TRACE STATUS
参考:
TRACE command
External writer
これで準備が完了です。
※しかし、Replyで指示ださなきゃいけないって、なんなのこれ。分かりにくいし、スクリプト化も面倒になるし、本当にイケてない。こういうものが積み重なっていくと心が折れそうになるんだよなぁ...。
(2) テストシナリオを流す
ここで、トレースしたいテストシナリオを流します。
(3) トレース停止
(3)-1 トレース停止 (VARYコマンド)
V TCPIP,TCPIP,PKT,OFF
EZZ0060I PROCESSING COMMAND: VARY TCPIP,TCPIP,PKT,OFF
EZZ0053I COMMAND VARY PKTTRACE COMPLETED SUCCESSFULLY
(3)-2 External Writerを切断 (TRACEコマンド)
TRACE CT,ON,COMP=SYSTCPDA,SUB=(TCPIP)
*71 ITT006A SPECIFY OPERAND(S) FOR TRACE CT COMMAND.
ここでReply聞かれるので、これに対して返答(この返答でWriterを切り離す)
R 71,WTR=DISCONNECT,END
IEE600I REPLY TO 71 IS;WTR=DISCONNECT,END
ITT038I ALL OF THE TRANSACTIONS REQUESTED VIA THE TRACE CT COMMAND WERE
SUCCESSFULLY EXECUTED.
IEE839I ST=(ON,0001M,00002M) AS=ON BR=OFF EX=ON MO=OFF MT=(ON,024K)
464
ISSUE DISPLAY TRACE CMD FOR SYSTEM AND COMPONENT TRACE STATUS
ISSUE DISPLAY TRACE,TT CMD FOR TRANSACTION TRACE STATUS
(3)-3 External Writer停止 (TRACEコマンド)
TRACE CT,WTRSTOP=CICSWT4
ITT038I ALL OF THE TRANSACTIONS REQUESTED VIA THE TRACE CT COMMAND WERE
SUCCESSFULLY EXECUTED.
IEF196I AHL904I THE FOLLOWING TRACE DATASETS CONTAIN TRACE DATA :
IEF196I CICS004.CTRACE.D190905.T045414
AHL904I THE FOLLOWING TRACE DATASETS CONTAIN TRACE DATA : 728
CICS004.CTRACE.D190905.T045414
IEE839I ST=(ON,0001M,00002M) AS=ON BR=OFF EX=ON MO=OFF MT=(ON,024K)
731
ISSUE DISPLAY TRACE CMD FOR SYSTEM AND COMPONENT TRACE STATUS
ISSUE DISPLAY TRACE,TT CMD FOR TRANSACTION TRACE STATUS
ITT111I CTRACE WRITER CICSWT4 TERMINATED BECAUSE OF A WTRSTOP REQUEST.
- ----TIMINGS (MINUTES)-----
-----PAGING COUNTS----
-STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK
SERV WORKLOAD PAGE SWAP VIO SWAPS
- IEFPROC 00 18 2 0.000060 0.000001 24.7
385 SYSTEM 0 0 0 0
IEF404I CICSWT4 - ENDED - TIME=14.18.58
-CICSWT4 ENDED. NAME- TOTAL TCB CPU TIME= 0.000060
TOTAL ELAPSED TIME= 24.7 SUBSYS=STC
IEF196I IEF142I CICSWT4 CICSWT4 - STEP WAS EXECUTED - COND CODE 0000
IEF196I IEF285I CICS004.CTRACE.D190905.T045414 CATALOGED
IEF196I IEF285I VOL SER NOS= ZSPK01.
IEF196I IEF373I STEP/IEFPROC /START 2019248.1354
IEF196I IEF032I STEP/IEFPROC /STOP 2019248.1418
IEF196I CPU: 0 HR 00 MIN 00.00 SEC SRB: 0 HR 00
IEF196I MIN 00.00 SEC
IEF196I VIRT: 56K SYS: 160K EXT: 604K SYS:
IEF196I 10428K
IEF196I ATB- REAL: 16K SLOTS:
IEF196I 0K
IEF196I VIRT- ALLOC: 7M SHRD: 0M
IEF196I IEF375I JOB/CICSWT4 /START 2019248.1354
IEF196I IEF033I JOB/CICSWT4 /STOP 2019248.1418
IEF196I CPU: 0 HR 00 MIN 00.00 SEC SRB: 0 HR 00
IEF196I MIN 00.00 SEC
これで停止完了。
(4) トレースのフォーマット
ここまでで、(1)-2のメッセージで示されているデータセットCICS004.CTRACE.D190905.T045414 にトレースデータが取得されているはずです。こいつをフォーマットするために以下のようなJCLを流します。
//CTRACE JOB MSGLEVEL=(1,1),MSGCLASS=X
//S EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=1500K
//SYSPROC DD DSN=SYS1.SBLSCLI0,DISP=SHR
//SYSTSPRT DD SYSOUT=A
//IPCSPRNT DD SYSOUT=A
//IPCSTOC DD SYSOUT=A
//SYSUDUMP DD SYSOUT=A
//SYSTSIN DD *
PROFILE MSGID
%BLSCDDIR VOLUME (ZSPK01)
IPCS NOPARM
CTRACE COMP(SYSTCPDA) SUB((TCPIP)) FULL +
DSN('CICS004.CTRACE.D190905.T045414')
END
このJCLサブミットするとIPCSPRNT DDにフォーマット結果が出力されます。
パケットトレース取得用スクリプト
概要
USS上からトレース開始, 停止, フォーマットをするためのスクリプト/JCL雛形を作成しました。
これらは、以前公開済みの、Lightweight Command Utilityをベースにしていますので、これが動くのが前提です。
z/OSの新しい管理方法を探る - (4)Lightweight Command Utility on z/OS USS
UtilDirに上のUtilityを配置したパスを設定し、以下のスクリプトでaliasなどを設定する想定です。
#!/bin/sh
export PATH=$UtilDir:$PATH
alias sdsf=sdsf.rex
alias d="sdsf d"
alias f="sdsf f"
alias s="sdsf s"
alias p="sdsf p"
alias v="sdsf v"
alias r="sdsf r"
alias trace="sdsf trace"
alias da="da.sh -i"
alias st="st.sh -i"
alias syslog=syslog.sh
alias jl="joblog.sh"
alias sub="submitJcl.sh -i"
alias ds="dsExplorer.sh"
ソース
パケットトレース開始用シェル・スクリプト
Parameters部分の、各種変数は環境に合わせて変更してください。
- traceOption: 指定するトレースオプション
- writerName: 使用するExternal Writer
- datasetKey: 出力先データセットを識別する名前(HLQ)
- tcpipName: TCPIPスタック名
メッセージが出るまで若干タイムラグがある部分はsleep 3と3秒スリープ入れていますが、この辺りは必要に応じて調整して下さい。
#!/bin/sh
. ${UtilDir}/util_env.sh
##################################### Parameters
traceOption="portnum=51421"
writerName=cicswt4
datasetKey="CICS004.CTRACE"
tcpipName=TCPIP
tempDir=/tmp
tempKey=Util
pid=$$
thisDateTime=$(date '+%Y%m%d_%H%M%S')
tempFile=${tempDir}/${tempKey}_iptraceMessage_${pid}_${thisDateTime}.txt
###################################### Trace on
v tcpip,${tcpipName},pkt,on,${traceOption}
###################################### start writer
trace ct,wtrstart=${writerName}
### get datasetName
sleep 3
datasetMessage=$(syslog -l 1 | grep IEF196I | grep ${datasetKey} | tail -n 1)
if [[ ${datasetMessage} == "" ]]; then
echo "Error: No Dataset Information"
exit 1
else
#echo datasetMessage: ${datasetMessage}
set -A datasetMessageArray $(echo datasetMessage: ${datasetMessage})
#echo datasetMessageArray: ${datasetMessageArray[@]} ${#datasetMessageArray[@]}
datasetName=${datasetMessageArray[8]}
#echo datasetName: ${datasetName}
fi
###################################### connect writer
trace "ct,on,comp=systcpda,sub=(${tcpipName})" > ${tempFile}
cat ${tempFile}
### get reply number
replyMessage=$(grep ITT006A ${tempFile})
rc=$?
if [[ ${rc} -gt 0 ]] ; then
echo "Error: No Reply Message"
exit 1
else
#echo replyMessage: ${replyMessage}
set -A replyMessageArray $(echo ${replyMessage} | tr -s "*" " ")
#echo replyMessageArray: ${replyMessageArray[@]} ${#replyMessageArray[@]}
replyNumber=${replyMessageArray[3]}
echo replyNumber: ${replyNumber}
fi
rm ${tempFile}
### reply
r ${replyNumber},wtr=${writerName},end
####################################### display datasetName
echo ${datasetName}
パケットトレース停止用シェル・スクリプト
Parameters部分の、各種変数は環境に合わせて変更してください。
- writerName: 使用するExternal Writer
- tcpipName: TCPIPスタック名
Writer切断するのに若干タイムラグがあるのでWriterを停止させる前にsleep 5と5秒スリープ入れていますが、この辺りは必要に応じて調整して下さい。(disconectが完了しないとwriterの停止がうまくいかないようで、writer稼働中のままフォーマットのJCL流すとデータセット"使用中"ということでフォーマットできないので注意!)
#!/bin/sh
. ${UtilDir}/util_env.sh
##################################### Parameters
writerName=cicswt4
tcpipName=TCPIP
tempDir=/tmp
tempKey=Util
pid=$$
thisDateTime=$(date '+%Y%m%d_%H%M%S')
tempFile=${tempDir}/${tempKey}_iptraceMessage_${pid}_${thisDateTime}.txt
###################################### Trace off
v tcpip,${tcpipName},pkt,off
###################################### disconnect writer
trace "ct,on,comp=systcpda,sub=(${tcpipName})" > ${tempFile}
cat ${tempFile}
### get reply number
replyMessage=$(grep ITT006A ${tempFile})
rc=$?
if [[ ${rc} -gt 0 ]] ; then
echo "Error: No Reply Message"
else
#echo replyMessage: ${replyMessage}
set -A replyMessageArray $(echo ${replyMessage} | tr -s "*" " ")
#echo replyMessageArray: ${replyMessageArray[@]} ${#replyMessageArray[@]}
replyNumber=${replyMessageArray[3]}
echo replyNumber: ${replyNumber}
fi
rm ${tempFile}
### reply
r ${replyNumber},wtr=disconnect,end
###################################### stop writer
sleep 5
trace ct,wtrstop=${writerName}
フォーマット用JCLテンプレート
VOLUME名やTCPIPスタック名、SYSPROCなどは環境に合わせて適宜変更して下さい。フォーマット対象のデータが入っているデータセット名だけ変数(@datasetName@
)にしています。
//CTRACE JOB MSGLEVEL=(1,1),MSGCLASS=X
//S EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=1500K
//SYSPROC DD DSN=SYS1.SBLSCLI0,DISP=SHR
//SYSTSPRT DD SYSOUT=A
//IPCSPRNT DD SYSOUT=A
//IPCSTOC DD SYSOUT=A
//SYSUDUMP DD SYSOUT=A
//SYSTSIN DD *
PROFILE MSGID
%BLSCDDIR VOLUME (ZSPK01)
IPCS NOPARM
CTRACE COMP(SYSTCPDA) SUB((TCPIP)) FULL +
DSN('@datasetName@')
END
スクリプトによるパケットトレース取得例
さてさて、上に挙げたスクリプトを使ってパケットトレースする一連の手順例を示します。
(1) トレース開始
コマンド一発でOK!
[CICS004@EPLEX1:/u/cics004/Shell] ./iptrace_on.sh
RC: 0
ISFMSG: COMMAND ISSUED
ISFMSG2.1 : ISF776I Processing started for action 1 of 1.
ISFMSG2.2 : ISF769I System command issued, command text: v tcpip,TCPIP,pkt,on,portnum=51421.
ISFMSG2.3 : ISF766I Request completed, status: COMMAND ISSUED.
ZOS1 2019248 14:55:19.98 ISF041I CONSOLE NAME CICS004 MODIFIED
ZOS1 2019248 14:55:19.98 ISF031I CONSOLE CICS004$ ACTIVATED
ZOS1 2019248 14:55:19.98 -v tcpip,TCPIP,pkt,on,portnum=51421
ZOS1 2019248 14:55:19.98 STC00011 EZZ0060I PROCESSING COMMAND: VARY TCPIP,TCPIP,PKT,ON,PORTNUM=51421
ZOS1 2019248 14:55:19.99 STC00011 EZZ0053I COMMAND VARY PKTTRACE COMPLETED SUCCESSFULLY
RC: 0
ISFMSG: COMMAND ISSUED
ISFMSG2.1 : ISF776I Processing started for action 1 of 1.
ISFMSG2.2 : ISF769I System command issued, command text: trace ct,wtrstart=cicswt4.
ISFMSG2.3 : ISF766I Request completed, status: COMMAND ISSUED.
ZOS1 2019248 14:55:21.10 ISF041I CONSOLE NAME CICS004 MODIFIED
ZOS1 2019248 14:55:21.10 ISF031I CONSOLE CICS004$ ACTIVATED
ZOS1 2019248 14:55:21.10 -trace ct,wtrstart=cicswt4
ZOS1 2019248 14:55:21.12 ITT038I ALL OF THE TRANSACTIONS REQUESTED VIA THE TRACE CT COMMAND WERE SUCCESSFULLY EXECUTED.
ZOS1 2019248 14:55:21.12 IEE839I ST=(ON,0001M,00002M) AS=ON BR=OFF EX=ON MO=OFF MT=(ON,024K)
ISSUE DISPLAY TRACE CMD FOR SYSTEM AND COMPONENT TRACE STATUS
ISSUE DISPLAY TRACE,TT CMD FOR TRANSACTION TRACE STATUS
ZOS1 2019248 14:55:21.25 ITT110I INITIALIZATION OF CTRACE WRITER CICSWT4 COMPLETE.
RC: 0
ISFMSG: COMMAND ISSUED
ISFMSG2.1 : ISF776I Processing started for action 1 of 1.
ISFMSG2.2 : ISF769I System command issued, command text: trace ct,on,comp=systcpda,sub=(TCPIP).
ISFMSG2.3 : ISF766I Request completed, status: COMMAND ISSUED.
ZOS1 2019248 14:55:25.99 ISF041I CONSOLE NAME CICS004 MODIFIED
ZOS1 2019248 14:55:25.99 ISF031I CONSOLE CICS004$ ACTIVATED
ZOS1 2019248 14:55:25.99 -trace ct,on,comp=systcpda,sub=(TCPIP)
ZOS1 2019248 14:55:26.00 *81 ITT006A SPECIFY OPERAND(S) FOR TRACE CT COMMAND.
replyNumber: 81
RC: 0
ISFMSG: COMMAND ISSUED
ISFMSG2.1 : ISF776I Processing started for action 1 of 1.
ISFMSG2.2 : ISF769I System command issued, command text: r 81,wtr=cicswt4,end.
ISFMSG2.3 : ISF766I Request completed, status: COMMAND ISSUED.
ZOS1 2019248 14:55:27.19 ISF041I CONSOLE NAME CICS004 MODIFIED
ZOS1 2019248 14:55:27.19 ISF031I CONSOLE CICS004$ ACTIVATED
ZOS1 2019248 14:55:27.19 -r 81,wtr=cicswt4,end
ZOS1 2019248 14:55:27.19 IEE600I REPLY TO 81 IS;WTR=CICSWT4,END
ZOS1 2019248 14:55:27.20 ITT038I ALL OF THE TRANSACTIONS REQUESTED VIA THE TRACE CT COMMAND WERE SUCCESSFULLY EXECUTED.
ZOS1 2019248 14:55:27.20 IEE839I ST=(ON,0001M,00002M) AS=ON BR=OFF EX=ON MO=OFF MT=(ON,024K)
ISSUE DISPLAY TRACE CMD FOR SYSTEM AND COMPONENT TRACE STATUS
ISSUE DISPLAY TRACE,TT CMD FOR TRANSACTION TRACE STATUS
CICS004.CTRACE.D190905.T055521
最後の行に、作成されるデータセット名を表示しています。フォーマット時に使います。
(2) テストシナリオを流す
ここで、トレースしたいテストシナリオを流します。
(3)トレース停止
コマンド一発でOK!
[CICS004@EPLEX1:/u/cics004/Shell] ./iptrace_off.sh
RC: 0
ISFMSG: COMMAND ISSUED
ISFMSG2.1 : ISF776I Processing started for action 1 of 1.
ISFMSG2.2 : ISF769I System command issued, command text: v tcpip,TCPIP,pkt,off.
ISFMSG2.3 : ISF766I Request completed, status: COMMAND ISSUED.
ZOS1 2019248 14:55:41.38 ISF041I CONSOLE NAME CICS004 MODIFIED
ZOS1 2019248 14:55:41.38 ISF031I CONSOLE CICS004$ ACTIVATED
ZOS1 2019248 14:55:41.38 -v tcpip,TCPIP,pkt,off
ZOS1 2019248 14:55:41.38 STC00011 EZZ0060I PROCESSING COMMAND: VARY TCPIP,TCPIP,PKT,OFF
ZOS1 2019248 14:55:41.38 STC00011 EZZ0053I COMMAND VARY PKTTRACE COMPLETED SUCCESSFULLY
RC: 0
ISFMSG: COMMAND ISSUED
ISFMSG2.1 : ISF776I Processing started for action 1 of 1.
ISFMSG2.2 : ISF769I System command issued, command text: trace ct,on,comp=systcpda,sub=(TCPIP).
ISFMSG2.3 : ISF766I Request completed, status: COMMAND ISSUED.
ZOS1 2019248 14:55:42.46 ISF041I CONSOLE NAME CICS004 MODIFIED
ZOS1 2019248 14:55:42.46 ISF031I CONSOLE CICS004$ ACTIVATED
ZOS1 2019248 14:55:42.46 -trace ct,on,comp=systcpda,sub=(TCPIP)
ZOS1 2019248 14:55:42.47 *82 ITT006A SPECIFY OPERAND(S) FOR TRACE CT COMMAND.
replyNumber: 82
RC: 0
ISFMSG: COMMAND ISSUED
ISFMSG2.1 : ISF776I Processing started for action 1 of 1.
ISFMSG2.2 : ISF769I System command issued, command text: r 82,wtr=disconnect,end.
ISFMSG2.3 : ISF766I Request completed, status: COMMAND ISSUED.
ZOS1 2019248 14:55:43.70 ISF041I CONSOLE NAME CICS004 MODIFIED
ZOS1 2019248 14:55:43.70 ISF031I CONSOLE CICS004$ ACTIVATED
ZOS1 2019248 14:55:43.70 -r 82,wtr=disconnect,end
ZOS1 2019248 14:55:43.70 IEE600I REPLY TO 82 IS;WTR=DISCONNECT,END
RC: 0
ISFMSG: NO RESPONSE RECEIVED
ISFMSG2.1 : ISF776I Processing started for action 1 of 1.
ISFMSG2.2 : ISF769I System command issued, command text: trace ct,wtrstop=cicswt4.
ISFMSG2.3 : ISF766I Request completed, status: NO RESPONSE RECEIVED.
ZOS1 2019248 14:55:49.81 ISF041I CONSOLE NAME CICS004 MODIFIED
ZOS1 2019248 14:55:49.81 ISF031I CONSOLE CICS004$ ACTIVATED
ZOS1 2019248 14:55:49.81 -trace ct,wtrstop=cicswt4
SYSLOGでWriterが停止されたことを確認してください。
(SYSLOG見るのもLightweight Command Utilityが使えるよ)
(4) トレースのフォーマット
Lightweight Command UtilityのJCLサブミットの仕組みを使えばラクチン!
[CICS004@EPLEX1:/u/cics004/JCL] sub -f iptrace.jcl -l "@datasetName@=CICS004.CTRACE.D190905.T055521"
JobID: JOB05067
waiting..
Max-RC: CC 0000
-----------------------
JOBNAME: CTRACE
JOBID: JOB05067
OWNER: CICS004
Max-RC: CC 0000
-----------------------
No. DDNAME StepName ProcStep DSID Owner Rec-Cnt Byte-cnt CrDate-CrTime
========================================================================================
1 JESMSGLG JES2 - 2 CICS004 20 1186 2019.248 14:57:46
2 JESJCL JES2 - 3 CICS004 9 435 2019.248 14:57:46
3 JESYSMSG JES2 - 4 CICS004 42 2257 2019.248 14:57:46
4 SYSTSPRT S - 102 CICS004 19 731 2019.248 14:57:46
5 IPCSPRNT S - 103 CICS004 714 47650 2019.248 14:57:46
6 IPCSTOC S - 104 CICS004 3 382 2019.248 14:57:46
-------------------------
Select 0 for All DDs or DD Number (with file name optionally), or Input quit
subcommand usage
0 :Display Whole JOBLOG
<num> :Display JOBLOG of selected DD
<num> <file> :Output selected JOBLOG to file
r :Refresh DD list
q|quit :Quit this shell script
CTRACE/JOB05067 >>> 5
IPCSPRNT
1IPCS PRINT LOG FOR USER CICS004 1 14:57:50 09/05/19
+____________________________________________________________________________________________________________________________________
0 COMPONENT TRACE FULL FORMAT
COMP(SYSTCPDA)SUBNAME((TCPIP))
z/OS TCP/IP Packet Trace Formatter, Copyright IBM Corp. 2000, 2017; 2018.073
DSNAME('CICS004.CTRACE.D190905.T055521')
0**** 2019/09/05
RcdNr Sysname Mnemonic Entry Id Time Stamp Description
----- -------- -------- -------- --------------- --------------------------------
0173144 ZOS1 PACKET 00000004 05:55:35.073364 Packet Trace
From Interface : OSA240LINK Device: QDIO Ethernet Full=52
Tod Clock : 2019/09/05 05:55:35.073362 Intfx: 4
Segment # : 0 Flags: In
Source : xx.xx.xx.xx
Destination : xx.xx.xx.xx
Source Port : 51942 Dest Port: 51421 Asid: 0030 TCB: 00000000
QID : 1
IpHeader: Version : 4 Header Length: 20
Tos : 00 QOS: Routine Normal Service
Packet Length : 52 ID Number: 4EA9
Fragment : DontFragment Offset: 0
TTL : 123 Protocol: TCP CheckSum: C732 FFFF
Source : xx.xx.xx.xx
Destination : xx.xx.xx.xx
0 TCP
Source Port : 51942 () Destination Port: 51421 ()
Sequence Number : 714852181 Ack Number: 0
Header Length : 32 Flags: Syn
Window Size : 64240 CheckSum: 0522 FFFF Urgent Data Pointer: 0000
Option : Max Seg Size Len: 4 MSS: 1300
Option : NOP
Option : Window Scale OPT Len: 3 Shift: 8
Option : NOP
Option : NOP
Option : SACK Permitted
0Ip Header : 20 IP: xx.xx.xx.xx, xx.xx.xx.xx Offset: 0
000000 45000034 4EA94000 7B06C732 0944FE1B 09BCD8CC
0Protocol Header : 32 Port: 51942, 51421 Offset: 14
000000 CAE6C8DD 2A9BC755 00000000 8002FAF0 05220000 02040514 01030308 01010402
-------------------------------------------------------------------------------
0173145 ZOS1 PACKET 00000004 05:55:35.073453 Packet Trace
To Interface : OSA240LINK Device: QDIO Ethernet Full=48
Tod Clock : 2019/09/05 05:55:35.073453 Intfx: 4
Segment # : 0 Flags: Out
Source : xx.xx.xx.xx
Destination : xx.xx.xx.xx
Source Port : 51421 Dest Port: 51942 Asid: 0030 TCB: 00000000
Next Hop : xx.xx.xx.xx
IpHeader: Version : 4 Header Length: 20
Tos : 00 QOS: Routine Normal Service
Packet Length : 48 ID Number: 55B5
Fragment : Offset: 0
TTL : 64 Protocol: TCP CheckSum: 3B2B FFFF
Source : xx.xx.xx.xx
1IPCS PRINT LOG FOR USER CICS004 2 14:57:50 09/05/19
+____________________________________________________________________________________________________________________________________
0 Destination : xx.xx.xx.xx
0 TCP
Source Port : 51421 () Destination Port: 51942 ()
Sequence Number : 501647975 Ack Number: 714852182
Header Length : 28 Flags: Ack Syn
Window Size : 65535 CheckSum: 6C26 FFFF Urgent Data Pointer: 0000
Option : Max Seg Size Len: 4 MSS: 1452
Option : NOP
Option : Window Scale OPT Len: 3 Shift: 5
--More--
こんな感じで見られます。(IPアドレス部分はxx.xx.xx.xxでマスク)
ファイルに落とすのもカンタン!
ふー、これでだいぶマシにはなった気がする。