利用shell bash脚本实时监控weblogic运行情况

2023-11-10

主要用到了expect远程登录工具用来获取进程id和cpu消耗以及weblogic提供的jar包中weblogic.Admin方法来获取weblogic的运行状态。

如果用java后台写的话也是比较简单的。


testWeblogic.sh    

主脚本


#!/bin/bash
#检测weblogic server运行状态
#testWeblogic.sh
#xuwangcheng created 2016.11

#捕捉异常退出
trap "error_exit" 1 2 3 24

###############################################################################
#配置文件
configFile="./test.cfg"

#weblogic信息
weblogicCfg="./testWeblogic.config"

#日志输出文件
logFile="./test.log"

#结果输出文件
resultFile="./result.log"

#关键日志的errorlog
weblogicLog="./weblogic.log"

#搜索weblogci关键日志的关键string
findLogString="<Error>"


#############################################################################
#本地环境weblogic.jar位置
#CLASSPATH

#要检查的weblogic数量
#WEBLOGIC_NUM

#调用webservice接口
#接口地址(不带IP和端口)
#CALL_SERVICE_ADDRESS

#报文
#CALL_MSG


#测试HTTP请求页面地址
#HTTP_URL


#测试HTTP请求返回页面的正确性
#HTTP_VALIDATION_STR

#测试调用接口返回是否正确
#CALL_MSG_VALIDATION_STR

##############################################################
>$logFile
>$resultFile
>lock.lock
>$weblogicLog
rm -f error.lock
#########################################Function########################################

#日志记录
note_log()
{
	local Str=$1
	echo -e "["`date +'%Y-%m-%d %H:%M:%S'`"]$Str" >> $logFile
}


#结果记录
note_result(){
	local Str=$1
	echo -e "$Str" >> $resultFile
}

#退出脚本
my_exit(){
	ti=$1
	if [ $ti -eq 1 ]
	then
		>error.lock
	fi
	rm -f *.temp
	rm -f lock.lock
	note_log "临时文件已删除,脚本已退出"
	exit $ti
}


#异常退出
error_exit(){
	rm -f *.temp
	rm -f lock.lock
	>error.lock
	note_log "脚本异常结束"
	exit 1
}

#检查配置文件
test_cfg(){
	note_log "开始检查配置文件${configFile},${weblogicCfg}"
	
	if [ ! -f ${configFile} ]
	then
		note_log "${configFile}配置文件不存在,请检查!"
		my_exit 1
	fi
	
	if [ ! -f ${weblogicCfg} ]
	then
		note_log "${weblogicCfg}配置文件不存在,请检查!"
		my_exit 1
	fi
	
	cat ${configFile}|sed '/^#/d'|sed '/^$/d' >configFile.temp
	cat ${weblogicCfg}|sed '/^#/d'|sed '/^$/d' >weblogicCfg.temp
}


#读取配置文件,获取全局配置信息
read_cfg(){
	note_log "开始获取全局配置信息"
	fgrep -A7 "[global_cfg]" configFile.temp |sed '1d' > aa.temp
	
	if [ ! -s aa.temp ]
	then
		note_log "没有获取到[global_cfg]全局配置信息,检查配置文件${configFile}"
		my_exit 1		
	fi
	
	while read LINE
	do
		eval echo \${$LINE} >/dev/null 2>&1
	done<aa.temp
		
	note_log "读取全局配置成功"
}

#远程连接主机的工具
testExpect(){
		loginStr=$1
		password=$2
		send_cmd=$3
		expect -c "
		spawn ssh ${loginStr}@${IP};
		expect \"*yes/no*\"  {send \"yes\r\";exp_continue}
		expect \"*password:*\"  {send \"$password\r\"}
		expect \"*from*\"  {send \"$send_cmd\r\"}
		set timeout 2
		send \"exit\r\"
		expect eof
		"
}



#调用webservice
call_service(){
	responseTime=`curl -o /dev/null -s -w %{time_total} -d "${CALL_MSG}" "http://${URL}/${CALL_SERVICE_ADDRESS}"`
	if [ "$?" -eq "0" ]
	then
		note_log "调用接口成功 响应时间 [$responseTime]"
		note_result "${LINE1}.callService.status=OK"
		note_result "${LINE1}.callService.responseTime=$responseTime"
	else
		note_log "调用接口失败。"
		note_result "${LINE1}.callService.status=FAIL"
	fi
}


#检查http返回的页面
call_http(){
	if [ ! "$HTTP_URL" == "" ]
	then
	curl -s ${HTTP_URL}|fgrep -q ${HTTP_VALIDATION_STR}
	
	if [ $? -eq 0 ]
	then
		note_log "请求HTTP成功,返回正确"
		note_result "${LINE1}.callHttp.status=OK"
	else
		note_log "请求HTTP不成功或者返回了错误的内容"
		note_result "${LINE1}.callHttp.status=FAIL"
	fi
	fi
}


