If you need to define an alert for the weblogic instance that running on linux server, please take a look this bash script. You should add your instance name to the configuration file. This script will create an alert if any weblogic instance is down on the server. I added alert commands for HP Operation Manager. You can change them as you wish.
Also I added weblogic status control script. This scripts will check and list weblogic servers, nodemanagers. You should define alias to check status easily.
Step 1: Shell Script to create alert
Before running script:
- Change “Config_File” directory on the script.
- Create “instance.config” file under your config directory.
- Add your instance name to the config file.
Weblogic Monitor Scripts:
# cat instance.config AdminServer bi_server1
#!/bin/bash ########################################################## # Abdurrahim YILDIRIM # ########################################################## VALUE_CHECK=`ps -awwx |grep -v "grep"| grep "weblogic.Name" |grep "sl"| awk 'BEGIN { Config_File=/unixadmin/controlfile print } ; { NUM = match($0, "weblogic.Name=") ; START_POS = RSTART+RLENGTH ; START_STR = substr($0, START_POS) ; FINISH = match(START_STR, " ") ; FINISH_POS = START_POS+RSTART+RLENGTH ; FINISH_STR = substr($0, START_POS, FINISH_POS) ; NUM = split(FINISH_STR,FINISH_ARRAY) ; printf ("%s'='%s\n",$1, FINISH_ARRAY[1]) ; } END { }'` for i in $(cat $Config_File/instance.config) do DEG_PID=`echo "$VALUE_CHECK"|grep $i|cut -d '=' -f 1,1` DEG_Instance=`echo "$VALUE_CHECK"|grep $i|cut -d '=' -f 2,2` if [ -z "$DEG_PID" ] || [ -z "DEG_Instance" ] then if [ ! -f $Config_File/$DEG_Instance ] then /opt/OV/bin/opcmsg a=BI_Control o=BI_Control severity=Critical msg_text="`hostname` Weblogic Instance($DEG_Instance) Problem " node=`hostname` touch $Config_File/$DEG_Instance fi else if [ -f $Config_File/$DEG_Instance ] then /opt/OV/bin/opcmsg a=BI_Control o=BI_Control severity=Normal msg_text="`hostname` Weblogic Instance($DEG_Instance) Fixed !!! " node=`hostname` rm -rf $Config_File/$DEG_Instance fi fi done
Step 2: Service status alias scripts
Before running script:
- Define alias for your user in .bashrc file.Do not forget to change “/appdata/controlfile/” path where you will locate your weblogic status control script.
Weblogic Status Control Scripts:
# cat .bashrc# .bashrc# User specific aliases and functionsalias rm='rm -i'alias cp='cp -i'alias mv='mv -i'alias weblogiclist='/unixadmin/controlfile/listweblogic.sh'alias weblogiclistkill='/unixadmin/controlfile/listweblogic.sh kill'# Source global definitionsif [ -f /etc/bashrc ]; then. /etc/bashrcfi
#!/bin/bash ########################################################## # Abdurrahim YILDIRIM # ########################################################## DOMAIN_DIRECTORY="domains" echo "################################################################################################" echo " ######################################## " echo " #############WEBLOGICS################## " echo " #####################E################## " echo " #####################R################## " echo " #####################V################## " echo " #####################E################## " echo " #####################R################## " echo " #####################S################## " printf "%-20s%-20s%-20s%-20s%-20s\n" "Owner" "Domain" "Server" "PID" "Ports" printf "%-20s%-20s%-20s%-20s%-20s\n" "-----" "------" "------" "---" "-----" ps -ef | grep "[D]weblogic.Name="|while read tmp do owner=`echo $tmp | awk '{ print $1 }'` webLogicServer=`echo $tmp | grep -oP "(?<=Dweblogic.Name=)[^ ]+"` pid=`echo $tmp | awk '{ print $2 }'` port=`echo $tmp | netstat -tlpn 2>/dev/null | grep $pid | awk '{ print $4 }' | tr '\n' ',' | tr ' ' ',' | grep -o ":....," | sort -u | tr -d '\n' | tr -d ':' | sed 's/,$//'` if [ -z "$port" ]; then port="null" fi domain=`echo $tmp | grep -oP "(?<=BootIdentityFile=)[^ ]+"` domain=`echo $domain | grep -oP "(?<=$DOMAIN_DIRECTORY/)[^ ]+" | cut -d/ -f1` if [ -n "$1" ]; then printf "%-20s%-20s%-20s%-20s%-20s%-20s\n" "$owner" "$domain" "$webLogicServer" "$pid" "$port" "kill -9 $pid" else printf "%-20s%-20s%-20s%-20s%-20s\n" "$owner" "$domain" "$webLogicServer" "$pid" "$port" fi done echo echo "################################################################################################" echo " ######################################## " echo " #############MANAGERS################### " echo " ###############O######################## " echo " ###############D######################## " echo " ###############E######################## " echo " ######################################## " printf "%-20s%-20s%-20s%-20s%-20s\n" "Owner" "Domain" "Server" "PID" "Ports" printf "%-20s%-20s%-20s%-20s%-20s\n" "-----" "------" "------" "---" "-----" ps -ef | grep "[w]eblogic.NodeManager"|while read tmp do owner=`echo $tmp | awk '{ print $1 }'` pid=`echo $tmp | awk '{ print $2 }'` port=`echo $tmp | netstat -tlpn 2>/dev/null | grep $pid | awk '{ print $4 }' | tr '\n' ',' | tr ' ' ',' | grep -o ":....," | sort -u | tr -d '\n' | tr -d ':' | sed 's/,$//'` if [ -z "$port" ]; then port="null" fi mw_home=`echo $tmp | grep -oP "(?<=bea.home=)[^ ]+"` if [ -n "$1" ]; then printf "%-20s%-20s%-20s%-20s%-20s%-20s\n" "$owner" "$domain" "$webLogicServer" "$pid" "$port" "kill -9 $pid" else printf "%-20s%-20s%-20s%-20s%-20s\n" "$owner" "$domain" "$webLogicServer" "$pid" "$port" fi done
# weblogiclist ################################################################################################ ######################################## #############WEBLOGICS################## #####################E################## #####################R################## #####################V################## #####################E################## #####################R################## #####################S################## Owner Domain Server PID Ports ----- ------ ------ --- ----- oracle bi AdminServer 23768 9501 oracle bi bi_server1 24210 9502,9503,9505,9516 ################################################################################################ ######################################## #############MANAGERS################### ###############O######################## ###############D######################## ###############E######################## ######################################## Owner Domain Server PID Ports ----- ------ ------ --- ----- oracle 23504 9506 [root@Casesup ~]# weblogiclistkill ################################################################################################ ######################################## #############WEBLOGICS################## #####################E################## #####################R################## #####################V################## #####################E################## #####################R################## #####################S################## Owner Domain Server PID Ports ----- ------ ------ --- ----- oracle bi AdminServer 23768 9501 kill -9 23768 oracle bi bi_server1 24210 9502,9503,9505,9516 kill -9 24210 ################################################################################################ ######################################## #############MANAGERS################### ###############O######################## ###############D######################## ###############E######################## ######################################## Owner Domain Server PID Ports ----- ------ ------ --- ----- oracle 23504 9506 kill -9 23504
Thanks Peter for Weblogic status control script. I changed script because of column function doesn’t work correctly.