轻量级监控平台之java进程监控

轻量级监控平台之java进程监控脚本

#!/bin/bash
#进程监控脚本
#功能需求: 上报机器Java进程的进程ID,对应的端口号service tcp端口号,tomcat http 端口号,以及tcp链接数数据

. /etc/profile
. ~/.bash_profile

pushurl="https://lightmonitorapi.test.cn/push/process"
proNum=$(jps | grep -v Jps | cut -d' ' -f1)
i=1
cd /opt/web/
webDir=$( ls )
serviceRunning=$(service list | grep RUNNING)
msg=""

for pid in  $proNum
do
   port=$(echo "$serviceRunning" | grep $pid | awk -F " " '{print $8}')

   if [ -n "$port" ];then

       serviceName=$(echo "$serviceRunning" | grep $pid | awk -F " " '{print $1}')
       threadTime=$(ps -eo pid,tty,user,comm,stime,etime | grep "$pid"| cut -c 46-60)
       tcpStatus=$(netstat -nat | grep $port | awk '{print $6}' | sort | uniq -c)
       escount=$( echo "$tcpStatus" | grep "ESTABLISHED" | awk '{print $1}')
       cwcount=$( echo "$tcpStatus" | grep "CLOSE_WAIT" |  awk '{print $1}')
       twcount=$( echo "$tcpStatus" | grep "TIME_WAIT" |  awk '{print $1}')
       licount=$( echo "$tcpStatus" | grep "LISTEN" | awk '{print $1}')
       msg=$msg"$pid,$serviceName,$port,$threadTime,T,E$escount,C$cwcount,T$twcount,L$licount\n"
   else
       for fileName in $webDir
       do
           fileDir=$(ps -ef | grep "$pid" | grep "$fileName")
           if [ -n "$fileDir" ];then
               serverPath="/opt/web/$fileName/conf/server.xml"
               threadTime=$(ps -eo pid,tty,user,comm,stime,etime | grep "$pid"| cut -c 46-60)
               httpPort=$(cat "$serverPath" | grep 'Connector' | cut -d' ' -f6 | awk -F "[\"\"]" '{print $2}')
               tcpStatus=$(netstat -nat | grep $httpPort | awk '{print $6}' | sort | uniq -c)
               escount=$( echo "$tcpStatus" | grep "ESTABLISHED" | awk '{print $1}')
               cwcount=$( echo "$tcpStatus" | grep "CLOSE_WAIT" |  awk '{print $1}')
               twcount=$( echo "$tcpStatus" | grep "TIME_WAIT" |  awk '{print $1}')
               licount=$( echo "$tcpStatus" | grep "LISTEN" | awk '{print $1}')

               msg=$msg"$pid,$fileName,$httpPort,$threadTime,H,E$escount,C$cwcount,T$twcount,L$licount\n"
           fi
       done
   fi
done

ip=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d '/')

ticket=$(cat /opt/shell/ticket.txt)

curl $pushurl \
   -H "Accept: application/json" \
   -H 'Content-Type: application/json' \
   -d \ '{"ip": "'"${ip}"'", "ticket": "'"${ticket}"'", "data": "'"${msg}"'"}'

架构设计@工程设计@服务稳定性之路

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值