#检查weblogic的详细信息
test_weblogic(){

		note_log "开始检查$URL $DOMAIN_NAME $SERVER_NAME ..."
		
		
		
		IP=`echo $URL|awk -F":" '{print $1}'`
		PORT=`echo $URL|awk -F":" '{print $2}'`
		
		#远程登陆webllogic主机
		cmd_1="ps auxwh|fgrep -v fgrep|fgrep java"
		
		note_log "远程登陆主机$IP...执行命令[${cmd_1}]"
		
		testExpect $LOGIN_STR $LOGIN_PASSWORD "${cmd_1}" >expectlog.temp
		
		rt=`fgrep "Connection" expectlog.temp` 2>/dev/null
		tt=`fgrep "--help" expectlog.temp` 2>/dev/null
		if [[ -n "$rt" && -z "$tt" ]]
		then
			note_log "远程登录主机$IP失败..."
			continue
		fi
		
		note_log "登陆主机$IP成功,执行命令[${cmd_1}]成功"
		
		#获取weblogic的java进程信息和CPU消耗
		cpu_num_1=`cat expectlog.temp|fgrep java|fgrep ${PORT}|awk '{print $3}'`
		#获取PID
		java_pid=`cat expectlog.temp|fgrep java|fgrep ${PORT}|awk '{print $2}'`
		if [ -z $cpu_num_1 ]
		then
			note_log "${IP}主机上面没有发现指定的weblogic的java进程信息,请检查进程是否已挂掉"
			note_result "${LINE1}.java.pid=0"
			continue
		fi
		
		note_log "当前进程PID${java_pid}消耗主机CPU的百分比为${cpu_num_1}%"	
		
		note_result	"${LINE1}.java.pid=${java_pid}\n${LINE1}.java.cpu=${cpu_num_1}"

		#获取weblogic关键日志
				
		#远程登陆webllogic主机
		cmd_2="fgrep -A200 ${findLogString} ${LOG_PATH}"
		note_log "远程登陆主机$IP...执行命令[${cmd_2}]"		
		testExpect $LOGIN_STR $LOGIN_PASSWORD "${cmd_2}" >expectlog.temp
		
		rt=`fgrep "Connection" expectlog.temp` 2>/dev/null
		tt=`fgrep "--help" expectlog.temp` 2>/dev/null
		if [[ -n "$rt" && -z "$tt" ]]
		then
			note_log "远程登录主机$IP失败..."
			continue
		fi
		
		note_log "登陆主机$IP成功,执行命令[${cmd_2}]成功"
		
		echo "[$URL $DOMAIN_NAME $SERVER_NAME $LOG_PATH]">>$weblogicLog
		
		fgrep -A200 ${findLogString} expectlog.temp >> $weblogicLog
		
		if [ $? -ne 0 ]
		then
			echo "没有搜索到指定的weblogic日志">>$weblogicLog	
		fi
		
		note_log "已保存搜索到的weblogic日志,日志路径$weblogicLog"
		
		note_result "${LINE1}.errorLog=${weblogicLog}"
		
		#验证是否能够执行weblogic.Admin
		
		> weblogicStatus.temp
		java weblogic.Admin -url $URL -username $USERNAME -password $PASSWORD get -pretty -mbean "$DOMAIN_NAME:Location=$SERVER_NAME,Name=$SERVER_NAME,Type=ServerRuntime" >/dev/null 2>&1
		
		if [ $? -ne 0 ]
		then
			note_log "执行命令weblogic.Admin命令失败,请检查环境变量配置"
			note_result "${LINE1}.AdminPermission=FAIL"
			my_exit 1
		fi
		
		note_result "${LINE1}.AdminPermission=OK"
		
		java weblogic.Admin -url $URL -username $USERNAME -password $PASSWORD get -pretty -mbean "$DOMAIN_NAME:Location=$SERVER_NAME,Name=$SERVER_NAME,Type=ServerRuntime" >weblogicStatus.temp 
		
		#检查运行状态
		fgrep -q "State: RUNNING" weblogicStatus.temp
		
		if [ $? == 0 ]; then
    	note_log "检查运行状态Run Status [OK]"
    	note_result "${LINE1}.runStatus=OK"
		else
    	note_log "检查运行状态Run Status [NOT OK]"
    	note_result "${LINE1}.runStatus=NOT OK"
		fi
	
		#检查健康状态	
		fgrep -q "State:HEALTH_OK" weblogicStatus.temp
		if [ $? == 0 ]; then
    	note_log "检查健康状态Health Status [OK]"
    	note_result "${LINE1}.healthStatus=OK"
		else
    	note_log "检查健康状态Health Status [NOT OK]"
    	note_result "${LINE1}.healthStatus=NOT OK"
		fi
		
		#检查打开的套接字数
		SOCKET_NOW=`cat weblogicStatus.temp | fgrep "OpenSocketsCurrentCount"|awk -F":" '{print $2}'`
		if [ "x$SOCKET_NOW" == "x" ]
		then
    	note_log "检查当前套接字数Open Sockets Number [FAIL TO GET]"
    	note_result "${LINE1}.openSocketsNumber=FAIL"
		else
			note_log "检查当前套接字数Open Sockets Number [OK] 当前打开数$SOCKET_NOW"
			note_result "${LINE1}.openSocketsNumber=$SOCKET_NOW"
		fi	
		
		#检查JVM使用情况
		note_log "开始检查当前weblogic的JVM使用情况"
		java weblogic.Admin -url $URL -username $USERNAME -password $PASSWORD get -pretty -type JVMRuntime|head -20 >weblogicStatus.temp
		
		#当前总大小
		jvm_curr_size=`fgrep "HeapSizeCurrent" weblogicStatus.temp|awk -F":" '{print $2}'`
		#最大值
		jvm_max_size=`fgrep "HeapSizeMax" weblogicStatus.temp|awk -F":" '{print $2}'`
		#当前空闲
		jvm_free_size=`fgrep "HeapFreeCurrent" weblogicStatus.temp|awk -F":" '{print $2}'`
		#空闲百分比
		jvm_free_percent=`fgrep "HeapFreePercent" weblogicStatus.temp|awk -F":" '{print $2}'`
		
		if [[ -n ${jvm_curr_size} && -n ${jvm_max_size} && -n ${jvm_free_size} && -n ${jvm_free_percent} ]]
		then
			note_log "检查JVM使用情况完毕:"
			note_log "max_size=${jvm_max_size},current_size=${jvm_curr_size},free_size=${jvm_free_size},free_percent=${jvm_free_percent}"
			note_result "${LINE1}.jvm.maxSize=${jvm_max_size}\n${LINE1}.jvm.currentSize=${jvm_curr_size}\n${LINE1}.jvm.freeSize=${jvm_free_size}\n${LINE1}.jvm.freePercent=${jvm_free_percent}"
		else
			note_log "执行weblogic.Admin命令失败,请检查"
			note_result "${LINE1}.jvm=FAIL"
		fi
		
		#检查队列情况
		note_log "开始检查当前weblogic的队列使用情况"
	  java weblogic.Admin -url $URL -username $USERNAME -password $PASSWORD get -pretty -type ExecuteQueueRuntime >weblogicStatus.temp
	  
    #当前空闲线程数   
    queue_free_count=`fgrep "ExecuteThreadCurrentIdleCount" weblogicStatus.temp|awk -F":" '{print $2}'`
    #等待线程数
    queue_pending_count=`fgrep "PendingRequestCurrentCount" weblogicStatus.temp|awk -F":" '{print $2}'`
		
		if [[ -n ${queue_free_count} && -n ${queue_pending_count} ]]
		then
			note_log "检查队列情况完毕:"
			note_log "free_count=${queue_free_count},pending_count=${queue_pending_count}"
			note_result "${LINE1}.queue.freeCount=${queue_free_count}\n${LINE1}.queue.pendingCount=${queue_pending_count}"
		else
			note_log "执行weblogic.Admin命令失败,请检查"
			note_result "${LINE1}.queue=FAIL"
		fi
		
		#调用接口
		call_service	
		
		#请求http
		call_http
		
}


