当前位置:   article > 正文

Shell脚本之linux服务器磁盘利用率监控_xshell查看磁盘使用情况

xshell查看磁盘使用情况

一、需求说明

  作为一名主机运维工程师,日常工作中我们每天都需要巡检服务器的运行情况,包括服务器的网络通断性、磁盘利用率、服务进程等内容。为了减少工作量我们可以通过编写shell脚本,实现服务器的批量巡检。写好脚本之后我们可以设置定时任务,将巡检结果邮件发送给自己就OK啦。我们查看磁盘利用率就是使用df -h的命令,可以显示各磁盘分区的使用情况,此脚本就是基于此命令基础实现。
在这里插入图片描述

二、脚本内容

  脚本主要设计思路是通过ssh免密远程登录待巡检主机,并执行df -h命令。通过awk命令过滤中磁盘利用率列值并与阈值进行比较,超过阈值的值记录下来。配置定时任务执行脚本,将巡检结果邮件告知。
  脚本包含文件如下:

  • 主脚本文件:disk_check.sh
  • 待巡检主机列表:hosts.txt
  • 检查结果临时文件:df.txt
  • 超过阈值磁盘信息临时文件:ls.txt

  脚本主体内容如下:

#!/bin/bash
#scriptname: disk_check.sh 
#author: wuhs
#description: 此脚本用于检查linux服务器的磁盘使用率,超过预警阈值则邮件告警
#version: v1.0

#参数定义
#脚本工作目录
resultfiledir=/root/scripts/xunjian/diskinfo
#待巡检服务器列表
hostlist="/root/scripts/xunjian/diskinfo/hosts.txt"
#告警阈值
warnsize=95
#切换到工作目录,定时任务执行时默认在bash路径下执行,所以需要在脚本中切换路径
curdir=`cd -P $(dirname $0); pwd`
cd $curdir

#删除上一次执行记录,也可以执行完成脚本后删除,执行前删除是方便收到告警时人工核查
rm -rf $resultfiledir/df.txt
#通过while循环读取待巡检服务器列表
while read line
do
  #获取带巡检主机名或者IP地址,建议主机名
  host=`echo $line | awk '{print $1}'`
  #获取待巡检主机ssh端口,考虑部分主机考虑安全修改了ssh服务端口
  port=`echo $line | awk '{print $2}'`
  #将当前巡检的主机写入巡检结果df.txt文件
  echo "$host 磁盘检查结果" >> $resultfiledir/df.txt
  #将获取到的df -h数据写入到df.txt文件,记得采用追加写入的方式
  ssh $host -p $port -n df -h >> $resultfiledir/df.txt
done <"$hostlist"
#获取磁盘使用率列值
list=`cat df.txt |awk '{print int($5)}'`
rm -rf ls.txt
#使用率值与阈值进行比较
for val in $list
do
    if [ "$val" -gt "$warnsize" ];then
        #过滤大于阈值的磁盘结果行和主机名记录行
        cat df.txt |egrep "磁盘检查|$val%" |egrep -B 1 "$val%" >> ls.txt
    fi
done
#保证顺序的情况下删除重复项
awk '!a[$0]++' ls.txt > tmp.txt
rm -rf ls.txt
mv tmp.txt ls.txt
#发送告警邮件
if [ -s ls.txt ]; then
    mailx -s "有超过磁盘使用率告警阈值$warnsize %的磁盘,请检查!" 
    1234567qq@qq.com < ls.txt
else
    if [ $(date +%H) -eq 09 ];then
      mailx -s "磁盘使用率检查结果正常!" 1234567qq@qq.com < df.txt
    fi
fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

三、使用示例

1、手动执行脚本

[root@s146 diskinfo]# sh disk_check.sh
[root@s146 diskinfo]# ll
total 16
-rw-r–r-- 1 root root 1098 Oct 26 17:46 df.txt
-rwxr–r-- 1 root root 1432 Oct 26 17:17 disk_check.sh
-rw-r–r-- 1 root root 16 Oct 26 16:47 hosts.txt
-rw-r–r-- 1 root root 150 Oct 26 17:46 ls.txt
[root@s146 diskinfo]# cat ls.txt
s146 磁盘检查结果
/dev/sda1 1014M 207M 808M 21% /boot
s166 磁盘检查结果
/dev/mapper/centos-root 38G 11G 27G 30% /
在这里插入图片描述

2、定时任务执行

  • 首先配置定时任务,每天的早上6点到晚上10点之间每个小时执行一次。定时任务的配置可以参考Linux之crontab命令

[root@s146 diskinfo]# crontab -l
####磁盘使用率监测定时任务####
12 6-22/1 * * * /root/scripts/xunjian/diskinfo/diskinfo_check.sh &> /tmp/diskinfo_check.log

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/154111
推荐阅读
相关标签
  

闽ICP备14008679号