监控应用CPU高后自动dump
#!/bin/bash
interval=1
cpu_monitor=180.0
project=修改项目名字
while true
do
pid=`ps -ef|grep "$project"|grep -v grep|awk '{print $2}'`
echo $pid;
dockerId=`sudo docker stats --no-stream|grep $project|awk '{print $3}'`
cpu=$(top -b -n1 | grep $pid | head -1 | awk '{print $9}')
echo dockerId----$dockerId;
cpu_number=`echo ${dockerId%%%}`
echo ---$cpu_number;
if [ `echo "$cpu_number > $cpu_monitor" | bc` -eq 1 ];then
time=$(date "+%Y%m%d%H%M%S")
echo "$time执行dump操作==$cpu===$cpu_number===$cpu_monitor";
container_id=`sudo docker ps |grep $project|awk '{print $1}'`;
echo $container_id;
echo "================================"
sudo docker exec -it $container_id jstack -l 1 >> jstack_${time}-1.log
sudo docker exec -it $container_id top -n 1 -H -p 1 >>top_${time}.log
sudo docker exec -it $container_id jstack -l 1 >> jstack_${time}-2.log
sudo docker exec -it $container_id jstack -l 1 >> jstack_${time}-3.log
fi
sleep $interval;
done