#检查weblogic
test_step(){
	
	note_log "开始检查weblogic..."
	
	#获取检查列表信息
	note_log "获取需要检查的weblogic列表"
	
	fgrep -A${WEBLOGIC_NUM} "[test_list]" configFile.temp |sed '1d' > aa.temp
	
	while read LINE1
	do
		unset URL USERNAME PASSWORD DOMAIN_NAME SERVER_NAME LOG_PATH LOGIN_STR LOGIN_PASSWORD
		note_result "[$LINE1]"	
			
		fgrep -A8 "[${LINE1}]" weblogicCfg.temp | sed '1d' >bb.temp
		
		if [ ! -s bb.temp ]
		then
			note_log "没有获取到[${LINE1}]标签weblogic的详细信息,请检查配置文件${weblogicCfg},跳过${LINE1}的测试"
			continue		
		fi
	
		while read LINE2
		do
			eval echo \${$LINE2} >/dev/null 2>&1
		done<bb.temp
		
		note_result "${LINE1}.url=${URL}"
				
		note_log "读取[${LINE1}]标签weblogic的详细信息成功:"
		note_log "URL=${URL},USERNAME=${USERNAME},PASSWORD=${PASSWORD},DOMAIN_NAME=${DOMAIN_NAME},SERVER_NAME=${SERVER_NAME},LOG_PATH=${LOG_PATH},LOGIN_STR=${LOGIN_STR},LOGIN_PASSWORD=${LOGIN_PASSWORD}"
		
		#开始检测
		test_weblogic
		
	done<aa.temp	
		
	
}

###############################################################FUNCTION########################################################

#脚本开始
		
test_cfg #检查配置文件
read_cfg #读取全局配置信息
test_step #测试方法
my_exit 0  #正常退出





test.cfg   

全局配置文件


[test_list]
weblogic_1
weblogic_2
weblogic_3
weblogic_4

[global_cfg]
WEBLOGIC_NUM=4
HTTP_URL=""
HTTP_VALIDATION_STR="<Error>"
CLASSPATH="/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar:.:/weblogic/jdk1.6.0_45/lib.tools.jar"
CALL_SERVICE_ADDRESS="esbWS/rest/MainService"
CALL_MSG="{ \"ROOT\": { \"REQUEST_METHOD\": \"QryNoInfoByNo\", \"BAT_ID\": \"\", \"SEND_TIME\": \"\", \"REQUEST_INFO\": { \"PHONE_NO\": \"18355193852\", \"OP_CODE\": \"1000\", \"RES_STATUS\": \"0\", \"LOGIN_NO\": \"M3ABB0076\", \"CHECK_FLAG\": \"1\" } } }"
CALL_MSG_VALIDATION_STR="0000"



