【linux shell】服务器系统自动化巡检脚本资源状况统计

        运维服务器系统的时候需要定期检查服务器系统资源状况,如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更加直观

通过制表结果可以进行筛选处理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值