shell脚本实战-实现磁盘使用率超过90%就告警的三种方法v1版

Posted 互联网老辛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本实战-实现磁盘使用率超过90%就告警的三种方法v1版相关的知识,希望对你有一定的参考价值。

需求

时刻监控磁盘使用率,达到90%就开始告警。
告警可以使用:

  • 邮件告警
  • 钉钉告警
  • 微信告警

今天我们先来看最简单的V1的版本,实现简单需求,后面再增加功能

方法一:

awk 嵌套if循环

df -h|awk 'NR>1if(int($5)>80)print $1" (mounted on "$6") used "$5" will not enough space!^m^"elseprint $1" (mounted on "$6") used "$5" is ok"

awk这种方法,难度适中,本身AWK就作为一种变成语言存在,所以相对学起来比较难。

一条命令搞定的方法,难倒一大片小伙伴。

我们尽可能使用更清晰的方法来搞定。

方法二

最普遍的写法:

[root@UIS-cloud1 ~]# cat  dftest.sh 
#!/bin/bash
fnume=(`df -h |wc -l`-1)
for ((i=1;i<=fnume;i++))

do

    if [ `df -h |awk 'NR>1print int($5)' |head -$i|tail -1` -gt 80 ];then
        echo "`df -h |awk 'NR>1print $1" (mounted on "$6") used "$5" will not enough space!^m^"' |head -$i|tail -1`"
    else
        echo "`df -h |awk 'NR>1print $1" (mounted on "$6") used "$5" is ok"' |head -$i|tail -1`"

    fi

done

方法二要比方法一更容易理解,不习惯读长代码的小伙伴会觉得比较难。

你可以把方法二在拆分一下。 当然对于初学的小伙伴,还是建议如下的方法三:

方法三:

更简单的方法:

[root@itlaoxin41 ~]# cat df.sh 
#!/bin/bash
## 先判断文件是否存在
if [ -f df.txt ];then
`cat /dev/null > df.txt`
fi
num=`df -h |awk 'print int($5)'`
`df -h |awk 'print $1,int($5)' |grep -v "文件系统" >>df.txt`
## 打印磁盘名称和磁盘使用率
for i in $num 
do
if [ $i -gt 80 ];then 
disk=`grep $i df.txt |awk 'print $1'`
echo "$disk is not ok"
	
fi

done

方法三就比较容易了, 先判断df.txt是否存在,如果存在就清空,如果不存在在下面的脚本执行过程中,也会自己创建。

通过df -h 截取两方面的内容,一部分是磁盘名称,另一部分是磁盘使用率

后面可以为这个脚本增加邮件功能。

总结

一个脚本使用多种方法解决,可以很好的锻炼脚本能力。
另外在这个脚本的基础上,不断的加需求,直到成为一个最完美的脚本。

更多内容

没有基础的小伙伴可以参加视频课程:
https://edu.csdn.net/course/detail/38185

这套课程从零基础开始讲起,让你系统的掌握shell脚本的基础语法, 每个项目都值得深入去研究。

以上是关于shell脚本实战-实现磁盘使用率超过90%就告警的三种方法v1版的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本实战-实现磁盘使用率超过90%就告警的三种方法v1版

开放系统监控shell脚本

Linux之Shell脚本实战监控系统的磁盘空间使用率

监控cpu 内存 根分区使用率

监控磁盘使用率解决方案

Hdfs的DN节点数据磁盘大小不均衡如何处理