testWeblogic.config  

 weblogic服务器的信息


#按照此格式补充多个weblogic



[weblogic_1]
URL=152.55.229.71:51000
USERNAME=weblogic 
PASSWORD=
DOMAIN_NAME=
SERVER_NAME=
LOG_PATH=/chnesb/console51000.log
LOGIN_STR=chnesb
LOGIN_PASSWORD=


[weblogic_2]
URL=152.55.229.72:51000
USERNAME=weblogic 
PASSWORD=
DOMAIN_NAME=
SERVER_NAME=
LOG_PATH=/chnesb/console51000.log
LOGIN_STR=chnesb
LOGIN_PASSWORD=

[weblogic_3]
URL=152.55.229.73:51000
USERNAME=weblogic 
PASSWORD=
DOMAIN_NAME=
SERVER_NAME=
LOG_PATH=/chnesb/console51000.log
LOGIN_STR=chnesb
LOGIN_PASSWORD=

[weblogic_4]
URL=152.55.229.74:51000
USERNAME=weblogic 
PASSWORD=
DOMAIN_NAME=
SERVER_NAME=
LOG_PATH=/chnesb/console51000.log
LOGIN_STR=chnesb
LOGIN_PASSWORD=




test.log  

脚本运行日志


[2016-07-18 12:04:31]开始检查配置文件./test.cfg,./testWeblogic.config
[2016-07-18 12:04:31]开始获取全局配置信息
[2016-07-18 12:04:31]读取全局配置成功
[2016-07-18 12:04:31]开始检查weblogic...
[2016-07-18 12:04:31]获取需要检查的weblogic列表
[2016-07-18 12:04:31]读取[weblogic_1]标签weblogic的详细信息成功:
[2016-07-18 12:04:31]URL=152.55.229.71:51000,USERNAME=weblogic,PASSWORD=weblogic!123,DOMAIN_NAME=esbdomain,SERVER_NAME=EsbServer,LOG_PATH=/chnesb/console51000.log,LOGIN_STR=chnesb,LOGIN_PASSWORD=we()UJ80
[2016-07-18 12:04:31]开始检查152.55.229.71:51000 esbdomain EsbServer ...
[2016-07-18 12:04:31]远程登陆主机152.55.229.71...执行命令[ps auxwh|fgrep -v fgrep|fgrep java]
[2016-07-18 12:04:41]登陆主机152.55.229.71成功,执行命令[ps auxwh|fgrep -v fgrep|fgrep java]成功
[2016-07-18 12:04:41]当前进程PID24015消耗主机CPU的百分比为30.9%
[2016-07-18 12:04:42]远程登陆主机152.55.229.71...执行命令[fgrep -A200 <Error> /chnesb/console51000.log]
[2016-07-18 12:04:52]登陆主机152.55.229.71成功,执行命令[fgrep -A200 <Error> /chnesb/console51000.log]成功
[2016-07-18 12:04:52]已保存搜索到的weblogic日志,日志路径./weblogic.log
[2016-07-18 12:04:56]检查运行状态Run Status [OK]
[2016-07-18 12:04:56]检查健康状态Health Status [OK]
[2016-07-18 12:04:56]检查当前套接字数Open Sockets Number [OK] 当前打开数 12
[2016-07-18 12:04:56]开始检查当前weblogic的JVM使用情况
[2016-07-18 12:04:57]检查JVM使用情况完毕:
[2016-07-18 12:04:57]max_size= 2120679424,current_size= 1793261568,free_size= 1344888320,free_percent= 79
[2016-07-18 12:04:57]开始检查当前weblogic的队列使用情况
[2016-07-18 12:04:59]检查队列情况完毕:
[2016-07-18 12:04:59]free_count= 0,pending_count= 0
[2016-07-18 12:04:59]调用接口成功 响应时间 [0.014]
[2016-07-18 12:04:59]读取[weblogic_2]标签weblogic的详细信息成功:
[2016-07-18 12:04:59]URL=152.55.229.72:51000,USERNAME=weblogic,PASSWORD=weblogic!123,DOMAIN_NAME=esbdomain,SERVER_NAME=EsbServer,LOG_PATH=/chnesb/console51000.log,LOGIN_STR=chnesb,LOGIN_PASSWORD=we()UJ80
[2016-07-18 12:04:59]开始检查152.55.229.72:51000 esbdomain EsbServer ...
[2016-07-18 12:04:59]远程登陆主机152.55.229.72...执行命令[ps auxwh|fgrep -v fgrep|fgrep java]
[2016-07-18 12:05:10]登陆主机152.55.229.72成功,执行命令[ps auxwh|fgrep -v fgrep|fgrep java]成功
[2016-07-18 12:05:10]当前进程PID29757消耗主机CPU的百分比为30.6%
[2016-07-18 12:05:10]远程登陆主机152.55.229.72...执行命令[fgrep -A200 <Error> /chnesb/console51000.log]
[2016-07-18 12:05:20]登陆主机152.55.229.72成功,执行命令[fgrep -A200 <Error> /chnesb/console51000.log]成功
[2016-07-18 12:05:20]已保存搜索到的weblogic日志,日志路径./weblogic.log
[2016-07-18 12:05:24]检查运行状态Run Status [OK]
[2016-07-18 12:05:24]检查健康状态Health Status [OK]
[2016-07-18 12:05:24]检查当前套接字数Open Sockets Number [OK] 当前打开数 10
[2016-07-18 12:05:24]开始检查当前weblogic的JVM使用情况
[2016-07-18 12:05:26]检查JVM使用情况完毕:
[2016-07-18 12:05:26]max_size= 2120679424,current_size= 1793261568,free_size= 1342848232,free_percent= 78
[2016-07-18 12:05:26]开始检查当前weblogic的队列使用情况
[2016-07-18 12:05:27]检查队列情况完毕:
[2016-07-18 12:05:27]free_count= 0,pending_count= 0
[2016-07-18 12:05:27]调用接口成功 响应时间 [0.017]
[2016-07-18 12:05:27]读取[weblogic_3]标签weblogic的详细信息成功:
[2016-07-18 12:05:27]URL=152.55.229.73:51000,USERNAME=weblogic,PASSWORD=weblogic!123,DOMAIN_NAME=esbdomain,SERVER_NAME=EsbServer,LOG_PATH=/chnesb/console51000.log,LOGIN_STR=chnesb,LOGIN_PASSWORD=we()UJ80
[2016-07-18 12:05:27]开始检查152.55.229.73:51000 esbdomain EsbServer ...
[2016-07-18 12:05:27]远程登陆主机152.55.229.73...执行命令[ps auxwh|fgrep -v fgrep|fgrep java]
[2016-07-18 12:05:37]登陆主机152.55.229.73成功,执行命令[ps auxwh|fgrep -v fgrep|fgrep java]成功
[2016-07-18 12:05:37]当前进程PID3938消耗主机CPU的百分比为31.1%
[2016-07-18 12:05:37]远程登陆主机152.55.229.73...执行命令[fgrep -A200 <Error> /chnesb/console51000.log]
[2016-07-18 12:05:47]登陆主机152.55.229.73成功,执行命令[fgrep -A200 <Error> /chnesb/console51000.log]成功
[2016-07-18 12:05:47]已保存搜索到的weblogic日志,日志路径./weblogic.log
[2016-07-18 12:05:51]检查运行状态Run Status [OK]
[2016-07-18 12:05:51]检查健康状态Health Status [OK]
[2016-07-18 12:05:51]检查当前套接字数Open Sockets Number [OK] 当前打开数 10
[2016-07-18 12:05:51]开始检查当前weblogic的JVM使用情况
[2016-07-18 12:05:53]检查JVM使用情况完毕:
[2016-07-18 12:05:53]max_size= 2120679424,current_size= 1793261568,free_size= 1390624720,free_percent= 81
[2016-07-18 12:05:53]开始检查当前weblogic的队列使用情况
[2016-07-18 12:05:54]检查队列情况完毕:
[2016-07-18 12:05:54]free_count= 0,pending_count= 0
[2016-07-18 12:05:54]调用接口成功 响应时间 [0.018]
[2016-07-18 12:05:55]读取[weblogic_4]标签weblogic的详细信息成功:
[2016-07-18 12:05:55]URL=152.55.229.74:51000,USERNAME=weblogic,PASSWORD=weblogic!123,DOMAIN_NAME=esbdomain,SERVER_NAME=EsbServer,LOG_PATH=/chnesb/console51000.log,LOGIN_STR=chnesb,LOGIN_PASSWORD=we()UJ80
[2016-07-18 12:05:55]开始检查152.55.229.74:51000 esbdomain EsbServer ...
[2016-07-18 12:05:55]远程登陆主机152.55.229.74...执行命令[ps auxwh|fgrep -v fgrep|fgrep java]
[2016-07-18 12:06:05]登陆主机152.55.229.74成功,执行命令[ps auxwh|fgrep -v fgrep|fgrep java]成功
[2016-07-18 12:06:05]当前进程PID8299消耗主机CPU的百分比为38.8%
[2016-07-18 12:06:05]远程登陆主机152.55.229.74...执行命令[fgrep -A200 <Error> /chnesb/console51000.log]
[2016-07-18 12:06:15]登陆主机152.55.229.74成功,执行命令[fgrep -A200 <Error> /chnesb/console51000.log]成功
[2016-07-18 12:06:15]已保存搜索到的weblogic日志,日志路径./weblogic.log
[2016-07-18 12:06:19]检查运行状态Run Status [OK]
[2016-07-18 12:06:19]检查健康状态Health Status [OK]
[2016-07-18 12:06:19]检查当前套接字数Open Sockets Number [OK] 当前打开数 11
[2016-07-18 12:06:19]开始检查当前weblogic的JVM使用情况
[2016-07-18 12:06:21]检查JVM使用情况完毕:
[2016-07-18 12:06:21]max_size= 2120679424,current_size= 1793261568,free_size= 1451455576,free_percent= 75
[2016-07-18 12:06:21]开始检查当前weblogic的队列使用情况
[2016-07-18 12:06:23]检查队列情况完毕:
[2016-07-18 12:06:23]free_count= 0,pending_count= 0
[2016-07-18 12:06:23]调用接口成功 响应时间 [0.017]
[2016-07-18 12:06:23]临时文件已删除,脚本已退出



