服务器内存、CPU、网卡、磁盘等性能监控shell实现

基于sysstat实现的脚本检测工具

脚本实现功能:

  1. 通过选择不同模式实现全量或单个指标检测
  2. 把监测记录存储本地指定路径
#!/bin/bash
#author:null_shi
#date:2022-01-19





folder_nm="Monitor_Per"
folder_nm_1="Performance-ALL"
folder_nm_2="Performance-MEM"
folder_nm_3="Performance-CPU"
folder_nm_4="Performance-Disk"
folder_nm_5="Performance-Inet"
folder_nm_6="Performance-Swap"
path_bc=$PWD
path_all="${path_bc}/${folder_nm}/${folder_nm_1}/Performance-ALL.log"
path_Mem="${path_bc}/${folder_nm}/${folder_nm_2}/Performance-Mem.log"
path_Cpu="${path_bc}/${folder_nm}/${folder_nm_3}/Performance-Cpu.log"
path_Disk="${path_bc}/${folder_nm}/${folder_nm_4}/Performance-Disk.log"
path_Net="${path_bc}/${folder_nm}/${folder_nm_5}/Performance-Net.log"
path_Swap="${path_bc}/${folder_nm}/${folder_nm_6}/Performance-Swap.log"
[ ! -d ${path_bc}/${folder_nm} ] && mkdir -p ${path_bc}/${folder_nm};
stty erase '^H'

function env_check(){
	sar --help
	if [ $? != 0 ]; then
		sar -h
		if [ $? != 0 ]; then
			echo -e "\033[31m Not find sysstat!\033[0m"
			exit 1
		fi
	fi 
}
env_check

function check(){
       var=`expr $1 / $1`
       if [ "$?" != 0  ]  || [  "$var" != 1  ]; then
               echo -e "\033[31m <Tips> : Para is Null or Illegal\033[0m"
               sleep 3
               sh $0
       fi
}

function ALL(){
	Alltime=$(date +"%Y-%m-%d")
	all_report=`sar -A $t $n`
	echo -e "${Alltime} ------监测总览------" >> $1
	echo -e "${all_report}" >> $1 
}

function Mem(){
	Memtime=$(date +"%Y-%m-%d %H:%M:%S")
	echo -e "${Memtime}  [---Memory---]" >> $1
	#mem_usage=`free | grep "Mem" | awk '{print $3/($3 + $4)*100 }'`
	mem_usage=`sar -r $t $n`
	echo -e "Memory usage:${mem_usage}%\n" >> $1
}

function Cpu(){
	cpu_usage=`sar -C $t $n | grep "Average:" | awk '{print $3}'`
	#cpu_usage_cur=`sar -C $t $n |tail -n3`
	cpu_usage_cur=`sar -C $t $n`
	Cputime=$(date +"%Y-%m-%d")
	#echo "CPU Avg usage:${cpu_usage}%"
	echo -e "${Cputime}  [---CPU usage---]" >> $1
	echo -e "${cpu_usage_cur}\n" >> $1
}

function Disk(){
	disk_tps=`sar -b $t $n | grep "Average:"  | awk '{print $2}'`
	#disk_tps_cur=`sar -b $t $n | tail -n3`
	disk_tps_cur=`sar -b $t $n`
	#echo "Disk TPS:${disk_tps}%"
	Disktime=$(date +"%Y-%m-%d")
	echo -e "${Disktime}  [---Disk TPS---]" >> $1
	echo -e "${disk_tps_cur}\n" >> $1
}

function Net(){
	net_list=`ip addr| grep  ^[1-9] |awk -F\: {'print $2'}`
 	echo -e "------Netname-List------\n${net_list[@]}\n------------------------"
	read -p "Input Net name: " net
	#net="ens33"
	#net_cur=`sar -n DEV $t $n | grep "$net"|head -n 1|awk '{print $1 "  "$2 "  rxpck/s: "$4 "  txpck/s: "$5 "  rxkB/s: "$6 "  txkB/s: "$7 }'`
	net_cur=`sar -n DEV $t $n`
	Nettime=$(date +"%Y-%m-%d")
	#net=`sar -n DEV 1 1 | `
	echo -e "${Nettime}  [---inet---]" >> $1
	echo -e "${net_cur}\n" >> $1
}

