使用Linux shell脚本来监视磁盘使用情况并发送邮件
市场上有许多监控Linux系统的监控工具,当系统达到阈值时,它会发送一封电子邮件。它监视所有内容,例如CPU利用率,内存利用率,交换空间利用率,磁盘空间利用率等。但是,它更适合小型环境和大型环境。
想一想,如果你只有少量的系统,那么处理这种情况的最佳方法是什么。
是的,我们想编写一个shell脚本来实现。
在本教程中,我们将编写一个shell脚本来监视系统的磁盘空间使用情况。当系统达到给定阈值时,它将向相应的电子邮件地址发送电子邮件。在本文中,我们总共添加了四个shell脚本,每个脚本用于不同的目的。之后,我们将提出其他shell脚本来监视CPU,内存和交换空间利用率。
在此之前,我想澄清一件事,基于我观察到的shell脚本使用的磁盘空间使用情况。
大多数用户在多个博客上评论说,他们在运行磁盘空间使用脚本时遇到以下错误。
#sh /opt/script/disk-usage-alert-old.sh
的/dev /映射器/vg_2g-即lv_root
Test-script.sh:第7行: [:/dev/mapper/vg_2g-lv_root:整数表达式预期
/9.8G
是的,这是正确的。即使我第一次运行此脚本,我遇到了同样的问题。在那之后,我找到了根本原因。
在基于RHEL 5和RHEL 6的系统上运行包含df -h或df -H的shell脚本以获取磁盘空间警告时,您将找到上述错误消息,因为输出格式不正确,请检查以下输出。要解决这个问题,我们需要使用df -Ph(POSIX输出格式),但默认的df -h在基于RHEL 7的系统上运行正常。
#df -h
使用的文件系统大小可用使用%挂载
的/dev /映射器/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 /映射器/vg_2g-lv_home
5.0G 4.3G 784M 85%/home
的/dev /映射器/vg_2g-lv_tmp
4.8G 14M 4.6G 1%/tmp
方法1:Linux shell脚本,用于监视磁盘空间使用情况和发送邮件
您可以使用以下shell脚本来监视Linux系统上的磁盘空间使用情况。
当系统达到给定的阈值限制时,它将发送电子邮件。在此示例中,我们将阈值设置为60%用于测试目的,您可以更改此限制以满足您的需要。
如果多个文件系统达到给定阈值,它将发送多个消息,因为此脚本使用循环。
再次,替换您的电子邮件地址以获得此警告。
#vi /opt/script/disk-usage-alert.sh
#!/bin/sh的
Df -Ph | grep -vE'^ Filesystem | tmpfs | cdrom'| awk'{print $ 5,$ 1}'|读取输出;
做
回声$输出
使用=$(echo $ output | awk'{print $ 1}'| sed s /%//g)
分区=$(echo $ output | awk'{print $ 2}')
如果[$ used -ge 60];然后Echo'$(hostname)上的分区\'$ partition \'在$(date)'|上使用了$ used% mail -s'磁盘空间警报: $使用%使用$(主机名)'[email protected]
网络连接
完成
输出:我收到了以下两封电子邮件警告。
2g.CentOS7上的分区'/dev/mapper/vg_2g-lv_home'在Mon Apr 29 06使用了85%: 16: 14 IST 2019
2g.CentOS7上的分区'/dev/mapper/vg_2g-lv_root'在Mon Apr 29 06使用了67%: 16: 14 IST 2019
最终添加了一个cronjob来自动化它。它将每10分钟运行一次。
#crontab -e
*/10 * * * */bin/bash /opt/script/disk-usage-alert.sh
方法2:Linux shell脚本,用于监视磁盘空间使用情况和发送邮件
相反,您可以使用以下shell脚本。我们对上面的脚本做了一些修改。
#vi /opt/script/disk-usage-alert-1.sh
#!/bin/sh的
Df -Ph | grep -vE'^ Filesystem | tmpfs | cdrom'| awk'{print $ 5,$ 1}'|读取输出;
做
MAX=60%
回声$输出
使用=$(echo $ output | awk'{print $ 1}')
分区=$(echo $ output | awk'{print $ 2}')
如果[$ {used%?} -ge $ {max%?}];然后
Echo'$(hostname)上的分区\'$ partition \'使用了$(date)'|的$ mail -s'磁盘空间警报: $ used使用$(主机名)'[email protected]网络连接
完成
输出:我收到了以下两封电子邮件警告。
2g.CentOS7上的分区'/dev/mapper/vg_2g-lv_home'在Mon Apr 29 06使用了85%: 16: 14 IST 2019
2g.CentOS7上的分区'/dev/mapper/vg_2g-lv_root'在Mon Apr 29 06使用了67%: 16: 14 IST 2019
最终添加了一个cronjob来自动化它。它将每10分钟运行一次。
#crontab -e
*/10 * * * */bin/bash /opt/script/disk-usage-alert-1.sh
方法3:Linux shell脚本,用于监视磁盘空间使用情况和发送邮件
我更喜欢这种方法。因为它神奇地工作,所以您只会收到有关所有内容的电子邮件。
这非常简单明了。
*/10 * * * * df -Ph | sed s /%//g | awk'{if($ 5>
60)打印$ 0;}'| mail -s'磁盘空间警报开$(主机名)'[受电子邮件保护]
输出:我收到了一封关于所有警告的电子邮件。
使用的文件系统大小可用使用
/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
方法4:Linux shell脚本,用于监视磁盘空间使用情况并为分区发送邮件
#vi /opt/script/disk-usage-alert-2.sh
#!/斌/庆典
使用=$(df -Ph | grep'/dev/mapper/vg_2g-lv_dbs'| awk {'print $ 5'})MAX=80%
如果[$ {used%?} -ge $ {max%?}];然后
$(主机名)上的Echo'The Mount Point'/DB'使用了$(日期)'|的$ mail -s' $(hostname)上的磁盘空间警报: $ used used'[email protected]
网络连接
输出:我收到了以下电子邮件警告。
2g.CentOS6上的分区/dev/mapper/vg_2g-lv_dbs在Mon Apr 29 06使用了82%: 16: 14 IST 2019
最终添加了一个cronjob来自动完成这项工作。它将每10分钟运行一次。
#crontab -e
*/10 * * * */bin/bash /opt/script/disk-usage-alert-2.sh
注意:您将在10分钟后收到电子邮件警告,因为脚本计划每10分钟运行一次(但不是10分钟,具体取决于时间)。
例如,这个例子。如果您的系统达到8: 25的限制,您将在5分钟后收到电子邮件警告。我希望现在能说清楚。