【linux shell】服务器系统自动化巡检脚本资源状况统计
运维服务器系统的时候需要定期检查服务器系统资源状况,如CPU、内存、硬盘这些资源消耗信息统计,在这种情况下也可以用开源的监控系统导出相应的需求信息或者直观的通过监控平台去查看资源状况;本文将介绍另一种方式通过Linux shell脚本实现服务器系统资源状况信息统计;因在项目上客户服务器平台上不允许安装与项目无关的服务(监控软件),所以只能通过自动化脚本解决。服务器系统资源状况统计巡检脚本:vim
·
运维服务器系统的时候需要定期检查服务器系统资源状况,如CPU、内存、硬盘这些资源消耗信息统计,在这种情况下也可以用开源的监控系统导出相应的需求信息或者直观的通过监控平台去查看资源状况。
本文将介绍另一种方式通过Linux shell脚本实现服务器系统资源状况信息统计;因在项目上服务器上不允许安装与项目无关的服务(监控软件),所以只能通过自动化脚本解决。
1.服务器系统资源状况统计巡检脚本:
vim system_check_server_auto.sh
#!/bin/bash
time_day=`date +%Y-%m-%d_%H:%M:%S`
time_cront=`date +%Y%m%d%H%M%S`
time_cront_day=`date +%Y%m%d`
time_file=`date +%Y-%m-%d`
system_hostname=$(hostname | awk '{print $1}')
#获取服务器IP
system_ip=$(hostname -I| awk '{print $1}')
#获取总内存
mem_total=$(free -m | grep Mem| awk -F " " '{print $2}')
#获取剩余内存
mem_free=$(free -m | grep "Mem" | awk '{print $4}')
#获取已用内存
mem_use=$(free -m | grep Mem| awk -F " " '{print $2-$4-$6}')
#系统进程数
load_1=`ps -ef |wc -l`
#僵尸进程数
load_5=`top -b -n 1 |grep Tasks |awk '{print $10}'`
#CPU空闲id
load_15=`top -b -n 1 |grep Cpu |awk -F',' '{print $4}' |awk -F'id' '{print $1}'`
#过滤磁盘使用率大于60%目录,并加入描述
#disk_1=$(df -Ph | awk '{if(+$5>15) print "分区:"$6,"总空间:"$2,"使用空间:"$3,"剩余空间:"$4,"磁盘使用率:"$5}')
disk_most=$(df -P | awk '{if(+$5>0) print $2,$6,$1}'|grep -v ":/"|sort -nr|awk '{print $2}'|head -1)
disk_f=$(df -Ph|grep "$disk_most"$ | awk '{if(+$5>0) print $6}')
disk_total=$(df -Ph|grep "$disk_most"$ | awk '{if(+$5>0) print $2}')
disk_free=$(df -Ph|grep "$disk_most"$ | awk '{if(+$5>0) print $4}')
disk_per=$(df -Ph|grep "$disk_most"$ | awk '{if(+$5>0) print $5}')
disk_ux=$(df -P | awk '{if(+$5>0) print $5,$1}'|grep -v ":/"|sort -nr|awk -F"%" '{print $1}'|head -1)
if [[ $disk_ux -gt 60 ]]
then
#分区
disk_f_60=$(df -P | awk '{if(+$5>0) print $5,$1,$6}'|grep -v ":/"|sort -nr|awk '{print $3}'|head -1)
#磁盘使用率
disk_per_60=$(df -P | awk '{if(+$5>0) print $5,$1,$6}'|grep -v ":/"|sort -nr|awk '{print $1}'|head -1)
disk_status=不正常
else
#分区
disk_f_60=无
#磁盘使用率
disk_per_60=无
disk_status=正常
fi
#文件路径
CHECK_HOME="$(cd "`dirname "$0"`"; pwd)"
path="$CHECK_HOME"/monitor_system_check_"$time_file".txt
#内存阈值
mem_mo='70'
PERCENT=$(printf "%d%%" $(($mem_use*100/$mem_total)))
PERCENT_1=$(echo $PERCENT|sed 's/%//g')
if [[ $PERCENT_1 -gt $mem_mo ]]
then
mem_status_total="$mem_total"MB
mem_status_use="$mem_use"MB
mem_status_per=$PERCENT
mem_status=不正常
else
mem_status_total="$mem_total"MB
mem_status_use=$"$mem_use"MB
mem_status_per=$PERCENT
mem_status=正常
fi
if [[ ! -s $path ]] || [[ `grep 统计时间 $path|wc -l` -eq 0 ]];then
echo -e "统计时间 服务器IP 系统进程数 CPU空闲id 僵尸进程数 总内存大小 已用内存 内存使用率 内存巡检状态 分区 数据盘总空间 数据盘剩余空间 数据盘磁盘使用率 磁盘超60使用分区 磁盘超60使用率 磁盘状况" >> $path
fi
echo -e "$time_day $system_ip $load_1 $load_15 $load_5 $mem_status_total $mem_status_use $mem_status_per $mem_status $disk_f $disk_total $disk_free $disk_per $disk_f_60 $disk_per_60 $disk_status" >> $path
2.给脚本赋执行权限
chmod -x system_check_server_auto.sh
3.执行巡检脚本:
sh system_check_server_auto.sh
4.添加计划任务定时自动执行脚本:
这里使用的每分钟执。根据自己需求而定,比如每小时,每天,每周等。
crontab -l
* * * * * /bin/sh /opt/shell/system_check_server_auto.sh > /dev/null 2>&1
5.自动巡检脚本执行结果:
统计时间 服务器IP 系统进程数 CPU空闲id 僵尸进程数 总内存大小 已用内存 内存使用率 内存巡检状态 分区 数据盘总空间 数据盘剩余空间 数据盘磁盘使用率 磁盘超60使用分区 磁盘超60使用率 磁盘状况
2022-03-17_16:19:07 17.17.80.103 205 90.0% 0 24031MB 14724MB 61% 正常 / 256G 181G 26% 无 无 正常
2022-03-17_16:19:47 17.17.80.103 205 90.0% 0 24031MB 14724MB 61% 正常 / 256G 181G 26% 无 无 正常
2022-03-17_16:21:06 17.17.80.103 205 90.0% 0 24031MB 14728MB 61% 正常 / 256G 181G 26% 无 无 正常
2022-03-17_16:21:09 17.17.80.103 203 90.0% 0 24031MB 14729MB 61% 正常 / 256G 181G 26% 无 无 正常
2022-03-17_16:21:11 12.17.80.103 203 90.0% 0 24031MB 14729MB 61% 正常 / 256G 181G 26% 无 无 正常
2022-03-17_16:37:10 12.17.80.103 205 90.0% 0 24031MB 14742MB 61% 正常 / 256G 181G 26% 无 无 正常
2022-03-17_16:40:01 12.17.80.103 208 90.0% 0 24031MB 14749MB 61% 正常 / 256G 181G 26% 无 无 正常
2022-03-17_16:41:01 12.17.80.103 206 90.0% 0 24031MB 14729MB 61% 正常 / 256G 181G 26% 无 无 正常
6.通过以上结果汇总到Excel更加直观
通过制表结果可以进行筛选处理
更多推荐
已为社区贡献2条内容
所有评论(0)