Setting up the Distributed Data Server for z/OS
Applications that want to access sysplex-wide performance data, can retrieve their input from a single data server on one system in the sysplex, which gathers the data distributed on all systems in the sysplex. Therefore, this is called the Distributed Data Server (DDS).
The DDS offers an HTTP API which can access short-term data from the Monitor III as well as long-term data from the Postprocessor. An application program can send an HTTP request for selected performance data to the DDS.
Exploiters of Monitor III performance data provided by the DDS are, among others, z/OS Capacity Provisioning, z/OSMF, or RMF PM. If you want to monitor systems in a sysplex, you must set up a Distributed Data Server (DDS) host session on the system in the sysplex with the highest RMF release. If you want to monitor several sysplexes, each one needs to have an active DDS.
To start the DDS, RMF provides the cataloged procedure stored in SYS1.PROCLIB(GPMSERVE):
//GPMSERVE PROC ROOT='/usr/lpp/gpm',
// JAVA='/usr/lpp/java/J17.0_64',
// MEMBER=00,
// OUTCLS='*',
// JAVAVER='17',
// JAVALGLV='',
// REGSIZE='0M',
// LEPARM=''
...
//PMJAVA EXEC PGM=JVMLDM&JAVAVER,REGION=&REGSIZE,
// PARM='&LEPARM/&JAVALGLV'
...
//GPMPPJCL DD DISP=SHR,DSN=SYS1.SERBPWSV(GPMPPJCL)
...
- Number of Cache Slots
- Number of Resources in the Sysplex
- Number of DDS clients and so on.
Prerequisites for exploiting the Monitor III HTTP API
On those systems where you want to monitor short-term Monitor III data, you need to start the Monitor III gatherer with identical MINTIME and SYNC options (see Description of Monitor III data gatherer options in z/OS Data Gatherer User's Guide).
Also make sure, that the following prerequisites are met on your z/OS host:
- Unix System Services must be configured in full function mode.
- TCP/IP under Unix System Services must be configured and fully initialized.
Prerequisites for exploiting the Postprocessor HTTP API
To get access to Postprocessor data provided by the DDS, the GPMSERVE started task points to a Postprocessor job called GPMPPJCL. A JCL template for this job is stored in SYS1.SERBPWSV(GPMPPJCL).
You must adapt or replace the GPMPPJCL member to suit your installation, ensuring that the DDS is able to run RMF Postprocessor jobs. If you do not want to request Postprocessor data with the DDS, you can omit the GPMPPJCL DD card from the GPMSERVE started task.
By default, the RMF Postprocessor retrieves data from all available intervals in the SMF buffer. You can modify the GPMPPJCL template to retrieve only SMF data from the most current interval by adding a job step similar to the following GETSMF sample job step:
//GETSMF EXEC PGM=ERBAPPL,PARM='?/*/70:78'
//SMFDATA DD DISP=(NEW,PASS),UNIT=SYSDA,SPACE=(CYL,(2,2))
//ERBLIST DD SYSOUT=*
//MFPINPUT DD DISP=(OLD,PASS),DSN=*.GETSMF.SMFDATA
GPMPPJCL template
/*JOBPARM SYSAFF=*
//RMFPP EXEC PGM=ERBRMFPP
//MFPMSGDS DD SYSOUT=*
//XPRPTS DD SYSOUT=*
//XPXSRPTS DD SYSOUT=*
//XPOVWRPT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
Note that the Postprocessor API functionality is only available with JES2 installed. Omit the GPMPPJCL ddname in a JES3 environment.
The complete DDS HTTP API is described in z/OS Resource Measurement Facility Programmer's Guide.
Prerequisites for exploiting the SMF data set support of the Postprocessor HTTP API
To get access to preallocated SMF data from data sets or log streams with the Postprocessor HTTP API provided by the DDS, the GPMSERVE started task must point to a Postprocessor job with its GPMPPJCL DD card. The Postprocessor JCL provided here should be derived from the JCL template stored in SYS1.SERBPWSV(GPMPPJV2).
- Distributed Data Server running with HTTP_NOAUTH(*) or
HTTP_NOAUTH(ip-addr):
Provide a universal user ID, GPMUID, with the USER parameter on the JOB statement (USER=GPMUID); here, universal means that the user ID can be used by all exploiters of the DDS (by all authorized exploiters in the case of HTTP_NOAUTH(ip-addr) to access the SMF data sets. The user ID GPMUID may be empty, in which case the Postprocessor job runs under the authority of the GPMSERVE started task user ID.
- Distributed Data Server running with HTTP_NOAUTH():
Leave the
//*UIDline in the GPMPPJV2 template unchanged in this case. The Distributed Data Server takes the user ID which is used for authorization to the DDS to substitute the user ID in the USER parameter.
RDEFINE SURROGAT GPMUID.SUBMIT UACC(NONE) OWNER(GPMUID)
PERMIT GPMUID.SUBMIT CLASS(SURROGAT) ID(GPMSERVE) ACCESS(READ)
SETROPTS RACLIST(SURROGAT) REFRESH
RDEFINE JESSPOOL nodename.GPMUID.GPMSERVE.** UACC(NONE) OWNER(GPMUID)
PERMIT nodename.GPMUID.GPMSERVE.** CLASS(JESSPOOL) ID(GPMSERVE) ACCESS(UPDATE)
SETROPTS RACLIST(JESSPOOL) REFRESH
RDEFINE JESJOBS PURGE.nodename.GPMUID.GPMDDSPP UACC(NONE)
PERMIT PURGE.nodename.GPMUID.GPMDDSPP CLASS(JESJOBS) ID(GPMUID) ACC(ALTER)