docker通过top监控CPU高 自动jstack

监控应用CPU高后自动dump

#!/bin/bash

interval=1  #设置采集间隔
cpu_monitor=180.0   #监控阈值  达到该阈值就指定jstack和dump命令
project=修改项目名字
while true
do
	#获取线程Id
	pid=`ps -ef|grep "$project"|grep -v grep|awk '{print $2}'`
    echo $pid;
	#获取对应docker的容器Id
	dockerId=`sudo docker stats --no-stream|grep $project|awk '{print $3}'`
	#获取对应进程的CPU, 可考虑通过docker stats来监控
	cpu=$(top -b -n1 | grep $pid | head -1 | awk '{print $9}')
	#echo cpu比例$cpu--;
	echo dockerId----$dockerId;
	cpu_number=`echo ${dockerId%%%}`
	echo ---$cpu_number;
	#判断cpu大于监控值
	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
		#如果镜像未安装top  可以通过yum install -y procps 安装
		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
	#	exit;
	fi

    sleep $interval;
done

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值