Check Composite State of Oracle SOA Suite by Command Line
I was currently fighting a bit with the monitoring of Oracle SOA Suite 12c Composites.
The goal was to check the state of deployed Composites on an Oracle SOA Suite 12c with following requirements/dependencies:
Property File domain.properties
Python Script check_composite_state.py
Wrapper Shell Script check_composite_state.sh
In line 13 of the Script, align the Variable OracleHome to your Oracle Home Location
In line 66 of the Script, align the directory location were to find the check_composite_state.py Python Script
Under the directory logs you will find an outfile with naming convention CompositeName.log with the Status of your Composite
Happy Composite State Checking ... :-)
The goal was to check the state of deployed Composites on an Oracle SOA Suite 12c with following requirements/dependencies:
- No Oracle Cloud Control
- Capture only Active Composites and not Retired Composites
- one main Pythin Script, called check_composite_state.py which is checking the State of a non retired given Composite Name for a given Partition|Folder and a given Managed Server
- one property file called domain.properties which will be used by the Python Script in order to build the required connect string to the Admin Server of the SOA Suite
- one wrapper Shell Script, which takes the required 3 Arguments (Name of Managed Server, Composite Name and Partition|Folder Name)
Property File domain.properties
# Replace the below given values with your settings admin.url=wlssoa1:7001 admin.userName=weblogic admin.password=Oracle12c
Python Script check_composite_state.py
# ============================================================
#
# Script: check_composite_state.py
#
# Author: Dirk Nachbar, http://dirknachbar.blogpost.com
#
# Purpose: Checks the state of a given Composite
# for Oracle SOA Suite 12c
#
# ============================================================
import sys;
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("domain.properties")
configProps = Properties()
configProps.load(propInputStream)
adminURL=configProps.get("admin.url")
adminUserName=configProps.get("admin.userName")
adminPassword=configProps.get("admin.password")
managedServer=sys.argv[1]
compositeName=sys.argv[2]
partitionName=sys.argv[3]
# Initialization of Logfile
f = File('logs/' + compositeName + '.log')
fos = FileOutputStream(f)
theInterpreter.setOut(fos)
# Perform the Connect to the AdminServer of the SOA Suite
connect(adminUserName,adminPassword,adminURL)
domainRuntime()
for n in mbs.queryNames(ObjectName('oracle.soa.config:Location=' + managedServer + ',partition=' + partitionName + ',j2eeType=SCAComposite,name="' + compositeName + '",*'), None):
RetiredFlag = mbs.getAttribute(n,'Mode')
if RetiredFlag != 'retired':
print 'Name: ' + mbs.getAttribute(n, 'Name')
print 'Mode: ' + mbs.getAttribute(n,'Mode')
print 'State: ' + mbs.getAttribute(n,'State')
Wrapper Shell Script check_composite_state.sh
In line 13 of the Script, align the Variable OracleHome to your Oracle Home Location
In line 66 of the Script, align the directory location were to find the check_composite_state.py Python Script
#!/bin/bash
# ============================================================
#
# Script: check_composite_state.sh
#
# Author: Dirk Nachbar, http://dirknachbar.blogspot.com
#
# Purpose: Wrapper Script to check the state of a given Composite
# for Oracle SOA Suite 12c
#
# ============================================================
OracleHome=/data/oracle/product/fmw-soa-12.2.1.2.0
#---------------------------------------------------------------------
Usage()
#
# PURPOSE: Displays the Usage of the script
#---------------------------------------------------------------------
{
cat << EOF
Usage: check_composite_state.sh -s <ManagedServer> -c <CompositeName> -p <Partition|Folder>
Monitoring script for SOA Suite Composite
Parameters:
-s: Name of the Managed SOA Server
-c: Name of Composite to be checked
-p: Name of Parition | Folder
e.g. check_composite_state.sh -s soa_server1 -c PayPal -p default
EOF
exit 1
}
#---------------------------------------------------------------------
CheckParams()
#
# PURPOSE: Checks the input Parmeter
#---------------------------------------------------------------------
{
if [ "${ManagedServer}" = "" ] ; then
echo "ERR: Missing parameter(s), the flags -s must be used."
Usage
fi
if [ "${CompositeName}" = "" ] ; then
echo "ERR: Missing parameter(s), the flags -c must be used."
Usage
fi
if [ "${Partition}" = "" ] ; then
echo "ERR: Missing parameter(s), the flags -p must be used."
Usage
fi
}
#---------------------------------------------------------------------
CallCheckCompositeState()
#
# PURPOSE: Calls the check_composite_state.py Script
#---------------------------------------------------------------------
{
${OracleHome}/oracle_common/common/bin/wlst.sh /home/oracle/check_composite_state.py ${ManagedServer} ${CompositeName} ${Partition}
}
#---------------------------------------------------------------------
# MAIN
#---------------------------------------------------------------------
ManagedServer=''
CompositeName=''
Partition=''
while getopts s:c:p:h: CurOpt; do
case ${CurOpt} in
s) ManagedServer="${OPTARG}" ;;
c) CompositeName="${OPTARG}" ;;
p) Partition="${OPTARG}" ;;
h) Usage exit 1 ;;
?) Usage exit 1 ;;
esac
done
shift $((${OPTIND}-1))
if [ $# -ne 0 ]; then
Usage
fi
# Check Input Parameters
CheckParams
# Start the Check State of Composite
CallCheckCompositeState
Create the 3 above provided files in one location, align the said Variables and/or directory location and create a subdirectory called "logs" in the directory. Than call the Wrapper Shell Script with following options:# # ./check_composite_state.sh -s <Name of Managed Server> -c <Composite Name> -p <Partition|Folder> # for example: ./check_composite_state.sh -s soa_server1 -c PayPal -p default
Under the directory logs you will find an outfile with naming convention CompositeName.log with the Status of your Composite
cd logs
cat PayPal.log
Connecting to t3://wlssoa1:7001 with userid weblogic ...
Successfully connected to Admin Server "DEVAdminServer" that belongs to domain "dev_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.
Location changed to domainRuntime tree. This is a read-only tree
with DomainMBean as the root MBean.
For more help, use help('domainRuntime')
Name: PayPal [1.0]
Mode: active
State: on
Happy Composite State Checking ... :-)










