当前位置:   article > 正文

Linux系统运维脚本:编写bash脚本程序监控服务器的磁盘空间,在磁盘使用率超过阈值时发送警告邮件

Linux系统运维脚本:编写bash脚本程序监控服务器的磁盘空间,在磁盘使用率超过阈值时发送警告邮件

目              录

一、要求

二、解决方案

(一)解决思路

(二)方案

三、脚本程序实现

(一)脚本代码和解释

1、脚本代码

2、代码解释

(二)脚本验证

1、脚本编辑

2、给予执行权限

3、运行脚本,查看效果

四、扩展


一、要求

        linux系统正常运行的过程中,一些应用程序会不断的产生日志和缓存等文件,这些数据一直会累加,占用硬盘空间。随着时间的推移,可能会占用大部分的磁盘空间,甚至占满。这样,可能导致业务程序运行出现异常、甚至导致有的业务程序停止运行。那么如何预防这种情况呢?

二、解决方案

(一)解决思路

        检测硬盘空间,可以采用df命令;然后通过shell命令,找到磁盘的空间占用率。发现空间快要满的时候,可以通过mail发出告警消息。通过这些命令,编一个bash的脚本文件,就可以实现需求。

(二)方案

       (1)通过ifconfig得到本机IP地址,或者hostname获取本机名称。

       (2)通过df、grep、awk等命令,获得硬盘的占有率

       (3)判断硬盘空间占用是否达到警戒线,比如80%

       (4)若超过80%,通过mail命令,发送email给维护人员。

三、脚本程序实现

        直接把脚本写出来,分享给大家。

(一)脚本代码和解释

1、脚本代码

        如下为编写的bash代码:

  1. #!/bin/bash
  2. #monitor available disk space
  3. #提取本服务器的IP地址信息
  4. IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
  5. SPACE=$(df -hP | grep '/$' | awk '{print int($5)}')
  6. if [ $SPACE -ge 80 ]
  7. then
  8. echo "$IP 服务器磁盘空间使率已经超过80%,请及时处理。"|mail -s "$IP 服务器硬盘告警" 124957736@qq.com
  9. fi
  10. echo "SPACE value: $SPACE"

2、代码解释

        脚本的主要目的是监控服务器的磁盘空间使用情况,并在磁盘空间使用率超过80%时发送警告邮件。以下是脚本的详细解释:

(1)#!/bin/bash

        这用于指示系统使用哪个解释器来执行此脚本。在这里,它告诉系统使用/bin/bash来执行此脚本。

(2)IP=ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`

       这行命令用于获取eth0网络接口的IP地址。

       ifconfig eth0:显示eth0网络接口的配置信息。

       grep "inet addr":从ifconfig的输出中筛选出包含“inet addr”的行。

       cut -f 2 -d ":":以冒号:为分隔符,提取第二个字段,这通常是IP地址前的部分,如inet addr:192.168.1.100中的192.168.1.100。

       cut -f 1 -d " ":以空格为分隔符,提取第一个字段,即IP地址本身。

       最终,IP变量将包含eth0网络接口的IP地址。

(3)SPACE=$(df -hP | grep '/$' | awk '{print int($5)}')

       这行命令用于获取根分区的磁盘空间使用率。

       df -hP:显示磁盘空间的使用情况,-h参数表示以人类可读的格式显示,-P参数表示以POSIX格式显示。

       grep '/$':筛选出以/结尾的行,这通常是根分区的行。

       awk '{print int($5)}':使用awk工具从df的输出中提取第五列,即磁盘的使用率,并将其转换为整数。

       最终,SPACE变量将包含根分区的磁盘空间使用率(整数形式)。

(4)if [ $SPACE -ge 80 ]

       这是一个条件判断语句,检查SPACE变量的值是否大于或等于80。

(5)then

       如果上述条件为真(即磁盘使用率超过80%),则执行接下来的代码块。

(6)echo "$IP 服务器磁盘空间使率已经超过80%,请尽快及时处理。"|mail -s "$IP 服务器硬盘超过警戒告警" 124957736@qq.com

       这行命令发送一封警告邮件。邮件的内容包括服务器的IP地址和一条消息,指出服务器的磁盘空间使用率已经超过80%,需要及时处理。邮件的收件人是 124957736@qq.com,邮件的标题是$IP 服务器硬盘告警。

(7)fi

       结束if条件语句。

(8)echo "SPACE value: $SPACE"

       这行命令在终端上显示SPACE变量的值,即根分区的磁盘空间使用率。

(二)脚本验证

1、脚本编辑

        使用编辑器,比如vi,把代码输入进去;

        保存这个脚本到一个文件中,比check_space.sh

2、给予执行权限

      chmod +x w check_space.sh

3、运行脚本,查看效果

        可以运行这个脚本来检查进程的运行情况,如下:

  1. [121yunwei@ecs-52a1 home]$ df
  2. Filesystem 1K-blocks Used Available Use% Mounted on
  3. devtmpfs 3961580 0 3961580 0% /dev
  4. tmpfs 3976852 0 3976852 0% /dev/shm
  5. tmpfs 3976852 401964 3574888 11% /run
  6. tmpfs 3976852 0 3976852 0% /sys/fs/cgroup
  7. /dev/vda1 102948772 86067012 12251796 88% /
  8. tmpfs 795368 0 795368 0% /run/user/1003
  9. [121yunwei@ecs-52a1 home]$
  10. [121yunwei@ecs-52a1 home]$
  11. [121yunwei@ecs-52a1 home]$ sh check_space.sh
  12. 服务器磁盘空间使率已经超过80%,请及时处理。
  13. SPACE value: 88
  14. [121yunwei@ecs-52a1 home]$
  15. [121yunwei@ecs-52a1 home]$

四、扩展

        在实际使用中,系统硬盘可能有多个,你可能可以需要更改检测的硬盘,以及调整告警阈值,你可稍微做些修改,就可以适合您的应用了。比如,设对应的硬盘的空间阈值,并把80%的阈值改成90%,你可以更改如下两行命令即可:

SPACE=$(df -hP | grep '/run$' | awk '{print int($5)}')

 if [ $SPACE -ge 90 ]

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

闽ICP备14008679号