设为首页 收藏本站
查看: 675|回复: 0

[经验分享] WebLogic监控脚本

[复制链接]

尚未签到

发表于 2017-2-14 09:24:07 | 显示全部楼层 |阅读模式
#!/bin/sh
#
# WebLogic Server Runtime Monitor
# Auth:liaos
# Date:2009-11-12
#
username="weblogic"
password="weblogic"
admserv_ip="localhost"
admserv_port="7001"
domain_name="domain"
wl_jar="/bea/weblogic/server/lib/weblogic.jar"
_get_server_list() {
server_list=`/usr/java6_64/bin/java -cp "$wl_jar" weblogic.Admin -url t3://"$admserv_ip":"$admserv_port" -username "$username" -password "$password" GET -pretty -type Server -property Name -property ListenAddress -property ListenPort | grep -v -e '^[-]' | grep -v 'MBeanName' | sed -e 's/ //g' | sed -e 's/^[^\w]//g' | awk '{print $0}' | awk '{ if (NR%3 != 0) ORS=","; else ORS="\n"; print} ' `
}
_get_server_property() {
server_property=`/usr/java6_64/bin/java -cp "$wl_jar" weblogic.Admin -url t3://"$1":"$2" -username "$username" -password "$password" GET -pretty -type ServerRuntime -property Name -property State | grep -v -e '^[-]' | grep -v 'MBeanName' | sed -e 's/ //g' | sed -e 's/^[^\w]//g' | awk '{print $0}' `
}
_get_server_name() {
_get_server_property $1 $2
server_name=`echo "$server_property" | grep "Name" | awk -F':' '{print $2}'`
}
_get_server_state() {
_get_server_property $1 $2
server_state=`echo "$server_property" | grep "State" | awk -F':' '{print $2}'`
}
_get_queue_list() {
queue_list=`/usr/java6_64/bin/java -cp "$wl_jar" weblogic.Admin -url t3://"$1":"$2" -username "$username" -password  "$password" GET -pretty -type ExecuteQueueRuntime -property Name -property ExecuteThreadCurrentIdleCount -property ExecuteThreadTotalCount | grep -v -e '^[-]' | grep -v 'MBeanName' | sed -e 's/ //g' | sed -e 's/^[^\w]//g' | awk '{print $0}' | awk '{ if (NR%3 != 0) ORS=","; else ORS="\n"; print} ' | grep -v 'weblogic' | grep -v 'wl' | grep -v 'Jms' | grep -v 'Manager' | awk '{print $0}' `
}
_get_server_jvm() {
server_jvm=`/usr/java6_64/bin/java -cp "$wl_jar" weblogic.Admin -url t3://"$2":"$3" -username "$username" -password "$password" GET -pretty -mbean "$domain_name:ServerRuntime=$1,Name=$1,Type=JVMRuntime,Location=$1" -property HeapFreePercent | grep "HeapFreePercent" | awk -F ':' '{print $2}'`
}
_get_pool_list() {
pool_list=`/usr/java6_64/bin/java -cp "$wl_jar" weblogic.Admin -url t3://"$1":"$2" -username "$username" -password "$password" GET -pretty -type JDBCConnectionPoolRuntime -property Name -property ActiveConnectionsCurrentCount -property Properties -property State -property MaxCapacity | grep -v -e '^[-]' | grep -v 'MBeanName' | sed -e 's/ //g' | sed -e 's/^[^\w]//g' | awk '{print $0}' | awk '{ if ( NR%5 !=0 ) ORS=","; else ORS="\n"; print}' `
}
_get_server_info() {
if [ -n "$1" -a -n "$2" ] ; then
_get_server_name $1 $2
server_list=`echo "ListenAddress:$1,ListenPort:$2,Name:$server_name"`
else
_get_server_list
fi
if [ -n "$server_list" ] ; then
echo "ServerName\tListenAddress\tListenPort\tRunState\tFreeMemoryPercent"
for server in $server_list
do
server_ip=`echo "$server" | sed -e 's/ //g' | awk -F ',' '{print $1}' | awk -F ':' '{print $2}'`
server_port=`echo "$server" | sed -e 's/ //g' | awk -F ',' '{print $2}' | awk -F ':' '{print $2}'`
server_name=`echo "$server" | sed -e 's/ //g' | awk -F ',' '{print $3}' | awk -F ':' '{print $2}'`
if [ -z "$server_ip" ] ; then
server_ip="$admserv_ip"
fi
_get_server_state $server_ip $server_port
_get_server_jvm $server_name $server_ip $server_port
echo "$server_name\t$server_ip\t$server_port\t\t$server_state\t\t$server_jvm"
done
fi
}
_get_queue_info() {
if [ -n "$1" -a -n "$2" ] ; then
_get_server_name $1 $2
server_list=`echo "ListenAddress:$1,ListenPort:$2,Name:$server_name"`
else
_get_server_list
fi
if [ -n "$server_list" ] ; then
echo "ServerName\tQueueName\tIdelThreads\tTotalThreads"
for server in $server_list
do
server_ip=`echo "$server" | sed -e 's/ //g' | awk -F ',' '{print $1}' | awk -F ':' '{print $2}'`
server_port=`echo "$server" | sed -e 's/ //g' | awk -F ',' '{print $2}' | awk -F ':' '{print $2}'`
server_name=`echo "$server" | sed -e 's/ //g' | awk -F ',' '{print $3}' | awk -F ':' '{print $2}'`
if [ -z "$server_ip" ] ; then
server_ip="$admserv_ip"
fi
_get_queue_list $server_ip $server_port
for queue in $queue_list
do
thread_idel=`echo "$queue" | awk -F ',' '{print $1}' | awk -F ':' '{print $2}'`
thread_total=`echo "$queue" | awk -F ',' '{print $2}' | awk -F ':' '{print $2}'`
queue_name=`echo "$queue" | awk -F ',' '{print $3}' | awk -F ':' '{print $2}'`
echo "$server_name\t$queue_name\t\t$thread_idel\t\t$thread_total"
done
done
fi
}
_get_pool_info() {
if [ -n "$1" -a -n "$2" ] ; then
_get_server_name $1 $2
server_list=`echo "ListenAddress:$1,ListenPort:$2,Name:$server_name"`
else
_get_server_list
fi
if [ -n "$server_list" ] ; then
echo "ServerName\tDataSource\tProperties\tState\tCurrentCount\tMaxCapacity"
for server in $server_list
do
server_ip=`echo "$server" | sed -e 's/ //g' | awk -F ',' '{print $1}' | awk -F ':' '{print $2}'`
server_port=`echo "$server" | sed -e 's/ //g' | awk -F ',' '{print $2}' | awk -F ':' '{print $2}'`
server_name=`echo "$server" | sed -e 's/ //g' | awk -F ',' '{print $3}' | awk -F ':' '{print $2}'`
if [ -z "$server_ip" ] ; then
server_ip="$admserv_ip"
fi
_get_pool_list $server_ip $server_port
for pool in $pool_list
do
current_count=`echo "$pool" | awk -F ',' '{print $1}' | awk -F ':' '{print $2}'`
max_capacity=`echo "$pool" | awk -F ',' '{print $2}' | awk -F ':' '{print $2}'`
datasource=`echo "$pool" | awk -F ',' '{print $3}' | awk -F ':' '{print $2}'`
db_user=`echo "$pool" | awk -F ',' '{print $4}' | awk -F ':' '{print $2}'`
pool_state=`echo "$pool" | awk -F ',' '{print $5}' | awk -F ':' '{print $2}'`
echo "$server_name\t$datasource\t$db_user\t$pool_state\t\t$current_count\t\t$max_capacity"
done
done
fi
}
list() {
_get_server_list
if [ -n "$server_list" ] ; then
echo "ServerName\tListenAddress\tListenPort"
for server in $server_list
do
server_ip=`echo "$server" | sed -e 's/ //g' | awk -F ',' '{print $1}' | awk -F ':' '{print $2}'`
server_port=`echo "$server" | sed -e 's/ //g' | awk -F ',' '{print $2}' | awk -F ':' '{print $2}'`
if [ -z "$server_ip" ] ; then
server_ip="$admserv_ip"
fi
_get_server_name $server_ip $server_port
echo "$server_name\t$server_ip\t$server_port"
done
fi
}
go_server_info() {
if [ "$#" -eq 3 ] ; then
_get_server_info $2 $3
else
_get_server_info
fi
exit 0;
}
go_queue_info() {
if [ "$#" -eq 3 ] ; then
_get_queue_info $2 $3
else
_get_queue_info
fi
exit 0;
}
go_pool_info() {
if [ "$#" -eq 3 ] ; then
_get_pool_info $2 $3
else
_get_pool_info
fi
exit 0;
}
help() {
cat <<EOF
wlsm -- WebLogic Server Monitor
USAGE: wlsm.sh [-h] [-l] [-s] [-q] [-p] [listen_address] [listen_port]
OPTIONS: -h help text.
-l list all server info,
-s [listen_address,listen_port] for runtime state of server,
-q [listen_address,listen_port] for queue thread state of server,
-p [listen_address,listen_port] for connection pool state of server,
EXAMPLE: wlsm.sh -s 10.131.54.11 8080
EOF
exit 0;
}
while [ -n "$1" ]; do
case $1 in
-h) help; exit 0;;
-l) list; exit 0;;
-s*) go_server_info $1 $2 $3; shift 1;;
-q*) go_queue_info $1 $2 $3; shift 1;;
-p*) go_pool_info $1 $2 $3; shift 1;;
-*) echo "error : no such option $1. -h for help"; exit 0;;
*) break;;
esac
done
if [ -z "$1" ] ; then
help; exit 0;;
fi

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-341867-1-1.html 上篇帖子: weblogic部署cas 下篇帖子: WebLogic Depoly ejbc (转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表