linux 进程监控

#!/bin/bash
#java进程存活监控,监测pid_xxx里的进程,不存在则发送告警到企业微信群

#检测进程
check_pid(){
        pid=$1
        val=$2
        #echo "ps -p $pid"
        result=$(ps -p $pid);
        #echo "reuslt : $result .."
        str=${result:0-4}
        #echo "str :  $str .."
        if [ "java" = "$str" ];then
                msg="checkExist:true, 进程($pid)存在, path: $val"
                echo ${msg}
        else
                msg="checkExist:false, 进程($pid)不存在, path: $val, 发送告警"
                echo ${msg}
                sendWarn ${pid} $val
        fi

}

#发送告警
sendWarn(){
        pid=$1
        path=$2
        #ip='10.17.10.34'
        ip=$(ifconfig|grep "broadcast"|awk '{print $2}')
        msg="进程($pid)不存在, ip:$ip, path:$val, 发送告警"
        #echo "msg : $msg"
        body='{"msgtype":"text","text":{"content":"进程('$pid')不存在,ip:'$ip',path:'$val',发送告警"}}';
        echo '----- send start -----'
        echo $body
        echo '----- send end -----'
        curl -X POST 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx-852e-43e9-bdcf-b9142bcdebb1' -H 'Content-Type: application/json' -d $(echo ${body})
        #exit
}


#打印系统状态
domonitor(){
echo "---------- monitor start ----------"
free -m

echo "--------------------"
top -c -b -oRES -n 1

echo "--------------------"
ps aux|grep java

echo "---------- monitor end ----------"
}

#80%内存告警
checkMemory(){
        mem_total=`free -m|grep -i 'mem'|awk '{print $2}'`
        mem_used=`free -m|grep -i 'mem'|awk '{print $3}'`
        #echo "mem_total: $mem_total"
        #echo "mem_used: $mem_used"
        mem_free=$(( $mem_total*80 - $mem_used*100 ))
        #echo "mem_free: $mem_free"
        if [ $mem_free -lt 0 ];then
                echo "---------- memory warn start ----------"
                #echo "内存80%告警,$mem_used / $mem_total"
                ip=$(ifconfig|grep "broadcast"|awk '{print $2}')
                body='{"msgtype":"text","text":{"content":"内存80%告警,ip:'$ip','$mem_used'/'$mem_total'(M)"}}';
                echo $body
                curl -X POST 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx-852e-43e9-bdcf-b9142bcdebb1' -H 'Content-Type: application/json' -d $(echo ${body}) 
                echo "---------- memoery warn end ----------"
        fi
}

#主程序
domain(){
checkMemory
domonitor
echo "task start"
echo "--------------------"
for val in $(find './service' './other' -name 'pid_*') 
do
        echo "pid is is : ${val}"
        pid=$(cat ${val})
        echo ${pid}
        if [ -n "$pid" ];then
                #echo "这不是个空值,${pid}"
                #检测这个进程
                check_pid ${pid} $val
        else
                echo "这是一个空值,$val"
        fi
        echo '----- next -----'

done
echo "task done"
}



dir='/data/div11/backend'
cd $dir

d=`date +%Y%m%d_%H%M00`
#check_java_process_20231102_165000.log
d2=`date +%Y%m%d`
dir_date="$dir/log/check_java_process/$d2"
if [ ! -d "$dir_date" ];then
        mkdir $dir_date
fi
logFile="$dir_date/check_java_process_$d.txt"

domain > $logFile

#end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值