要求:监控(本地主机)磁盘使用情况并邮件报警
分析:
任何一个分区使用到80%就发送一个邮件/短信通知提醒几个人磁盘的使用情况; 任何一个分区使用到90%以上就在邮件主题给出警告(warning); Linux服务器上发送邮件程序我们使用sendmail。
解答:
第1步: 安装并启动sendmail服务并测试
[root@myhost ~]# yum install -y sendmail mailx
[root@myhost ~]# /bin/systemctl stop sendmail.service
[root@myhost ~]# ps -ef |grep sendmail
[root@myhost ~]# netstat -lntup |grep 25
[root@myhost ~]# lsof -i:25
[root@myhost ~]# echo "This is test mail" | mail -s 'Test mail' meve@qq.com
第2步:测试查看磁盘使用情况的命令
方法1:
[root@myhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 40G 13G 26G 33% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 1.8G 428K 1.8G 1% /run
tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
tmpfs 354M 0 354M 0% /run/user/0
tmpfs 354M 0 354M 0% /run/user/1004
[root@myhost ~]# df -h|grep -o [0-9]*%
%
33%
0%
0%
1%
0%
0%
0%
[root@myhost ~]# df -h|grep -o [0-9]*%|grep -o '[0-9]\+'
33
0
0
1
0
0
0
方法2:
[root@myhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda1 41152832 12756544 26299188 33% /
devtmpfs 1931300 0 1931300 0% /dev
tmpfs 1809252 0 1809252 0% /dev/shm
tmpfs 1809252 456 1808796 1% /run
tmpfs 1809252 0 1809252 0% /sys/fs/cgroup
tmpfs 361852 0 361852 0% /run/user/0
tmpfs 361852 0 361852 0% /run/user/1004
[root@myhost ~]# df |sed 1d
/dev/xvda1 41152832 12756476 26299256 33% /
devtmpfs 1931300 0 1931300 0% /dev
tmpfs 1809252 0 1809252 0% /dev/shm
tmpfs 1809252 456 1808796 1% /run
tmpfs 1809252 0 1809252 0% /sys/fs/cgroup
tmpfs 361852 0 361852 0% /run/user/0
tmpfs 361852 0 361852 0% /run/user/1004
[root@myhost ~]# df |sed 1d | awk '{print $1,$5}'
/dev/xvda1 33%
devtmpfs 0%
tmpfs 0%
tmpfs 1%
tmpfs 0%
tmpfs 0%
tmpfs 0%
[root@myhost ~]# df |sed 1d | awk '{print $1,$5}'|tr -d %[root@myhost ~]# df -TPh
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda1 ext3 40G 13G 26G 33% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs tmpfs 1.8G 456K 1.8G 1% /run
tmpfs tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
tmpfs tmpfs 354M 0 354M 0% /run/user/0
tmpfs tmpfs 354M 0 354M 0% /run/user/1004
[root@myhost ~]# df -TPh|awk '{print $6}'
Use%
33%
0%
0%
1%
0%
0%
0%
[root@myhost ~]# df -TPh|awk '{print +$6}'
0
33
0
0
1
0
0
0
方法3:
[root@myhost ~]# df -TPh
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda1 ext3 40G 13G 26G 33% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs tmpfs 1.8G 456K 1.8G 1% /run
tmpfs tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
tmpfs tmpfs 354M 0 354M 0% /run/user/0
tmpfs tmpfs 354M 0 354M 0% /run/user/1004
[root@myhost ~]# df -TPh|awk '{print $6}'
Use%
33%
0%
0%
1%
0%
0%
0%
[root@myhost ~]# df -TPh|awk '{print +$6}'
0
33
0
0
1
0
0
0
#注意$6前的+号,使用算术运算符进行操作时,操作数自动转换为数值
方法4:
[root@myhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda1 ext3 40G 13G 26G 33% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs tmpfs 1.8G 456K 1.8G 1% /run
tmpfs tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
tmpfs tmpfs 354M 0 354M 0% /run/user/0
tmpfs tmpfs 354M 0 354M 0% /run/user/1004
[root@myhost ~]# df -Th|awk -F '[ |%]+' 'NR>1 { print $1 " " $6}'
/dev/xvda1 33
devtmpfs 0
tmpfs 0
tmpfs 1
tmpfs 0
tmpfs 0
tmpfs 0
第3步:编写监控脚本
#!/bin/sh
source /etc/profile
#define variable
usedList=`df -h|grep -o [0-9]*%|grep -o '[0-9]\+'`
emailArray=('meve@qq.com' 'yuki@qq.com')
happenTime=`date "+%Y-%m-%d %H:%M:%S" `
for i in ${usedList}
do
if [ ${i} -ge 80 -a ${i} -le 90 ];then
for email in ${emailArray[*]}
do
echo "NOTICE: Disk space for your server, already used ${i}%, ${happenTime} " | mail -s 'Disk Space Notice' ${email}
done
elif [ ${i} -gt 90 ];then
for email in ${emailArray[*]}
do
echo "WARNING: Low disk space for your server, already used ${i}%, ${happenTime} " | mail -s 'Disk Space Warning' ${email}
done
fi
done