The RIB Diagnostic and Monitoring Tool Kit (RDMT) is a collection of command line tools, written in UNIX shell script along with supporting Java classes packaged in jar files. There are various tools to address these areas:
Installation Verification (reports)
Operations (scanning and monitoring)
Production (scanning and quick triage)
Test and Support (scanning and fine grain control)
AQ JMS support and tools
The RIB is a complex collection of distributed components, and there are a variety of GUI tools. These tools augment those tools and provide command line control and access to all levels of the RIB functions. The tools are written to be stand-alone and to provide examples and capabilities for integration into enterprise level OSS and management frameworks, such as Oracle Enterprise Manager, Tivoli or HP OpenView.
Support for Oracle AS - OC4J RIB Version.
Support for both local/remote installation.
Support for Oracle Streams AQ JMS as the JMS Provider.
Support for RIB Hospital databases.
Support for RAC Configured Databases.
Support for JMX control of all RIB Components
Support for message Pub/Sub.
All of the scripts are written to be examples of specific functionality, but have been integrated into a simple tool kit that is configuration driven and has a very simple character-based menu system provided to allow a single point of integration.
The tools are written to provide capabilities and examples of functions for users with various roles and responsibilities.
The primary target role is the RIB administrator as someone who is responsible for the installation, configuration, and deployment of the RIB components. The ribadmin is also usually then tasked with ongoing RIB Software Life Cycle management as well as production operation support. This person has full permissions on all of the application server directories and has full read and execute permissions on the Oracle Application Server tools such as opmnctl and the OC4J instance subdirectories.
RDMT can be installed by a user on the system that may or may not have the RIB/OAS environment. RDMT tools support both local and remote OC4J functions via JMX.
In remote installs, some scripts in the toolkit expect the installing user to have read permissions of the OAS home RIB OC4J sub-directories or require execute permission of opmnctl. Therefore, these will return file or permissions errors.
Once the roles and responsibilities of the user have been understood and established, follow the installation instructions. See the RIB Installation Guide.
.jar File | Description |
---|---|
rib-jms-api.jar | Support classes for jms. |
rib-jms-admin-aq-impl.jar | Specific impl for AQ |
rib-jms-admin.jar | Support classes for AQ admin |
jmx-cmd-line-ui.jar | JMX client |
rdmt.jar | Support tools |
The RDMT release packages a zip file of example xml messages for each message family and message type payload. The zip file is located in the RDMT subdirectory testmsgs.
RDMT has been designed as a set of command line tools that can serve generally needed functions with examples for retailer specific uses, and to provide a ready to use, low impact application. In many situations, it is a requirement to have tools that consume low bandwidth to manage and triage the RIB. These tools provide alternatives to the GUI based tools. The other common requirement is for control and monitoring command line scripts that can be incorporated into enterprise operations scheduling frameworks, such as Autosys or Appworkx.
RDMT has been organized around a very simple character-based menu system that can be modified to suit the deployment roles and responsibilities and to provide some structure by functional area.
All of the tools have been organized into a simple application and accessible via the character-based menu system. All of the tools have been designed to execute relative to a based directory (readmit). Within that base directory all tools expect to find all of the support libraries and other scripts. To execute any tool, all that is needed is to set the base directory as an environmental variable; SCRIPTDIR.
RDMT can be installed either inside/outside rib-home or in a remote server. To install inside/outside rib-home, the installation script (configbuilder.sh) automatically fetches all necessary configuration parameters from rib-deployment-env.-info.xml from inside the specified rib-home/deployment-home/conf directory.
However, if RDMT is installed in a remote server, the installation script prompts for the RIB deployment environment specific values. All of the scripts have been designed to be configuration driven by property files. The setup proces updates these files.
Because there are multiple configurations possible with the fully distributed RIB, all of the tools are designed to work against a set of property files that provide the values need to execute. Collectively these are call "current". In the menu system there are functions that allow configuration of n-number of configurations. For example there can be n-number of rib-<app>'s configured. Other functions set runtime configuration files to these "current" configurations. All tools then read these "current" values and perform tasks against them.
RDMT supports RAC configured databases. The user needs to provide the entire database connection URL when prompted during the setup process.
The user needs to provide the same JDBC connection URL for AQ JMS or Hospital Databases as supplied in rib-deployment-env-info.xml during the RIB installation. The user can provide either thin JDBC connection URL or long JDBC connection URL format (in case of RAC configured database) depending upon the user's environment.
The user needs to provide only the database username, password, and connection URL in order to configure for any AQ JMS/ Hospital database. The below example shows the configuration for an hospital database during the RDMT setup process.
Example:
Enter RMS database Connection URL [needs_value]: jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = mspvip72)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = mspvip73)(PORT = 1521))(LOAD_BALANCE = yes))(CONNECT_DATA =(SERVICE_NAME = orcl)))
You entered: jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = mspvip72)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = mspvip73)(PORT = 1521))(LOAD_BALANCE = yes))(CONNECT_DATA =(SERVICE_NAME = orcl)))
Enter to Continue? y/n/q [y]:
This is the main entry point into the RDMT tool kit application. Most selections invoke other submenus, but for convenience several tools, include in other submenus, are directly accessed from this menu.
Script Used:
rdmt_jmx_submenu
Description:
This menu option exposes the various tools that use JMX to interact with the OC4J instance and to control or status the current rib-<app> and its components.
Script | Description |
---|---|
jmx_app_state.sh | status of the currently active rib application |
jmxcmdline_interactive.sh | A wrapper to the jmx client support classes. This script directly invoke the interactive functions. |
jmxcmdline.sh | General wrapper for other tools to invoke specific jmx functions. |
jmxconfig.sh | There are multiple configurations possible with the fully distributed J2EE RIB. This utility is used to manage the configuration files that allow the rdmt tools to access them. This option can also be used to switch/re-configure the previously configured OC4J/JMX configuration. |
jmx_get_logger_names.sh | RIB app logging tool |
jmx_get_logging_levels_all.sh | RIB app logging tool |
jmx_get_logging_levels.sh | RIB app logging tool |
jmx_set_logging_levels.sh | RIB app logging tool |
jmx_managed_adpaters.sh | Common script used by all jmx tools to interact with the jmx client jar. Many of the menu selections merely set the calling parameters to this tool. |
jmx_OC4Jribstatus.sh | Get the run state of the rib-app OC4J instance and application for all configured. |
jmx_OC4Jrib_scan.sh | For all configured rib-app scans the state of the instance, app and adapters. |
jmx_oc4j_state.sh | Status of the currently active OC4J instance. |
jmx_switch_config.sh | This utility is used to switch the active configuration file that the rdmt tools use. |
jmx_tester.sh | Test script for testing arbitrary jmx commands within the RDMT framework. This is not a menu selection since it requires user editing. |
Script Used:
rdmt_jmsutil_AQ_submenu
Description:
This menu option exposes the various JMS functionalities available in the tool kit. For convenience some tools in other submenus are presented here as well.
Script | Description |
---|---|
aqjmscmdline.sh | Common script used by all JMS tools to interact with the AQ JMS client jar. Many of the menu selections merely set the calling parameters to this tool. |
deletemsgAQ.sh | Delete message(s) on a specified JMS topic for a specified subscriber. |
dmpmsgAQ.sh | Dump a message(s) on an AQ JMS topic for a specified subscriber. |
dmp_msg_statsAQ.sh | Dump properties of message(s) on an AQ JMS topic for a specified subscriber. |
jmsconfig.sh | RDMT supports configuration of n-number of JMS Providers. This utility configures the values to support.
rdmt_jms_submenu is used to make one the current configuration. |
jmstopicsAQ.sh | Query the AQ JMS for all of the topics and the message count on each topic. |
jmstopicsAQ_scan.sh | Query the AQ JMS for just the topics with message counts. |
jmsutil.sh | This utility provides direct access to the AQ JMS java API utilities. |
Script Used:
rdmt_msgutil_submenu
Description:
All of the tools is this menu are wrappers that expose functions in the java utilities rib-jms-api.jar included in the tool kit library. These are general purpose pub/sub functions that are written to support the various JMS Providers for the RIB, e.g. AQ JMS.
In addition to these, we have a utility to test any TAFR's business implementation. By providing the necessary parameters which are prompted, the user can see the output of a particular TAFR either on the console or in the specified file.
Script | Description |
---|---|
pubmsgutil.sh | Provides direct access the java api by prompting for all of the expected command line values it expects. |
submsgutil.sh | Provides direct access the java api by prompting for all of the expected command line values it expects. |
submsg.sh | Higher level wrapper that uses the configuration values to shortcut the values needed to call the java api's. |
pubmsg.sh | Higher level wrapper that uses the configuration values to shortcut the values needed to call the java api's. |
pubmsgutil_multiple.sh | Script that supports multi-message publication. |
pubmsgutil_directory.sh | Script that supports multi-message publication. |
ejbpub_util.sh | Utility to wrapper the EJB Message Publish java api. |
ejbpubutil_multiple.sh | Script that supports multi-message publication through EJB Message Publish java api. |
ejbpubutil_directory.sh | Script that supports multi-message publication through EJB Message Publish java api. |
tafrmsgutil.sh | Script that can be used to test any TAFR Business implementation. |
Script Used:
rdmt_ribhealth_submenu
Description:
This option leads the user to the submenu through which the user can get the current RIB health status.
Script | Description |
---|---|
cron_ribhealth.sh | See the section, "RIB Health", in this chapter. |
ribejbping.sh | See the section, "EJB Ping (RIB)", in this chapter. |
appejbping.sh | See the section, "EJB Ping (RIB)", in this chapter. |
loglookoc4j.sh | See the section, "Scan RIB Logs / Scan RIB Logs (Delta)", in this chapter. |
loglookoc4j_delta.sh | See the section, "Scan RIB Logs / Scan RIB Logs (Delta)", in this chapter. |
timingsutil.sh | See the section, "RIB Timings Utility", in this chapter. |
ttestrms.sh | This script scans a list of RMS MFQ tables using a JDBC connection. (see mfqtables.conf). |
ttestrdm.sh | This script scans a list of RWMS Upload tables using a JDBC connection. (see uploadtables.conf). |
OC4JConfigReport.sh | See the section, "RIB Configuration Report", in this chapter. |
Script Used:
rdmt_hosp_submenu
Description:
This option leads the user to the RIB hospital for various applications submenu through which the user can get the current RIB hospital status.
Script | Description |
---|---|
htest.sh | This script calls a java class that uses JDBC to access the database(s) containing the Hospital tables.
It scans the Hospital RIB_MESSAGES table and report thing such as:
|
htest_failures.sh | This script calls a java class to scan the RIB Hospital Message Failure table using a JDBC connection. |
Script Used:
rdmt_ribadmin_submenu
Description:
The ribadmin script was stand-alone in previous RIB releases. In RIB 13.0, those functions have been moved into this menu item. The ribadmin.sh script is sourced to make the existing functions available to the menu items and the variables that the scripts expected have been mapped to rdmt configuration files.
Since many of the functions expect execute permissions on opmnctl as well as read/write permissions on the OAS directory tree, this menu and the tools are designed for the ribadmin role.
If RDMT is installed in the RIB App Builder rib-home and that is accessible and configured, then this menu exposes the rib-app-builder menu selection. A test is performed to verify the rib-home is configured, if not, then the selection will not appear.
Script | Description |
---|---|
ribadmin.sh | This script contains most all of the functions that are exposed by this menu. |
Script Used:
rdmt_ribappbuilder_submenu
Description:
This option leads the user to the RIB App Builder tools installed in the rib-home. For a description of the tools and usage, see Chapter 2, "Application Builder".
Scripts Used:
loglookoc4j.sh, scan_logs.sh, loglookoc4j_delta.sh, scan_logs_delta.sh
Description:
These scripts perform a log scan to look for a pattern ("Exception") in all of the log files in a directory of the currently active OC4J instance. Since they perform file system scans, the RDMT tools must be installed on the host that contains these logs and must have read permissions on the directories and the files.
As the tool scans all of the logs it writes the matches to a single log file. This becomes the base file. A second script (delta) looks for the same pattern, but compares the matches against the base file, and outputs only new ones. The primary scripts are the scan_logs.sh and the scan_logs_delta.sh. The files created and used by these scripts are controlled by the rdmt.conf entries.
The location of these files should be sized to handle large text files, since it is possible for there to be many exceptions and these will contain the consolidated entries from potentially hundreds of logs. The location is the tmp files parameter set during RDMT install and is defaulted to RDMTLOGS/tmp.
Script Used:
cron_ribhealth.sh
Description:
This utility is a general purpose script that invokes other tools and functions in the tool kit to take a snapshot in time of the run-time state of all of the configured rib-apps. Because this script uses specific jar files as well as other tools in the tool kit, it requires that SCRIPTDIR be set to the rdmt base directory.
It produces a rib_health report on the console as well as a time-stamped log written to the RDMTLOGS/tmp directory. Each execution of the script produces one of the logs, and then over-writes a log called lastrun as well. There is a menu selection that views the lastrun report.
Script Used:
OC4JConfigReport.sh
Description:
After the RIB has been installed and configured on OAS, the user can verify all the installations and configurations using RDMT. In order to achieve this functionality a script has been provided and linked in the RDMT menu which scans the installations and configurations of rib applications deployed using the configuration settings in the RDMT configuration files.
It is recommended that after the installation is complete, the user runs the RIB Config Report utility under the RIB Health Menu option. This outputs the results of the scan on the console as well as in an output file under the specified TEMP FILES DIRECTORY. Each run produces a time-stamped log and updates a log called lastrun-config that is viewable from a menu selection.
This script was written to take a snapshot of the RIB environment and test for basic configuration issues. This utility performs the following functions.
Provides the local oc4j status using opmnctl.
Provides the status of all OC4J instances.
Displays all the RIB instances and their status and PIDS.
Displays all of the RIB apps and shows the status for each RIB OC4J instance and application.
Scans the opmn.xml and displays the RIB instances configured and RIB instance settings.
Provides the directory contents of ORACLE_HOME/j2ee directory.
Provides the directory contents for each instance configured under the ORACLE_HOME/j2ee directory structure.
Scans and displays the rib-system.properties for each rib-<app>
Perform the JMX related functions like scanning configurations for each of jmxX.conf files and displays the status of the adapters, Exceptions is any by scanning the logs and so on.
Performs checks using JMS configuration.
Performs checks using Hospital configurations.
Script Used:
timingsutil.sh
Description:
The RIB can logs a set of timing entries whenever it creates, transform, routes, filters, or subscribes to messages on the RIB. This utility on functions when RDMT is installed on the host system where the logs are generated and the RDMT user has permissions to read the log directories.
The timingsutil.sh script is a wrapper to the RIBTimings java class. This script runs the RibTimings post processor on an adapter's timing file. It prompts for the adapter name then it analyzes the timings logs for that particular adapter. The output is to the screen as well as a file of CSV format in the RDMT temp files directory; RDMTLOGS/tmp/<adapter>.csv. which contains the detailed analysis of timings logs.
This csv file can be directly viewed by Excel. To use this function, the adapter timing log parameters must be set to DEBUG.
Script Used:
pubmsgutil.sh
Class:
RibJmsPublisherTester
Description:
This utility was developed to publish a message to a JMS topic. The pubmsgutil.sh is a wrapper script to RibJmsPublisherTester. It calls the JMS API and publishes the message on to the topic.
Usage:
" java com.retek.rib.jms.RibJmsPublisherTester
-j <JMS provider>
-x <JMS URL>
-u <JMS username>
-p <JMS password>
-t <topicName>
-n <xmlFileName>
-wm <should messages be wrapped in RIBMessage envelop>
-f <messageFamily>
-m <messageType>
-ri <routingInfo>
-tv<threadValue>
-nt <<number of times - optional (default value is 1)>>
Script Used:
ejbpub_util.sh
Class:
RibMessagePublisherClient
Description:
This utility was developed to wrapper the EJB Message Publish Java API. The ejbpub_util.sh is a wrapper script to RibMessagePublisherClient. It calls the specified EJB service and publishes the message on to the AQ JMS. It uses the platform service to publish the message. The user needs to specify the necessary parameters.
Usage:
" java com.oracle.rib.rdmt.util.RibMessagePublisherClient
-host <<host|1>>
-port <<RMI port -- required>
-app <<App name -- required>>
-fa <<family -- required>>
-ty <<type -- required>>
-us <<user | optional>>
-pw <<password | optional>>
-fi <<file -- required>>
Script Used:
tafrmsgutil.sh
Class:
TestAnyTafrBOImpl
Description:
This utility is developed to test any TAFR Business implementation. This helps to check the output of a particular TAFR by providing the necessary prompted arguments. It prompts the user for the TAFR name, the location of the input sample file, adapter id, and the output file name to direct the output (optional). If the output file name is not specified, the default output is routed to stdout. Once provided the valid arguments, the user can see the output of that particular TAFR.
Sample Output:
------------------------------------------------- TAFR TEST UTILITY -------------------------------------------------- This utility was developed to test any TAFR Business implementation. These are designed to help diagnose/validate the TAFR implementation. Usage: java TestAnyTafrBOImpl <tafr name -- required> <file path -- required> <true|false print message data -- required> <adapter-id -- required> <file name -- optional | default output routed to stdout> Do you wish to continue ? Enter to Continue? y/n/q [y]: Existing parameter values: StoresToStoresPhys /u00/rib-home/tools-home/rdmt/testmsgs/PODesc.xml true StoresToStoresPhys_tafr_1 Do you wish to execute using existing values? Enter to Continue? y/n/q [y]: n Enter TAFR Name [StoresToStoresPhys]: You entered: StoresToStoresPhys Enter to Continue? y/n/q [y]: Enter the Input message file and path /u00/rib-home/tools-home/rdmt/testmsgs/PODesc.xml]: /u00/rib-home/tools-home/rdmt/testmsgs/storedel.xml You entered: /u00/rib-home/tools-home/rdmt/testmsgs/storedel.xml Enter to Continue? y/n/q [y]: Print Message Data? [ true | false] [true]: You entered: true Enter to Continue? y/n/q [y]: Enter Adapter ID [StoresToStoresPhys_tafr_1]: You entered: StoresToStoresPhys_tafr_1 Enter to Continue? y/n/q [y]: Enter the Output file name and path if required (default output routed to stdout) []: You entered: Enter to Continue? y/n/q [y]: log4j:WARN No appenders could be found for logger (com.retek.rib.domain.ribmessage.bo.RibMessagesFactory). log4j:WARN Please initialize the log4j system properly. Trying to load rib-system.properties from class.path=lib/rib-private-tafr-business-impl.jar:../../application-assembly-home/rib-tafr/ rib-system.properties loaded from file:/u00/rib-home/application-assembly-home/rib-tafr/rib-system.properties Trying to load rib-tafr.properties from class.path=lib/rib-private-tafr-business-impl.jar:../../application-assembly-home/rib-tafr/ rib-tafr.properties loaded from file:/u00/rib-home/application-assembly-home/rib-tafr/rib-tafr.properties *********************RIBMESSAGES TRANSFORMED DATA************************* <?xml version="1.0" encoding="UTF-8"?> <RibMessages xmlns="http://www.oracle.com/retail/integration/rib/RibMessages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oracle.com/retail/integration/rib/RibMessages file:///C:/rib-home/application-assembly-home/rib-tafr/integration/xsd/RibMessages.xsd"> <ribMessage> <family>Stores</family> <type>storedel</type> <ribmessageID>11.0.x|RIBMessagePublisherEjb|null|2006.01.23 11:45:46.052|510</ribmessageID> <routingInfo> <name>loc_type</name> <value>p</value> </routingInfo> <routingInfo> <name>dest_id</name> <value/> <detail> <dtl_name>loc_type</dtl_name> <dtl_value>p</dtl_value> </detail> </routingInfo> <publishTime>2006-01-23 11:45:46.052 CST</publishTime> <messageData><AllocDesc><store>5</store> </AllocDesc> </messageData> <customData/> <customFlag>F</customFlag> </ribMessage> </RibMessages> *********************PAYLOAD DATA************************* <?xml version="1.0" encoding="UTF-8"?> <AllocDesc> <store>5</store> </AllocDesc> ****************************************************************** ***OUT MESSAGE WILL BE ROUTED TO THE FOLLOWING TOPIC(S)*********** ****************************************************************** 1) etStoresPhys ******************************************************************
Script Used:
ribejbping.sh
Class:
RibMessageInjectorClient
Description:
This utility is developed to ping any RIB-<app> EJB component. This helps to test the connectivity between the rib-<app> and the <app> where app refers to RMS, SIM, RWMS, RPM, and AIP. This uses the platform configuration to call the EJBs. The user needs to put the necessary config files namely services_*.xml, jndi_providers_*.xml and service_flavors_*.xml of the particular rib-<app> under $HOME/rdmtXX/rib-app/extracted_conf_from_rib-<app>/retek folder before using this utility option. The user can also use the jndi_config_extractor.sh script for extracting the necessary config files from the system.
The jndi_config_extractor.sh script can be found under the RDMT home directory. The user needs to copy the jndi_config_extractor.sh script to the machine where the particular rib-<app> is deployed and then execute the script. The user can execute this script from any place in that machine. The user also needs to set JAVA_HOME before running this script. This script will extract the files namely services_*.xml, jndi_providers_*.xml and service_flavors_*.xml files of that particular rib-<app> instance by checking the entire file system. All the extracted xml files are finally zipped into xmlfiles.zip in the current directory from where this script was executed. The user then needs to transfer/ftp this xmlfiles.zip into the server where RDMT is installed and put these files under $HOME/rdmtXX/rib-app/extracted_conf_from_rib-<app>/retek folder.
After performing the above steps, the user can execute the RIB EJB Ping menu option.
Script Used:
appejbping.sh
Class:
RibMessagePublisherClient
Description:
This utility is developed to ping any <app> EJB component. This helps to test the connectivity between the rib-<app> and the <app> where app refers to only SIM, RPM and AIP. This uses the platform configuration to call the EJBs. The user needs to put the necessary config files namely services_*.xml, jndi_providers_*.xml and service_flavors_*.xml of the particular <app> under $HOME/rdmtXX/ app/extracted_conf_from_<app>/retek folder before using this utility option. The user can also use the jndi_config_extractor.sh script for extracting the necessary config files from the system.
The jndi_config_extractor.sh script can be found under the RDMT home directory. The user needs to copy the jndi_config_extractor.sh script to the machine where the particular <app> is deployed and then execute the script. The user can execute this script from any place in that machine. The user also needs to set JAVA_HOME before running this script. This script will extract the files namely services_*.xml, jndi_providers_*.xml and service_flavors_*.xml files of that particular <app> by checking the entire file system. All the extracted xml files are finally zipped into xmlfiles.zip in the current directory from where this script was executed. The user then needs to transfer/ftp this xmlfiles.zip into the server where RDMT is installed and put these files under $HOME/rdmtXX/app/extracted_conf_from_<app>/retek folder.
After performing the above steps, the user can execute the APP EJB Ping menu option
Using the RDMT Menu system, select the RIB Health SubMenu.
Execute RIB Config Report option. This produces the basic report on installation.
This scans the installations and configurations of rib applications deployed in oc4j. It finally produces a RIB OC4J configuration report on the console as well as written into a file under the RDMT Temp directory, which contain the status of all the RIB configurations necessary to detect/diagnose any RIB related issues.
If you find any discrepancies, refer to the RIB Installation Guide and follow the steps mentioned there.
Using the RDMT Menu system, select the RIB Health SubMenu.
Execute local OC4J status (opmn) option. It displays the current OC4j status.
If it is not running, start the local OC4J using the start instance (opmn) under the RIB Admin Menu.
Select RDMT Main Menu.
Execute the Scan RIB Logs option. It performs a log scan to look for a /pattern/ ("Exception") in all of the log files in a directory of the currently active OC4J instance.
Select JMS Topic Scan. Look for topics with messages stuck.
Select OC4J/JMX Utilities Menu.
Execute Status ALL Adapters option. It displays the status of all the adapters, namely the publishers, subscribers, hospital and TAFR for the currently active OC4J instance.
If anything is down, use the Start ALL adapters option and start the same.
Select OC4J/JMX Utilities Menu.
Execute OC4J/JMX Config Utility option.
Provide the desired parameters and configure an instance.
You can switch to the desired instance using the same option.