《shell脚本系统监控-------邮件告警》

前端之家收集整理的这篇文章主要介绍了《shell脚本系统监控-------邮件告警》前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我与众多同学一样,在没有学习shell编程之前是对shell编程是一头雾水的,然而它能做什么我也不知道,就是觉得能够使用一个与别人不一样的方式去管理系统。现在我慢慢的懂shell的重要性,为小型的机房里面做一个小小的shell监控足够,当然大型的机房不能使用shell来监控系统,因为大型机房监控的机器有很多,而它们的状态是以报表和图形界面的形式来汇报问题的。


接下来我写一篇关于怎么用shell来进行系统监控并在进行发送邮件


创建一个文件

vim monitor.sh

#/bin/bash----默认执行方式

#以下为变量:

HOST=`hostname`---输出当前系统的机器名
SYS=`uname-a`---输出当前系统信息
DATE=`date"+%F%H:%M:%S"`---输出当前系统时间
WEB=/var/www/html/$HOST.html---创建当前系统的网站的网页(以该脚本命名)
cpu=`cat/proc/cpuinfo|grepprocessor|wc-l`---输出当前系统的cpu信息(作为判断信息)
ID=`vmstat|awk'NR==3{print$15}'`----输出当前系统cpu的IP号码
WA=`vmstat|awk'NR==3{print$16}'`---输出系统的I/O的等待百分比
LOAD=`w|awk'NR==1{print$8}'|awk-F","'{print$1}'`---输出系统的负载值
DISK=`df-h|awk'NR==3{print$4}'|awk-F"%"'{print$1}'`---输出硬盘的已经使用值
FREE=`free-m|awk'NR==2{print$4}'`----输出内存空闲值
CACHE=`free-m|awk'NR==2{print$7}'`----输出内存缓存值
TCP=`netstat-atunlp`----输出当前系统的网络链接状态
IF=`iftop-ieth0-P-Nn-L100-s1-t>>$WEB`---输出系统的eth0接口的状态



#以下是执行上面所做的变量的输出
#在这里对cpu的线程数,cpu的LOAD,系统磁盘的状态,内存剩余。这四个做一个邮件的告警

echo"designforleoheng"

echo"######---主机名---##########"
echohostname=`echo$HOST`


echo"######---系统参数---########"
echosystem=`echo$SYS`


echo"######---cpu线程数---#######"
echoprocessor=`echo$cpu`
if[$cpu-eq4];then
`echo"wa=$WAandid=$IDcpuprocessorisok"|mail-s"$HOSTcpu"xxxxxxxx@qq.com`
else
`echo"wa=$WAandid=$IDcpuprocessorhaveproblem"|mail-s"$HOSTcpu"xxxxxxxx@qq.com`
fi


echo"######---cpu的ID---#########"
echocpu~id=`echo$ID`


echo"######---cpu的WA---#########"
echocpu~wa=`echo$WA`


echo"######---cpu的LOAD---#######"
echocpu-load=`echo$LOAD`
if[$LOAD>0.05];then
`echo"cpu-LOADisbeyondtherate"|mail-s"cpu-LOAD"xxxxxxxx@qq.com`
else
`echo"cpu-LOADisok"|mail-s"cpu-LOAD"xxxxxxxx@qq.com`
fi



echo"######---系统磁盘的状态---##"
echodisk-status=`echo$DISK`
if[$DISK>80];then
`echo"SYSTEM-DISKisbeyondthe80%"|mail-s"SYSTEM-DISK"xxxxxxxx@qq.com`
else
`echo"SYSTEM-DISKisok"|mail-s"SYSTEM-DISK"xxxxxxxx@qq.com`
fi



echo"######---内存剩余---########"
echomemory=`echo($FREE+$CACHE)KB`
memory=$(($FREE+$CACHE))
echo$memory
if[$memory<1000];then
`echo"SYSTEM-memorylessthan1000M"|mail-s"SYSTEM-memory"xxxxxxxx@qq.com`
else
`echo"SYSTEM-memoryisok"|mail-s"SYSTEM-memory"xxxxxxxx@qq.com`
fi



echo"######---TCP相关连接状态----#"
echotcp-status=`echo$TCP`



echo"######---eth0的流量---######"
echo$IF


echo"END"
####----退出shell之后---#####
#部分同学的邮件无法发出,可能由于一下两个原因
1.没有安装mailx软件包
yuminstall-ymailxsendmail


2.系统设置没有做以下操作,将inet_interfaces选项改为all,如下
vim/etc/postfix/main.cf

inet_interfaces=all

猜你在找的Bash相关文章