result.log  

 结果日志  供其他程序使用


[weblogic_1]
weblogic_1.url=152.55.229.71:51000
weblogic_1.java.pid=24015
weblogic_1.java.cpu=30.9
weblogic_1.errorLog=./weblogic.log
weblogic_1.AdminPermission=OK
weblogic_1.runStatus=OK
weblogic_1.healthStatus=OK
weblogic_1.openSocketsNumber= 12
weblogic_1.jvm.maxSize= 2120679424
weblogic_1.jvm.currentSize= 1793261568
weblogic_1.jvm.freeSize= 1344888320
weblogic_1.jvm.freePercent= 79
weblogic_1.queue.freeCount= 0
weblogic_1.queue.pendingCount= 0
weblogic_1.callService.status=OK
weblogic_1.callService.responseTime=0.014
[weblogic_2]
weblogic_2.url=152.55.229.72:51000
weblogic_2.java.pid=29757
weblogic_2.java.cpu=30.6
weblogic_2.errorLog=./weblogic.log
weblogic_2.AdminPermission=OK
weblogic_2.runStatus=OK
weblogic_2.healthStatus=OK
weblogic_2.openSocketsNumber= 10
weblogic_2.jvm.maxSize= 2120679424
weblogic_2.jvm.currentSize= 1793261568
weblogic_2.jvm.freeSize= 1342848232
weblogic_2.jvm.freePercent= 78
weblogic_2.queue.freeCount= 0
weblogic_2.queue.pendingCount= 0
weblogic_2.callService.status=OK
weblogic_2.callService.responseTime=0.017
[weblogic_3]
weblogic_3.url=152.55.229.73:51000
weblogic_3.java.pid=3938
weblogic_3.java.cpu=31.1
weblogic_3.errorLog=./weblogic.log
weblogic_3.AdminPermission=OK
weblogic_3.runStatus=OK
weblogic_3.healthStatus=OK
weblogic_3.openSocketsNumber= 10
weblogic_3.jvm.maxSize= 2120679424
weblogic_3.jvm.currentSize= 1793261568
weblogic_3.jvm.freeSize= 1390624720
weblogic_3.jvm.freePercent= 81
weblogic_3.queue.freeCount= 0
weblogic_3.queue.pendingCount= 0
weblogic_3.callService.status=OK
weblogic_3.callService.responseTime=0.018
[weblogic_4]
weblogic_4.url=152.55.229.74:51000
weblogic_4.java.pid=8299
weblogic_4.java.cpu=38.8
weblogic_4.errorLog=./weblogic.log
weblogic_4.AdminPermission=OK
weblogic_4.runStatus=OK
weblogic_4.healthStatus=OK
weblogic_4.openSocketsNumber= 11
weblogic_4.jvm.maxSize= 2120679424
weblogic_4.jvm.currentSize= 1793261568
weblogic_4.jvm.freeSize= 1451455576
weblogic_4.jvm.freePercent= 75
weblogic_4.queue.freeCount= 0
weblogic_4.queue.pendingCount= 0
weblogic_4.callService.status=OK
weblogic_4.callService.responseTime=0.017




