千锋扣丁学堂Linux培训之用Linux Shell脚本来监控磁盘使用情况并发送邮件

ITxuexi_66 · · 3719 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

今天千锋扣丁学堂Linux培训老师给大家分享一篇关于解析Linux Shell脚本来监控磁盘使用情况并发送邮件的详细介绍,目前在市场上有很多用来监控Linux系统的监控工具,当系统到达阀值后它将发送一封邮件。它监控所有的东西例如CPU利用率、内存利用率、交换空间利用率、磁盘空间利用率等等。然而,它更适合小环境和大环境。 想一想如果你只有少量系统,那么什么是最好的方式来应对这种情况。 是的,我们想要写一个shell脚本来实现。 在这篇指南中我们打算写一个shell脚本来监控系统的磁盘空间使用率。当系统到达给定的阀值,它将给对应的邮件地址发送一封邮件。在这篇文章中我们总共添加了四个shell脚本,每个用于不同的目的。之后,我们会想出其他shell脚本来监控CPU,内存和交换空间利用率。 在此之前,我想澄清一件事,根据我观察的磁盘空间使用率shell脚本使用情况。 大多数用户在多篇博客中评论说,当他们运行磁盘空间使用率脚本时他们获得了以下错误。 # sh /opt/script/disk-usage-alert-old.sh /dev/mapper/vg_2g-lv_root test-script.sh: line 7: [: /dev/mapper/vg_2g-lv_root: integer expression expected / 9.8G 是的,这是对的。甚至,当我第一次运行这个脚本的时候我遇到了相同的问题。之后,我发现了根本原因。 当你在基于RHEL5&RHEL6的系统上运行包含用于磁盘空间警告的df-h或df-H的shell脚本中时,你会发现上述错误信息,因为输出格式不对,查看下列输出。 为了解决这个问题,我们需要用df-Ph(POSIX输出格式),但是默认的df-h在基于RHEL7的系统上运行的很好。 # df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_2g-lv_root 10G 6.7G 3.4G 67% / tmpfs 7.8G 0 7.8G 0% /dev/shm /dev/sda1 976M 95M 830M 11% /boot /dev/mapper/vg_2g-lv_home 5.0G 4.3G 784M 85% /home /dev/mapper/vg_2g-lv_tmp 4.8G 14M 4.6G 1% /tmp 方法一:LinuxShell脚本来监控磁盘空间使用率和发送邮件 你可以使用下列shell脚本在Linux系统中来监控磁盘空间使用率。 当系统到达给定的阀值限制时,它将发送一封邮件。在这个例子中,我们设置阀值为60%用于测试目的,你可以改变这个限制来符合你的需求。 如果超过一个文件系统到达给定的阀值,它将发送多封邮件,因为这个脚本使用了循环。 同样,替换你的邮件地址来获取这份警告。 # vi /opt/script/disk-usage-alert.sh #!/bin/sh df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output; do echo $output used=$(echo $output | awk '{print $1}' | sed s/%//g) partition=$(echo $output | awk '{print $2}') if [ $used -ge 60 ]; then echo "The partition \"$partition\" on $(hostname) has used $used% at $(date)" | mail -s "Disk Space Alert: $used% Used On $(hostname)" [email protected] fi done 输出:我获得了下列两封邮件警告。 The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019 The partition "/dev/mapper/vg_2g-lv_root" on 2g.CentOS7 has used 67% at Mon Apr 29 06:16:14 IST 2019 最终添加了一个cronjob来自动完成。它会每10分钟运行一次。 # crontab -e */10 * * * * /bin/bash /opt/script/disk-usage-alert.sh 方法二:LinuxShell脚本来监控磁盘空间使用率和发送邮件 作为代替,你可以使用下列的shell脚本。对比上面的脚本我们做了少量改变。 # vi /opt/script/disk-usage-alert-1.sh #!/bin/sh df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output; do max=60% echo $output used=$(echo $output | awk '{print $1}') partition=$(echo $output | awk '{print $2}') if [ ${used%?} -ge ${max%?} ]; then echo "The partition \"$partition\" on $(hostname) has used $used at $(date)" | mail -s "Disk Space Alert: $used Used On $(hostname)" [email protected] fi done 输出:我获得了下列两封邮件警告。 The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019 The partition "/dev/mapper/vg_2g-lv_root" on 2g.CentOS7 has used 67% at Mon Apr 29 06:16:14 IST 2019 最终添加了一个cronjob来自动完成。它会每10分钟运行一次。 # crontab -e */10 * * * * /bin/bash /opt/script/disk-usage-alert-1.sh 方法三:LinuxShell脚本来监控磁盘空间使用率和发送邮件 我更喜欢这种方法。因为,它工作起来很有魔力,你只会收到一封关于所有事的邮件。 这相当简单和直接。 */10 * * * * df -Ph | sed s/%//g | awk '{ if($5 > 60) print $0;}' | mail -s "Disk Space Alert On $(hostname)" [email protected] 输出:我获得了一封关于所有警告的邮件。 Filesystem Size Used Avail Use Mounted on /dev/mapper/vg_2g-lv_root 10G 6.7G 3.4G 67 / /dev/mapper/vg_2g-lv_home 5.0G 4.3G 784M 85 /home 方法四:LinuxShell脚本来监控某个分区的磁盘空间使用情况和发送邮件 # vi /opt/script/disk-usage-alert-2.sh #!/bin/bash used=$(df -Ph | grep '/dev/mapper/vg_2g-lv_dbs' | awk {'print $5'}) max=80% if [ ${used%?} -ge ${max%?} ]; then echo "The Mount Point "/DB" on $(hostname) has used $used at $(date)" | mail -s "Disk space alert on $(hostname): $used used" [email protected] fi 输出:我得到了下面的邮件警告。 The partition /dev/mapper/vg_2g-lv_dbs on 2g.CentOS6 has used 82% at Mon Apr 29 06:16:14 IST 2019 最终添加了一个cronjob来自动完成这些工作。它将每10分钟运行一次。 # crontab -e */10 * * * * /bin/bash /opt/script/disk-usage-alert-2.sh 注意:你将在10分钟后收到一封邮件警告,因为这个脚本被计划为每10分钟运行一次(但也不是精确的10分钟,取决于时间)。 例如这个例子。如果你的系统在8:25到达了限制,你将在5分钟后收到邮件警告。希望现在讲清楚了。 以上就是关于千锋扣丁学堂Linux培训之用Linux Shell脚本来监控磁盘使用情况并发送邮件的详细介绍,最后想要学好Linux开发小编给大家推荐口碑良好的扣丁学堂,扣丁学堂有专业老师制定的Linux学习路线图辅助学员学习,此外还有与时俱进的Linux课程体系和Linux视频教程供大家学习,想要学好Linux开发技术的小伙伴快快行动吧。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3719 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传