市场上有好多拿来监控Linux系统的监控工具,当系统抵达阈值后它将发送一封电邮。它监控所有的东西比如CPU借助率、内存借助率、交换空间借助率、磁盘空间借助率等等。但是,它更适宜小环境和大环境。
想一想假如你只有少量系统,这么哪些是最好的方法来应对此类情况。
是的,我们想要写一个shell脚本来实现。
在这篇手册中我们准备写一个shell脚本来监控系统的c盘空间使用率。当系统抵达给定的阈值,它将给对应的电邮地址发送一封电邮。在这篇文章中我们总共添加了四个shell脚本,每位用于不同的目的。以后,我们会想出其他shell脚本来监控CPU,显存和交换空间借助率。
在此之前,我想澄清一件事,按照我观察的c盘空间使用率shell脚本使用情况。
大多数用户在多篇博客中评论说,当她们运行c盘空间使用率脚本时她们获得了以下错误。
# 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
是的,这是对的。甚至,当我第一次运行这个脚本的时侯我遇见了相同的问题。以后linux 目录里的文件自动发邮件,我发觉了根本诱因。
当你在基于RHEL5&RHEL6的系统上运行包含用于c盘空间警告的df-h或df-H的shell脚本中时linux源代码分析,你会发觉上述错误信息,由于输出格式不对,查看下述输出。
为了解决这个问题,我们须要用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脚本来监控c盘空间使用率和发送短信
你可以使用下述shell脚本在Linux系统中来监控c盘空间使用率。
当系统抵达给定的阈值限制时,它将发送一封电邮。在这个反例中,我们设置阈值为60%用于测试目的,你可以改变这个限制来符合你的需求。
假如超过一个文件系统抵达给定的阈值,它将发送多封电邮linux find,由于这个脚本使用了循环。
同样,替换你的电邮地址来获取这份警告。
# 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脚本来监控c盘空间使用率和发送短信
作为替代,你可以使用下述的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脚本来监控c盘空间使用率和发送短信
我更喜欢这些技巧。由于linux 目录里的文件自动发邮件,它工作上去很有魔力,你只会收到一封关于所有事的电邮。
这相当简单和直接。
*/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脚本来监控某个分区的c盘空间使用情况和发送短信
# 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分钟后收到电邮警告。希望现今讲清楚了。
天下数据是国外屈指可数的拥有多处海外自建机房的新型IDC服务商,被业界公觉得“中国IDC行业首选品牌”。
天下数据与全球近120多个国家顶尖机房直接合作,提供包括台湾、美国、韩国、日本、台湾、新加坡、荷兰、法国、英国、德国、埃及、南非、巴西、印度、越南等国家和地区的服务器、云服务器的租用服务,须要的请联系天下数据客服!
除提供传统的IDC产品外,天下数据的主要职责是为大小型企业提供更精细、安全、满足个性需求的多样化服务器解决方案,非常是在直销、金融、视频、流媒体、游戏、电子商务、区块链、快消、物联网、大数据等众多行业,为广大顾客解决服务器租用中遇见的各类问题。