编写SHELL脚本监控主机
1、用vi命令在/root目录是新建一个脚本文件sysmon.sh:
内容如下:
#!/bin/bash
dug=$(df-h|grep”/$”|awk'{print$4}’|awk-F%'{print$1}’)
cug=$(expr100-$(mpstat|tail-1|awk'{print$10}’|awk-F.'{print$1}’))
mug=$(expr$(free|grep”cache:”|awk'{print$3}’)\*100/$(free|grep”Mem:”|awk'{print$2}’))
alog=”/tmp/alert.txt”
AMAIL=”root@localhost.localdomain”
if[$dug-gt3]
then
echo”磁盘占用率:$dug%” $alog
fi
if[$cug-gt2]
then
echo”CPU使用率:$cug%” $alog
fi
if[$mug-gt2]
then
echo”内存使用率:$mug%” $alog
fi
if[-f$alog]
then
cat$alog|mail-s”HostAlert”$AMAIL
rm-fr$alog
fi
截图如下:
(这里使用率都取的小值,为了使验证结果更加明显,根据实际环境而有所不同)
附:
a:使用df命令提取根分区的磁盘占用率:如下图所示:
使用df-h命令查看磁盘分区的使用情况,其中根分区的已用空间是8%
用如下图中的命令可以过滤磁盘的已用空间
[root@shell~]#df-h|grep”/$”|awk'{print$4}’|awk-F%'{print$1}’
b:使用mpstat命令提取CPU使用率(需要先安装sysstat软件包)。如下图所示:其中%idle表示CPU空闲时间百分比
用如下图中的命令可以得到CPU已用空间并赋值给变量CUG
[root@shell~]#cug=$(expr100-$(mpstat|tail-1|awk'{print$10}’|awk-F.'{print$1}’))[root@shell~]#echo$cug
c:使用free命令查看内存的使用情况。其中划红线的表示空余内存。
第1行:
total内存总数:1035108used已经使用的内存数:500928free空闲的内存数:534180shared当前已经废弃不用,总是0buffersBufferCache内存数:28968cachedPageCache内存数:348204关系:total=used+free第2行:-/+buffers/cache的意思相当于:-buffers/cache的内存数:123756(等于第1行的used-buffers-cached)+buffers/cache的内存数:911352(等于第1行的free+buffers+cached)所以:-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。第三行单独针对交换分区:为了提高磁盘存取效率,Linux做了一些精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:BufferCache和PageCache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了I/O系统调用(比如read,write,getdents)的时间。
用如下图中的命令可以得到内存使用率并赋值给变量mug:
[root@shell~]#mug=$(expr$(free|grep”cache:”|awk'{print$3}’)\*100/$(free|grep”Mem:”|awk'{print$2}’))
[root@shell~]#echo$mug
2、使用chmod命令给sysmon.sh文件增加执行(x)权限
3、测试sysmon.sh脚本的执行情况
a:本人实验环境为Linux5.5,使用其本身自带的sendmail发送邮件验证:
【补充:所有发邮件的端口都是:25号端口、ICMP协议】
b:确认有可用的邮件服务器,然后调低监控阈值,执行sysmon.sh脚本进行测试
c:查收名为root@localhost.localdomain的邮箱(生产环境写具体报警邮箱),确认警告邮件内容
邮件内容如下:
4、设置crontab计划任务,每隔半小调用一次sysmon.sh脚本程序,并重新启动crond服务。
5、操作完成。
http://www.bjdcxr.com
充满了恐惧的声音,一种不确定的归宿的流动。