SOA 12.2.1.2.0: Schedule your Integration Workload Statistics (IWS) Report by Command Line
Posted by Dirk Nachbar on Thursday, February 09, 2017
From Oracle SOA Suite 12.2.1 on, Oracle added a nice feature - The Integration Workload Statistics, which you can compare to an Oracle Database AWR report for your SOA Suite.
Kevin King from AVIO Consulting has released for this a really good blog post about the IWS http://www.avioconsulting.com/blog/no-more-hidden-soa-performance-problems
As I am more coming from the Administration site, I prefer to have script-based solutions.
Here I will show you how to scheduled an automated way for the generation of your Integration Workload Statistics including mailing of the report for UNIX platforms:
On your server which is hosting your SOA suite simply perform following steps as SOA Suite Software owner:
Create in the new folder $HOME/iws_report a script called create_soa_iws_report.ksh with following content:
Create in the folder $HOME/iws_report a property file with following naming convention <your_managed_server_name>.properties and fill it with following content:
Moreover we need in the $HOME/iws_report directory a Python script named soa_iws_report.py with following content:
After that validate that the IWS is activated, either by Enterprise Manager Fusion Middleware or with wlst:
Perform some activities on your SOA Suite and after some time run the create_soa_iws_report.ksh:
Now you should find in your Inbox for your Mail your IWS Report and under the $HOME/iws_report/logs directory the generated HTML IWS Report.
Kevin King from AVIO Consulting has released for this a really good blog post about the IWS http://www.avioconsulting.com/blog/no-more-hidden-soa-performance-problems
As I am more coming from the Administration site, I prefer to have script-based solutions.
Here I will show you how to scheduled an automated way for the generation of your Integration Workload Statistics including mailing of the report for UNIX platforms:
On your server which is hosting your SOA suite simply perform following steps as SOA Suite Software owner:
1 2 3 | cd $HOME mkdir -p iws_report /logs cd iws_report |
Create in the new folder $HOME/iws_report a script called create_soa_iws_report.ksh with following content:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | #!/bin/ksh # # Author: Dirk Nachbar # # Purpose: Script to create an IWS Report for a given SOA Domain # and Managed Server # #--------------------------------------------------------------------- #--------------------------------------------------------------------- # CONSTANTS #--------------------------------------------------------------------- MyName= "$(basename $0)" # Align the value for your Middleware Home directory MW_HOME= /u00/app/oracle/product/fmw-soa-12 .2.1.2.0 WorkDir=` pwd ` #--------------------------------------------------------------------- Usage() # # PURPOSE: Verwendung #--------------------------------------------------------------------- { echo "ERR: create_soa_iws_report.ksh called with wrong parameters" cat <<_EOI SYNOPSIS create_soa_iws_report.ksh -d <Domain_Name> -s <ManagedServer> -t <Number of Hours to look back> DESCRIPTION Creation of IWS Report for a given SOA Domain and Managed Server _EOI exit 1 } #--------------------------------------------------------------------- CheckParams() # # PURPOSE: Checks the input Parmeters #--------------------------------------------------------------------- { if [ "${TheDomain}" = "" ] ; then echo "ERR: Missing parameter(s), the flags -d must be used." Usage fi if [ "${TheManagedServer}" = "" ] ; then echo "ERR: Missing parameter(s), the flags -s must be used." Usage fi if [ "${TheHoursBack}" = "" ] ; then echo "ERR: Missing parameter(s), the flags -t must be used." Usage fi } #--------------------------------------------------------------------- CreateIWSReport() # # PURPOSE: Creates an IWS Report for the given ManagedServer # #--------------------------------------------------------------------- { echo "STARTING: Creating IWS Report for ${TheDomain} / ${TheManagedServer} over the last ${TheHoursBack} hours" HighDate= "$(date '+%Y-%m-%dT%H:%M:%S+0200')" LowDate=$( eval "date '+%Y-%m-%dT%H:%M:%S+0200' -d '${TheHoursBack} hours ago'" ) LogFileDate= "$(date '+%Y-%m-%d_%H:%M:%S')" export TheLogFile=${WorkDir} /logs/iws_report_ ${TheDomain}_${TheManagedServer}_${LogFileDate}.html ${MW_HOME} /oracle_common/common/bin/wlst .sh ${WorkDir} /soa_iws_report .py ${TheManagedServer} ${LowDate} ${HighDate} echo "DONE: Creating IWS Report for ${TheDomain} / ${TheManagedServer} over the last ${TheHoursBack} hours" echo "INFO: IWS Report = ${TheLogFile}" } #--------------------------------------------------------------------- MailIWSReport() # # PURPOSE: Mail the prior create IWS Report # #--------------------------------------------------------------------- { # Getting the Email Recipients ConfigFile=${TheManagedServer}.properties TheMailRecipients= "$(cat ${WorkDir}/${ConfigFile} | grep -i " ^mailrecipients= " | head -n 1 | cut -d= -f2-)" TheEmailSubject= "IWS for ${TheDomain} - ${TheManagedServer}" echo "STARTING: Mail the IWS Report ${TheLogFile}" echo "IWS Report" | mailx -s "${TheEmailSubject}" -a ${TheLogFile} ${TheMailRecipients} echo "DONE: Mail the IWS Report ${TheLogFile}" } #--------------------------------------------------------------------- # MAIN #--------------------------------------------------------------------- TheDomain= "" TheManagedServer= "" TheHoursBack= "" while getopts d:s:t:h: CurOpt; do case ${CurOpt} in d) TheDomain= "${OPTARG}" ;; s) TheManagedServer= "${OPTARG}" ;; t) TheHoursBack= "${OPTARG}" ;; h) Usage exit 1 ;; ?) Usage exit 1 ;; esac done shift $((${OPTIND}-1)) if [ $ # -ne 0 ]; then Usage fi CheckParams CreateIWSReport MailIWSReport |
Create in the folder $HOME/iws_report a property file with following naming convention <your_managed_server_name>.properties and fill it with following content:
1 2 3 4 5 | domain.name=<your_domain_name> soa.url=<your_server_name>:<port_of_your_managed_server> admin.userName=weblogic admin.password=<password_of_weblogic_user> mailrecipients=<email> |
Moreover we need in the $HOME/iws_report directory a Python script named soa_iws_report.py with following content:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | # ============================================================ # # Script: soa_iws_report.py # # Author: Dirk Nachbar # # Purpose: Generates an IWS Report based on input time range # # ============================================================ import sys, os, getopt from java.util import Date from java.text import SimpleDateFormat from java.io import File from java.io import FileOutputStream from java.io import FileInputStream # Load the WLS Connection Credential and establish the connection propInputStream = FileInputStream(sys.argv[ 1 ] + ".properties" ) # propInputStream = FileInputStream("domain.properties") configProps = Properties() configProps.load(propInputStream) domainName = configProps.get( "domain.name" ) soaURL = configProps.get( "soa.url" ) adminUserName = configProps.get( "admin.userName" ) adminPassword = configProps.get( "admin.password" ) LogFile = os.environ[ 'TheLogFile' ] connect(adminUserName,adminPassword,soaURL) getSoaIWSReportByDateTime(sys.argv[ 1 ], 0 , sys.argv[ 2 ], sys.argv[ 3 ], 'default' , None , 10 , 'html' , LogFile) disconnect() |
After that validate that the IWS is activated, either by Enterprise Manager Fusion Middleware or with wlst:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | cd $ORACLE_HOME / oracle_common / common / bin . / wlst.sh Initializing WebLogic Scripting Tool (WLST) ... Welcome to WebLogic Server Administration Scripting Shell Type help () for help on available commands wls: / offline> connect( 'weblogic' , '<your_weblogic_password>' , '<your_server_name>:<port_of_your_managed_server>' ) # Check the current status of the IWS wls: / demo_domain / serverConfig / > getSoaIWSStatisticsLevel() Successfully executed the command. SOA IWS Statistics Level is : OFF # Check the current Snapshot Interval for IWS wls: / demo_domain / serverConfig / > getSoaIWSSnapshotInterval() Successfully executed the command. SOA IWS Snapshot Interval is : 10 minutes. # List all available Statistics Levels wls: / demo_domain / serverConfig / > getSoaIWSStatisticsLevelList() Successfully executed the command. SOA IWS Statistics Level List : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FINEST NORMAL BASIC MINIMUM OFF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Set your IWS Statistics Level, e.g. NORMAL wls: / demo_domain / serverConfig / > setSoaIWSStatisticsLevel( 'NORMAL' ) # Validate your IWS Statistics Level wls: / demo_domain / serverConfig / > getSoaIWSStatisticsLevel() Successfully executed the command. SOA IWS Statistics Level is : NORMAL wls: / demo_domain / serverConfig / > exit() |
Perform some activities on your SOA Suite and after some time run the create_soa_iws_report.ksh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | cd $HOME /iws_report . /create_soa_iws_report .ksh ERR: Missing parameter(s), the flags -d must be used. ERR: create_soa_iws_report.ksh called with wrong parameters SYNOPSIS create_soa_iws_report.ksh -d <domain_name> -s <managedserver> -t <Number of Hours to look back> DESCRIPTION Creation of IWS Report for a given SOA Domain and Managed Server . /create_soa_iws_report .ksh -d demo_domain -s soa_server1 -t 1 STARTING: Creating IWS Report for demo_domain / soa_server1 over the last 1 hours Initializing WebLogic Scripting Tool (WLST) ... Welcome to WebLogic Server Administration Scripting Shell Type help() for help on available commands Connecting to t3: //soaserver1 :7004 with userid weblogic ... Successfully connected to managed Server "soa_server1" that belongs to domain "demo_domain" . Warning: An insecure protocol was used to connect to the server. To ensure on-the-wire security, the SSL port or Admin port should be used instead. Successfully executed the command . Report generated in the file given. Disconnected from weblogic server: soa_server1 DONE: Creating IWS Report for demo_domain / soa_server1 over the last 1 hours INFO: IWS Report = /home/oracle/iws_report/logs/iws_report_demo_domain_soa_server1_2017-02-09_15 :58:23.html STARTING: Mail the IWS Report /home/oracle/iws_report/logs/iws_report_demo_domain_soa_server1_2017-02-09_15 :58:23.html DONE: Mail the IWS Report /home/oracle/iws_report/logs/iws_report_demo_domain_soa_server1_2017-02-09_15 :58:23.html |
Now you should find in your Inbox for your Mail your IWS Report and under the $HOME/iws_report/logs directory the generated HTML IWS Report.
Categories: Oracle WebLogic Server 12c, SOA 12c