JVM内存监控shell脚本

栏目: Java · 发布时间: 6年前

内容简介:JVM内存监控shell脚本,该shell脚本主要用于监控各个进程的jvm内存使用情况,脚本名称:jvm-monitor.sh,具体脚本如下:[root@loong /]#more jvm-monitor.sh#!/bin/bash

JVM内存监控 shell 脚本,该shell脚本主要用于监控各个进程的jvm内存使用情况,脚本名称:jvm-monitor.sh,具体脚本如下:

[root@loong /]#more jvm-monitor.sh

#!/bin/bash

export JAVA_PATH=/callcent/jdk1.6.0_25

export PATH=$PATH:$JAVA_PATH/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin

sysdate=date

for pid in jps -v |grep weblogic|grep -v AdminServer |awk '{print $1}'

do

addr=ifconfig -a|grep -w inet|grep -v 127.0.0.1|grep -v 172.16.1.1|awk '{print $2}'|cut -d : -f 2

java_name=$(ps -ef|grep weblogic|grep $pid|grep -v AdminServer)

name=echo ${java_name}|sed 's/^.*-Dweblogic.Name=//g'|awk '{print $1}'

#jvm内存监控

echo ##############################################

echo $sysdate

echo pid $pid

echo name $name

echo $addr

if [ "$pid" = "" ]

then

echo "the program is not exists."

exit 0

fi

heap=$(jmap -heap ${pid})

eden=echo ${heap}|sed 's/^.*Eden Space://g'|sed 's/From Space.*$//g'|awk '{print $13}'|sed 's/%.*$//g'|cut -b 1-6

from=echo ${heap}|sed 's/^.*From Space://g'|sed 's/To Space.*$//g'|awk '{print $13}'|sed 's/%.*$//g'|cut -b 1-6

tospc=echo ${heap}|sed 's/^.*To Space://g'|sed 's/tenured generation.*$//g'|awk '{print $13}'|sed 's/%.*$//g'|cut -b 1-6

oldge=echo ${heap}|sed 's/^.*PS Old Generation//g'|sed 's/Perm Generation.*$//g'|awk '{print $13}'|sed 's/%.*$//g'|cut -b 1-6

perm=echo ${heap}|sed 's/^.*PS Perm Generation//g'|awk '{print $13}'|sed 's/%.*$//g'|cut -b 1-6

echo "Eden Space: ${eden}%"

echo "From Space: ${from}%"

echo "To Space: ${tospc}%"

echo "Old Generation: ${oldge}%"

echo "Perm Generation: ${perm}%"

eden1=gawk -v x=$eden -v y=1000 'BEGIN{printf "%.0f\n",x*y}'

from1=gawk -v x=$from -v y=1000 'BEGIN{printf "%.0f\n",x*y}'

tospc1=gawk -v x=$tospc -v y=1000 'BEGIN{printf "%.0f\n",x*y}'

oldge1=gawk -v x=$oldge -v y=1000 'BEGIN{printf "%.0f\n",x*y}'

perm1=gawk -v x=$perm -v y=1000 'BEGIN{printf "%.0f\n",x*y}'

#取对应进程的jvm内存值

for name1 in $name

do

if [ ${eden1} -ge "99999" ]

then

jvm=$jvm+${name1}+":Eden Space:"+${eden}+"%超阀值 "

fi

if [ ${from1} -ge "99999" ]

then

jvm=$jvm+${name1}+":From Space:"+${from}+"%超阀值 "

fi

if [ ${tospc1} -ge "99999" ]

then

jvm=$jvm+${name1}+":To Space:"+${topspc}+"%超阀值 "

fi

if [ ${oldge1} -ge "99999" ]

then

jvm=$jvm+${name1}+":Old Generation:"+${oldge}+"%超阀值 "

fi

if [ ${perm1} -ge "99999" ]

then

jvm=$jvm+${name1}+":Perm Generation:"+${perm}+"%超阀值 "

fi

echo $jvm

done

#端口监控

if [ "$name" = "baobiao" ]

then

port='91400'

fi

if [ "$name" = "csr" ]

then

port='91200'

fi

if [ "$name" = "sso" ]

then

port=91500

fi

if [ "$name" = "gongdan" ]

then

port=91100

fi

if [ "$name" = "manager" ]

then

port=91300

fi

if [ "$name" = "cron" ]

then

port=91090

fi

net=netstat -an |grep $port|grep LISTEN|grep $addr

if [ "$net" = "" ]

then

p1=$p1+${port}+"端口异常"

fi

#echo $pid

#echo $port

#echo $name

done

#p2=$p1+"端口异常"

#url监控

http=curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" http://www.callcent.kefu.com/sso/jsp/login.jsp

#echo $http

if [ "$http" != "200" ]

then

http1="统一登陆页面http://www.xxxxxx.com/sso/jsp/login.jsp访问异常"

fi

echo $p1

echo $addr

echo $http1

#发送告警信息

if [ -n "$p1" -o -n "$http1" -o -n "$jvm" ]

then

curl -d "action=SendMessage&msg=ip:${addr} $jvm ${p1} ${http1};&usernames=user1;user2" http://172.xx.xx.xxx:8090/TestService.ashx

fi

通过定时任务调用该脚本(该脚本每30秒执行一次):

* * * * * /monitor/script/monitor19.sh >> /monitor/log.txt

[root@loong /]#more /monitor/script/monitor19.sh

#!/bin/bash

export JAVA_PATH=/callcent/jdk1.6.0_25

export PATH=$PATH:$JAVA_PATH/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin

step=30 #间隔的秒数,不能大于60,表示每半分钟执行一次

for (( i = 0; i < 60; i=(i+step) )); do

/monitor/script/jvm-monitor.sh

sleep $step

done

exit 0

监控截图:

JVM内存监控shell脚本

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-09/154438.htm


以上所述就是小编给大家介绍的《JVM内存监控shell脚本》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编码的奥秘

编码的奥秘

Charles Petzold / 伍卫国、王宣政、孙燕妮 / 机械工业出版社 / 2000-9-1 / 24.00

渴望交流是大多数人的天性。在本书中,“编码”通常指一种在人和机器之间进行信息转换的系统。换句话说、编码即是交流。有时我们将编码看得很神秘,其实大多数编码并非都是这样。大多数的编码都需要被很好地理解,因为它们是人类交流的基础。――《编码的奥秘》 手电筒、英国人入侵、黑色的猫和跷跷板与计算机有什么必然联系?本书向我们展示了使用语言的一些直观方法并创造新的方法来进行相互之间的交流。此书使我们明白了......一起来看看 《编码的奥秘》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试