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:
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:
#!/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:
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:
# ============================================================
#
# 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:
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:
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