基于sysstat实现的脚本检测工具
脚本实现功能:
- 通过选择不同模式实现全量或单个指标检测
- 把监测记录存储本地指定路径
#!/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种模式