使用shell服务器监控

关于服务器资源监控shell脚本
监控容器服务器cpu%和mem%

#!bin/bash
#判断参数个数
if [ != 3 ] ; then
	echo "err:pram is null"
	exit 1;
fi
#判断参数是否符合规则,引入一个数组判断
app_name=(aaa,bb,cc,dd,ee,ff)
if echo "${app_name[@]}"|grep -w "$1" &>/dev/null;then
	echo "yes"
else
	echo "err:pram error"
	exit 1;
fi
Date=`date "+%Y%m%d%H%M%S"`
#监控容器,该容器监控只能使用vmstat和free
mem_total=`kubectl exec $1 -n ipdo -- free -k |awk '{print $2}'|sed -n 2p`
kubectl exec $1 -nipdo -- vmstat $2 $3|awk '{print $15,$4,$5,$6}' > m_data.txt
#过滤掉监控文本中的非数值,避免后续求平均值bug
cat m_data.txt |grep -v buff|grep -v system > s_data.txt
#按列求均值
cpu_use=`cat s_data.txt|awk '{sum+=$1}END{print "",sum/NR}'`
mem_buf=`cat s_data.txt|awk '{sum+=$3}END{print "",sum/NR}'`
mem_free=`cat s_data.txt|awk '{sum+=$2}END{print "",sum/NR}'`
mem_cache=`cat s_data.txt|awk '{sum+=$4}END{print "",sum/NR}'`
#由于只能使用free和vmstat,vmstat中mem以K为单位,数值过大会使用科学记数法,导致运算时bug,此处把科学记数法转换为一般文本进行计算
m_free=`echo "$mem_free"|awk '{priintf("%.4f"),$0}'`
m_cache=`echo "$mem_cache"|awk '{priintf("%.4f"),$0}'`
#计算cpu和mem使用,shell默认运算为整数计算,此处引入浮点型计算,使用bc,也可以使用awk,其中scale为保留几位小数
mem_use=`echo "scale=4;(1-($mem_buf+$m_free+$m_cache)/$mem_total)*100"|bc`
cpu_use1=`echo "100-$mem_use"|bc`
echo "appserver:$1 cpu=$cpu_use1% mem=$mem_use% ---testDate:$Date"
#打印日志
echo "appserver:$1 cpu=$cpu_use1% mem=$mem_use% ---testDate:$Date" >> monitor.log

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值