weblogic.log  

过滤出的指定类型的weblogic日志


以前,我总以为自己是菜鸟,也总想着早起的鸟儿有虫吃。直到有一天我想飞,才愕然的发现自己没有翅膀和羽毛,我竟然是菜虫!早起的虫儿被鸟吃……原来,百足应该厚积薄发!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用shell bash脚本实时监控weblogic运行情况 的相关文章

  • 从零开始学习Blazor

    什么是Blazor Blazor的优势和用途 简介 Blazor是一种基于WebAssembly的开源框架 它允许开发人员使用C 语言编写Web应用程序 Blazor可以在浏览器中运行C 代码 而无需使用JavaScript 该框架由微软开
  • 前端js循环修改对象属性,得到新数组数据属性是最后一个数(深拷贝与浅拷贝)

    项目场景 在前端项目的开发中 我将JSON格式的对象数组 例如 a 1 b 2 引入js文件 在js文件中通过循环修改对象数组中的数据 然后把新的数据push添加到新建数组中 这一过程涉及深拷贝与浅拷贝的问题 困扰了一下午 总算是解决了 特
  • HDMI PL驱动开发记录

    在Zynq UltraScale example的基础上 舍弃掉在PS端做驱动的方案 在PS端搭建工程 并利用串口进行配置 对于多路HDMI的不同输入输出控制起来较为方便 且利用PL来做驱动 结构更加清晰 在做HDMI驱动的时候要了解两个重
  • 回归模型的变量筛选与预测

    我眼中的回归变量筛选 变量筛选是回归建模过程关键的一步 由于变量间的相关性 必然会导致不同的筛选方法得到不同的模型 在所有变量筛选方法中 向前法 向后法以及逐步回归法的使用频率较高 因为这类方法操作简单 运算速度快 非常实用 这种方法选出的
  • java获取url锚点_定位与锚点

    文档流 普通流 上至下 左至右 浮动流 元素添加了float 定位流 添加了定位属性 定位 position static 默认值 absolute 绝对定位 脱离文档流 不占位 默认参考浏览器零点 relative 相对定位 占据文档流
  • c# 得到list符合某条件的索引值,排序

    请教 在List集合中怎么得到元素的索引值 参考 http www myexception cn c sharp 385022 html 这个可以用来读取窗口的多个textbox控件中内容 1 解决方案 2 你可以使用FindIndex方法
  • Centos8 部署 Mysql8.0及主从复制

    1 拉取镜像 root VM 24 9 centos docker pull mysql 如需拉取置指定版本镜像加上 版本号即可 root VM 24 9 centos docker pull mysql 7 6 1 创建本地文件用于挂载
  • C++ 异常处理

    C 异常 Exception 是指在程序运行时产生的特殊情况 例如 尝试除以零的操作 异常提供了一种转移程序控制权的方式 异常处理涉及到三个关键字 try catch throw throw 当问题出现时 程序会抛出一个异常 这是通过使用
  • VUE 定时请求接口数据

    1 设置定时器 mounted this timer setInterval function 执行内容 60000 2 清除定时器 beforeDestroy clearInterval this timer
  • Android平台深度学习--NNAPI

    转自 http blog sina com cn s blog 602f87700102y62v html 1 Android 8 1 API 27 NNAPI 人工智能神经网络API 如 TensorFlow 神经网络 API 能够向设备
  • Java的动态代理Proxy

    动态代理类是实现在运行时指定的接口列表的类 这样通过类实例上的一个接口的方法调用将被编码并通过统一接口分派到另一个对象 先问一个问题 数据库操作需要以下流程 获取数据库连接 gt 执行sql gt 提交事务 gt 异常回滚事务 gt 释放连
  • Java 异常之 RuntimeException和Exception的区别

    在java的异常类体系中 Error和RuntimeException是非检查型异常 其他的都是检查型异常 所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类 不可以在不声明的情况下抛出非RuntimeE
  • C语言指针的赋值和初始化的看法

    https blog csdn net liuchunjie11 article details 80333224 在查看上述博客时 修改代码 include
  • Spring——事务注解@Transactional【建议收藏】

    在某些业务场景下 如果一个请求中 需要同时写入多张表的数据或者执行多条sql 为了保证操作的原子性 要么同时成功 要么同时失败 避免数据不一致的情况 我们一般都会用到事务 Spring框架下 我们经常会使用 Transactional注解来
  • 级数求和的八个公式_逐渐硬核的函数展开——洛朗级数、Mittag-Leffler和Weierstrass定理...

    从幂级数到洛朗级数 在传统微积分的范畴内 幂级数 是一个非常有效的函数近似工具 它不仅能够帮助我们为函数找出合适的多项式近似 还能够有效地解决极限里一类未定式问题 然而幂级数也有它的局限性 它只能在全纯函数的解析点处展开 而且很多时候都无法
  • sklearn库中的标准数据集及基本功能

    sklearn库 sklearn是scikit learn的简称 是一个基于Python的第三方模块 sklearn库集成了一些常用的机器学习方法 在进行机器学习任务是 并不需要实现算法 只需要简单的调用sklearn库中提供的模块就能完成
  • 双端链表的增加,删除,修改,遍历操作的实现

    package com yg linkedList author GeQiLin date 2020 2 21 13 46 public class DoubleLinkedListDemo public static void main
  • PCB电路板原理图中VCC、VDD、VEE、VSS、VBAT各表示什么意思?

    PCB电路板原理图中VCC VDD VEE VSS VBAT各表示什么意思 一 名词解析 1 VCC C circuit 表示电路的意思 即接入电路的电压 2 VDD D device 表示器件的意思 即器件内部的工作电压 3 VSS S
  • linux 多块磁盘挂一个文件夹,Linux单目录挂载多块磁盘

    Linux将多块磁盘挂载到一个目录 特此记录 方便以后使用 服务器需要保存大量图片 内含4块2T的磁盘 需要将磁盘挂载到影像目录 单块磁盘挂载比较简单 创建分区 格式化分区 挂载 同一目录无法重复挂载 后挂载的会覆盖之前挂载的磁盘 但是现在
  • python强化学习--gym安装与使用

    最近开始学习强化学习 第一步肯定是要学会安装和使用pym 原本以为很简单 事实上确实很简单 但是遇到一个小问题 就是安装gym之后 在应用的过程中 游戏界面没有显示出来 了解后才知道是gym版本不对 一种可用的版本匹配是 python 3

