加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 16:31:59 所属栏目:安全 来源:网络整理
导读:我与众多同学一样,在没有学习shell编程之前是对shell编程是一头雾水的,然而它能做什么我也不知道,就是觉得能够使用一个与别人不一样的方式去管理系统。现在我慢慢的懂shell的重要性,为小型的机房里面做一个小小的shell监控足够,当然大型的机房不能使用s

我与众多同学一样,在没有学习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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读