WebLogic运行状况监控

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在WebLogic的日常监控管理工作中,经常会涉及到检查JVM的各块内存空间使用状况,已经WEB模块的活动会话数等信息来分析当前JVM运行的健康状态以及历史健康记录。以下可以通过一段小脚本将jstat命令以及weblogic.Admin类中获取到的内存使用率及会话数记录到一个文件中,使用图形工具来分析JVM一天的总体运行状况。

以下假设我们的JVM运行在Linux5.4环境中,JVM版本Java HotSpot(TM) 64-Bit Server VM 1.6.0_21,监控脚本如下:

 文件名:monitorjvm.sh

####################################################################
####################################################################
JAVA_HOME=/usr/jdk1.6.0_21
export JAVA_HOME
PATH=${JAVA_HOME}/bin:${PATH}
export PATH

WLS_HOME=/bea/wlserver_10.3
export WLS_HOME
CLASSPATH=${CLASSPATH}:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/jconsole.jar:${WLS_HOME}/server/lib/weblogic.jar:${WLS_HOME}/server/lib/webservices.jar:.
export CLASSPATH

JVM_MONITOR_HOME=/root
export JVM_MONITOR_HOME
cd ${JVM_MONITOR_HOME}

ADM_SERVER_LIST_FILE=wlsAdmServers.properties
sysdate=`date -d today +"%Y%m%d"`
systime=`date -d today +"%H:%M:%S"`

####################################################################
#                     main script starting.......                ###
####################################################################
username=`sed -e '/^username/!d' wlsAdmServers.properties|awk -F= '{print $2}'`
password=`sed -e '/^password/!d' wlsAdmServers.properties|awk -F= '{print $2}'`
urls=(`sed -e '/^url/!d' wlsAdmServers.properties|awk -F= '{print $2}'`)

len=${#urls[*]}
i=0
while [ $i -lt $len ]
do
    ####  echo "url: ${urls[$i]}" ### this code is only for testing ###
    protocal=`echo ${urls[$i]}|awk -F: '{print $1}'`
    hostaddress=`echo ${urls[$i]}|awk -F: '{print $2}'|awk -F// '{print $2}'`
    hostname=`hostname`
    port=`echo ${urls[$i]}|awk -F: '{print $3}'`
    tmpmonitorfile=jvmheap_${hostname}_${port}_${sysdate}
    tmpmbeanfile=appinfo_${hostaddress}_${port}_${sysdate}
    tmpwebmbeanfile=webinfo_${hostaddress}_${port}_${sysdate}

    JVM_PID=`/usr/sbin/lsof -i:${port}|grep LISTEN|grep ${hostname}|awk '{print $2}'`
    echo "@@@ [PID:${JVM_PID}] of ${hostaddress}:${port} @@@"
if [ "${JVM_PID}" ]; then
				if [ ! -f "${tmpmonitorfile}" ]; then
	              ##### touch "${tmpmonitorfile}"
	              jstat -gcutil ${JVM_PID}|sed "s/^/SYSTIME\t\tPID\t/"|sed "/FGCT/!s/SYSTIME\t/${systime}/g;/FGCT/!s/PID/${JVM_PID}/g" >> ${tmpmonitorfile}
	      else
	              jstat -gcutil ${JVM_PID}|grep -v FGCT|sed "s/^/${systime}\t${JVM_PID}\t/" >> ${tmpmonitorfile}
	    	fi
	    	passwordtmp=`ps -ef|grep java|grep ${JVM_PID}|awk '{split($0,m);{for (item in m){if(index(m[item],"password")>0){print m[item]}}}}'|awk -F= '{print $2}'`
	    	if [ -z "${passwordtmp}" ]; then
	    		passwordtmp=${password}
	    	fi
        java weblogic.Admin -url ${urls[$i]} -username ${username} -password ${passwordtmp} query -pretty -pattern "*:Name=AdminServer_/web,Type=WebAppComponentRuntime,*"|sed -e '/----------/b' -e '/OpenSessions/b' -e d|sed 2"i\TIME[${systime}]"  >> ${tmpwebmbeanfile}

      fi

    let i++
done

####################################################################
#                         Game Over                              ###
####################################################################

 

另外,需要一个小小的配置文件:wlsAdmServers.properties 

username=weblogic
password=weblogic

url=t3://hostname1:7001
url=t3://hostname1:8001

 

将以上脚本添加到系统定时任务如下:

1-59/5 * * * * /root/monitorjvm.sh >/dev/null 2>&1

在添加crontab定时任务时,如果遇到系统命令找不到或无法识别的时候,试试使用全路径的命令来操作。

 

在以上的工作全部完成后,可以将生成的数据文件下载到本地,通过一个图形工具生成如下的报表文件,另外可以生成HTML格式的日报或者周报之类的文件,具体什么模样就可以发挥各位的想象力来做了,我做出的报表是这个样子的:

转载于:https://my.oschina.net/cbcgorilla/blog/13511

你可能感兴趣的:(WebLogic运行状况监控)