#!/bin/bash
#==================================================================================================================================================
# 编写:lnj
# 22.8.15
# 资源监控脚本
get_cpu(){
##################################################################获取cpu信息######################################################################
cpu_num=`grep -c 'processor' /proc/cpuinfo` #cpu个数
cpu_name=` cat /proc/cpuinfo | grep "model name" | tail -n 1` #cpu名称
cpu_he=`cat /proc/cpuinfo | grep -c "core id"` #cpu核个数
cpu_liyong=`iostat -c | awk -F " " '{print $2}' | awk 'NR==4{print $1}'` #cpu利用率
cpu_kongxian=`mpstat | awk -F" " '{print $12}' | grep -v "^$" | tail -n 1` #cpu剩余空闲
echo "######################################################cpu详细信息###########################################################################"
if [ $cpu_num -lt 2 ]
then
echo "cpu个数为:$cpu_num cpu个数过少,性能不足,谨慎使用及时备份。"
else
echo "cpu个数为:$cpu_num cpu个数正常,请放心使用。"
fi
echo "cpu型号为:$cpu_name "
if [ $cpu_he -lt 4 ];then
echo "cpu核个数为:$cpu_he 性能不足,请谨慎使用,及时备份。"
else
echo "cpu核个数为:$cpu_he cpu核正常,请放心使用 "
fi
cpu_liyong1=$cpu_liyong
if [ $(echo "$cpu_liyong1 > 1" |bc) -eq 1 ];then
echo "cpu利用率为:$cpu_liyong cpu剩余不足"
else
echo "cpu利用率为:$cpu_liyong"
fi
echo "cpu剩余空闲:$cpu_kongxian%"
}
get_mem(){
################################################################获取内存信息#######################################################################
mem_all=`free -m | grep "Mem" | awk -F" " '{print $2}'`
mem_used=`free -m | grep "Mem" | awk -F" " '{print $3}'`
mem_free=`free -m | grep "Mem" | awk -F" " '{print $4}'`
mem_shared=`free -m | grep "Mem" | awk -F" " '{print $5}'`
mem_bc=`free -m | grep "Mem" | awk -F" " '{print $6}'`
mem_aliv=`free -m | grep "Mem" | awk -F" " '{print $7}'`
echo "###################################################内存详细信息#############################################################################"
echo "内存总量为:$mem_all M"
echo "内存已使用:$mem_used M"
echo "内存未使用:$mem_free M"
echo "共享内存的大小:$mem_shared M"
echo "缓存大小:$mem_bc M"
echo "内存剩余可用:$mem_aliv M"
echo -e "\033[1;35m对此机器内存进行评价 \033[0m"
if [ $mem_all -lt 2048 ];then
echo -e "\033[1;35m内存总量不多,请谨慎使用 \033[0m"
else
echo -e "\033[1;35m内存充裕,放心使用 \033[0m"
fi
if [ $mem_used -gt 1024 ];then
echo -e "\033[1;35m内存使用过度,请关闭不需要的进程 \033[0m"
else
echo -e "\033[1;35m内存剩余量足够,放心使用 \033[0m"
fi
if [ $mem_free -lt 1024 ];then
echo -e "\033[1;35m内存剩余可用小于1024M,请做清理,谨慎使用 \033[0m"
else
echo -e "\033[1;35m内存剩余可用大于1024M,剩余充足,放心使用 \033[0m"
fi
}
get_disk(){
######################################################################磁盘使用####################################################################
disk_all=`lsblk |sed -n '/disk/p'|awk -F '[ G]+' '{print $4}'|awk '{sum+=$1;print $1}END{print sum}'|tail -n 1G | tail -n 1` #机子磁盘总量
disk_par=` df -hT | grep "/dev/mapper/centos-root" | awk -F" " '{print $3}' | cut -d 'G' -f1`
disk_used=` df -hT | grep "/dev/mapper/centos-root" | awk -F" " '{print $4}' | cut -d 'G' -f1`
disk_free=` df -hT | grep "/dev/mapper/centos-root" | awk -F" " '{print $5}' | cut -d 'G' -f1`
disk_percent=` df -hT | grep "/dev/mapper/centos-root" | awk -F" " '{print $6}' | cut -d '%' -f1`
echo "#################################################磁盘使用情况###############################################################################"
echo "所有磁盘包括后续创建的综合:$disk_all G"
echo "主盘剩余:$disk_par G"
echo "磁盘已使用:$disk_used G"
echo "磁盘剩余:$disk_free G"
echo "磁盘使用情况:$disk_percent %"
echo -e "\033[1;35m开始对此机器磁盘情况进行评估 \033[0m"
if [ $disk_all -gt 50 ];then
echo -e "\033[1;35m 磁盘可用总量太少请添加磁盘 \033[0m"
else
echo -e "\033[1;35m 磁盘总可用量大于50G,够用 \033[0m"
fi
if [ $disk_percent -gt 50 ];then
echo -e "\033[1;35m 磁盘已使用超过50%,建议清理不需要的文件 \033[0m"
elif [ $disk_percent -gt 80 -a $disk_percent -lt 100 ];then
echo -e "\033[1;35m 磁盘已使用超过80%,已无法存放过多数据,建议增加磁盘使用\033[0m"
else
echo -e "\033[1;35m 磁盘使用未超过50%,剩余重组,放心使用\033[0m"
fi
}
get_zifu(){
#####################################################################文件描述符利用率##############################################################
echo "文件描述符即为系统可打开的最大数量"
zifu_used=` cat /proc/sys/fs/file-nr | awk -F" " '{print $1}'`
zifu_all=` cat /proc/sys/fs/file-nr | awk -F" " '{print $3}'`
zifu_end=$(echo "scale=2; ${zifu_used}/${zifu_all}*100" | bc)
echo "######################################################文件描述符利用率######################################################################"
echo -e "\033[1;35m 文件描述字符使用:$zifu_used \033[0m"
echo -e "\033[1;35m 系统文件描述字符可使用:$zifu_all \033[0m"
echo -e "\033[1;35m 系统文件描述字符使用率为:$zifu_end% \033[0m"
}
get_wangka(){
######################################################################网卡信息#####################################################################
wk_name=`ifconfig | awk -F" " NR==1,NR==8'{print NR $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12}' | head -n 2 | grep "ens33" | awk -F" " '{print $1}' | cut -d ':' -f 1 | sed 's/1//'`
wk_ip=`ifconfig | awk -F" " NR==1,NR==8'{print NR $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12}' | head -n 2 | grep "inet" | awk -F" " '{print $2}'`
wk_yanma=`ifconfig | awk -F" " NR==1,NR==8'{print NR $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12}' | head -n 2 | grep "inet" | awk -F" " '{print $4}'`
wk_ljs=`netstat -napt | grep -v "^A\|^P" |awk '{print $6}'|sort |uniq -c`
echo "########################################################网卡信息############################################################################"
echo -e "\033[1;35m 此机器的网卡名称为:$wk_name\033[0m"
echo -e "\033[1;35m 此机器的子网掩码为:$wk_yanma\033[0m"
echo -e "\033[1;35m 此机器的ip地址为:$wk_ip\033[0m"
echo -e "\033[1;35m 此机器的当前连接数为:/\n$wk_ljs\033[0m"
}
get_io(){
#######################################################################i/o#########################################################################
io_rs=`iostat -kx | sed '1d' | sed '1d' | sed '1d'| sed '1d' | sed '1d' | sed '1d' | grep "sda" | awk -F" " '{print $4}'`
io_ws=`iostat -kx | sed '1d' | sed '1d' | sed '1d'| sed '1d' | sed '1d' | sed '1d' | grep "sda" | awk -F" " '{print $5}'`
io_avg=`iostat -kx | sed '1d' | sed '1d' | sed '1d'| sed '1d' | sed '1d' | sed '1d' | grep "sda" | awk -F" " '{print $9}'`
io_awit=`iostat -kx | sed '1d' | sed '1d' | sed '1d'| sed '1d' | sed '1d' | sed '1d' | grep "sda" | awk -F" " '{print $10}'`
io_sv=`iostat -kx | sed '1d' | sed '1d' | sed '1d'| sed '1d' | sed '1d' | sed '1d' | grep "sda" | awk -F" " '{print $11}'`
io_util=`iostat -kx | sed '1d' | sed '1d' | sed '1d'| sed '1d' | sed '1d' | sed '1d' | grep "sda" | awk -F" " '{print $12}'`
echo "##########################################################i/o信息###########################################################################"
echo -e "\033[1;35m 每秒向设备发起的读请求$io_rs\033[0m"
echo -e "\033[1;35m 每秒向设备发起的写请求$io_ws\033[0m"
echo -e "\033[1;35m 向设备发起的io请求平均值$io_avg\033[0m"
echo -e "\033[1;35m 向设备发起的io请求平均时间$io_awit\033[0m"
echo -e "\033[1;35m 向设备发起的io服务时间均值$io_sv\033[0m"
echo -e "\033[1;35m 向设备发起io请求的cpu时间百分比$io_util\033[0m"
}
get_cpu
get_mem
get_disk
get_zifu
get_wangka
get_io