随机推荐

  • 前端面试题汇总

    总结一下前端面试官会经常问到的一些面试题 目录 总结一下前端面试官会经常问到的一些面试题 一阶段 HTML5 CSS3 隐藏页面中某个元素的办法 区别 请说明 px em rem vw vh rpx 等单位的特性 什么是 BFC 盒子模型总
  • JAVA课程设计(小游戏贪吃蛇)完整源码附素材(一)

    JAVA课程设计 小游戏贪吃蛇 完整源码附素材 一 JAVA课程设计 小游戏贪吃蛇 完整源码附素材 二 JAVA课程设计 小游戏贪吃蛇 完整源码附素材 三 文章目录 前言 一 任务描述 1 1 课程设计目的 1 2 课程设计内容和要求 二
  • 设计一个回合制战斗系统Combat(C++)

    C 设计一个回合制战斗系统Combat 目录 C 设计一个回合制战斗系统Combat 题目 重要提醒 Soldier类 Wizard类 Master类 Warsystem类 题目 设计和实现回合制战斗系统Combat 1 Soldier战士
  • Weex学习第二篇:Hello world

    曾经何时 我以为学习一门语言或者是新技术 只要能写出Hello world 就算是学会了 这个思想困扰了我很久 以至于之前整理电脑的时候发现php python ruby phonegap react native go node js n
  • Windows中的WSL2(子系统)开机启动配置

    常规做法 通常在Linux中开机启动可以通过 1 编辑 etc rc loacl 2 在 etc init d 下添加启动脚本 3 配置systemd 但这几种方式在子系统中无法使用 我们可以通过Windows 间接的启动子系统中的服务 在
  • C#基础(json解析)

    json是一种轻量级的数据交换格式 采用完全独立于语言的文本格式 易于解析和生成 在c 中 解析json数据通常是利用vs中自带的litjson包 然后进行解析 首先新建一个文本文件 创建一个json数据 如下 id 1 name 寄生者
  • Jenkins学习笔记第九篇pipeline 接口自动化持续集成测试

    Scripts Pipeline 基于groovy的语法 Declarative pipeline V2 5之后引入 结构化方式 script pipeline书写形式如下 node def mvnHome stage Preparatio
  • secureCRT 登录Ubuntu20.04提示Key exchange failed. No compatible key exchange method

    问题描述 之前在Ubuntu18 04上按照博客文章 ubuntu18 04系统搭建以及配置 配置ssh 登录是没有问题的 但最新新的项目需要安装Ubuntu20 04 在安装了ubuntu20 04后 以前老版本的secureCRT通过s
  • springboot2.x redis Lettuce版本使用时报错

    springboot2 x redis Lettuce版本使用时报错 springboot2 x redis使用时报错 原因 解决方法 springboot2 x redis使用时报错 原因 在springboot2 x 以后 官方默认使用
  • Unity中行星和恒星的旋转——Rotate和RotateAround

    Unity中的旋转 以行星环绕为例 实现效果 一 与之相关的两种旋转方式 1 Rotate 2 transform RotateAround 二 行星案例的实现 Step1 我们先在场景中创建一个球体 并将它放大作为被环绕的恒星 我这里自己
  • 范数的数学意义

    L0 L1 L2范数的数学意义 如有不当 敬请斧正 Tips 范数所表示的一些数学意义 众数 中位数 均值 A mathcal A A L0范数 求L0范数最小时 表示的是数据中的众数modes 假设
  • 家里电脑dnf无线连接服务器,win7系统dnf正在连接服务器的解决方法

    我们在操作win7系统电脑的时候 常常会遇到 2 关闭后点击 开始游戏即可正常进入游戏 出现这样的现象是由于当前win7系统电脑与dnf游戏服务器连接失败导致的 这个问题早在以往就会有发生 但是到了跨区合并游戏大区后问题又被进一步放大了 和
  • windows一键安装mysql脚本bat

    下载需要的zip版本的mysql压缩文件 解压 在bin目录创建mysql init bat 复制内容保存 cd dp0 cd del cd my ini echo 删除完成 echo mysqld gt gt my ini echo 设置
  • python接收mysql语句进行查询

    mysql语句作为外部参数传入进行查询 最近在做自动化测试时遇到一个问题 需要将sql语句传入python脚本里面进行查询 支持不同类型的sql语句 只需在外部修改sql语句就可以进行mysql的增删改查 代码 coding utf 8 i
  • CSS(简)

    CSS CSS概述 CSS是 Cascading Style Sheets 级联样式表 CSS是一种样式表语言 用于为HTML文档控制外观 定义布局 例如 CSS涉及字体 颜色 边距 高度 宽度 背景图像 高级定位等方面 可将页面的内容与表
  • C语言中求和、计算平均值、方差和标准差

    计算C语言中的求和 标准差 方差和标准差等 需要加上头文件 include
  • SpringBoot笔记梳理

    本次笔记目录结构如下 1 SpringBoot自动配置原理 2 SpringBoot获取模块bean的几种方式 2 1 包路径放大 import注解进行导入配置类 2 2 自定义注解 EnableUse 2 3 使用ImportSector
  • js基础之继承

    js继承 是指一个对象可以继承另一个对象的属性和方法 以便利用现有的代码来创建新的对象 在JavaScript中 继承主要有以下几种常见的实现方式 通过原型链继承 构造函数继承 组合继承 即原型链继承 构造函数继承 寄生组合继承 es6类的
  • 如何使用 Ktor 快速开发 Web 项目

    photo of woman wearing pink top 2810803 jpg 一 Ktor 介绍 Ktor 是一个高性能的 基于 Kotlin 的 Web 开发框架 支持 Kotlin Coroutines DSL 等特性 Kto
  • 利用shell bash脚本实时监控weblogic运行情况

    testWeblogic sh test cfg testWeblogic config test log result log weblogic log 主要用到了expect远程登录工具用来获取进程id和cpu消耗以及weblogic提