function Swap(){
	swap_page_num=`sar -W $t $n | grep "Average:" | awk '{print $2 + $3}'`
	#swap_pg=`sar -W $t $n | tail -n3`
	swap_pg=`sar -W $t $n`
	Swaptime=$(date +"%Y-%m-%d")
	echo -e "${Swaptime}  [---Swap---]" >> $1
	echo -e "${swap_pg}" >> $1
	echo -e "Swap Page Num Total:${swap_page_num}\n" >> $1
}
clear
echo -e "===========Para-Set==========="
read -p "设置采样间隔(秒):" t
check $t
read -p "设置采样次数: " n
check $n
echo -e "========Monitoring-Mode========\n"
echo -e "[1]---Performance-ALL"
echo -e "[2]---Performance-MEM"
echo -e "[3]---Performance-CPU"
echo -e "[4]---Performance-Disk"
echo -e "[5]---Performance-Inet"
echo -e "[6]---Performance-Swap\n"
read -p "Select Model[1-6]: " selt

case $selt in
1 )
	echo -e "\033[31m System Monitoring......[ALL]\033[0m"
	[ ! -d ${path_bc}/${folder_nm}/${folder_nm_1} ] && mkdir -p ${path_bc}/${folder_nm}/${folder_nm_1}
	ALL ${path_all};
	#echo -e "\033[32m [Detail Log PATH]: ${path_bc}/${folder_nm}/${folder_nm_1}/Performance-ALL.log\033[0m"
	more ${path_bc}/${folder_nm}/${folder_nm_1}/Performance-ALL.log
;;
2 )
	echo -e "\033[31m System Monitoring......[Mem]\033[0m"
	[ ! -d ${path_bc}/${folder_nm}/${folder_nm_2} ] && mkdir -p ${path_bc}/${folder_nm}/${folder_nm_2};
	Mem ${path_Mem};
	#echo -e "\033[32m [Detail Mem Log PATH2]: ${path_bc}/${folder_nm}/${folder_nm_2}/Performance-Mem.log\033[0m"
	more ${path_bc}/${folder_nm}/${folder_nm_2}/Performance-Mem.log
;;
3 )
	echo -e "\033[31m System Monitoring......[CPU]\033[0m"
	[ ! -d ${path_bc}/${folder_nm}/${folder_nm_3} ] && mkdir -p ${path_bc}/${folder_nm}/${folder_nm_3};
	Cpu ${path_Cpu};
	#echo -e "\033[32m [Detail CPU Log PATH3]: ${path_bc}/${folder_nm}/${folder_nm_3}/Performance-Cpu.log\033[0m"
	more ${path_bc}/${folder_nm}/${folder_nm_3}/Performance-Cpu.log
;;
4 )
	echo -e "\033[31m System Monitoring......[Disk]\033[0m"
	[ ! -d ${path_bc}/${folder_nm}/${folder_nm_4} ] && mkdir -p ${path_bc}/${folder_nm}/${folder_nm_4};
	Disk ${path_Disk};
	#echo -e "\033[32m [Detail Disk Log PATH4]: ${path_bc}/${folder_nm}/${folder_nm_4}/Performance-Disk.log\033[0m"
	more ${path_bc}/${folder_nm}/${folder_nm_4}/Performance-Disk.log
;;
5 )
	echo -e "\033[31m System Monitoring......[Net]\033[0m"
	[ ! -d ${path_bc}/${folder_nm}/${folder_nm_5} ] && mkdir -p ${path_bc}/${folder_nm}/${folder_nm_5};
	Net ${path_Net};
	#echo -e "\033[32m [Detail Net Log PATH5]: ${path_bc}/${folder_nm}/${folder_nm_5}/Performance-Net.log\033[0m"
	more ${path_bc}/${folder_nm}/${folder_nm_5}/Performance-Net.log
;;
6 )
	echo -e "\033[31m System Monitoring......[Swap]\033[0m"
	[ ! -d ${path_bc}/${folder_nm}/${folder_nm_6} ] && mkdir -p ${path_bc}/${folder_nm}/${folder_nm_6};
	Swap ${path_Swap};
	#echo -e "\033[32m [Detail Swap Log PATH6]: ${path_bc}/${folder_nm}/${folder_nm_6}/Performance-Swap.log\033[0m"
	more ${path_bc}/${folder_nm}/${folder_nm_6}/Performance-Swap.log
;;
exit )
	echo "GOOD EYE!"
	exit 0
;;
* )
	./$0
;;
esac 

运行界面

在这里插入图片描述
必填参数:采样间隔、次数
监测模式共计6种模式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁墩墩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值