说明:
本篇文章实现shell获取服务器内存使用率,超过指定值时通过mutt调用msmtp发送告警邮件!
msmtp是linux下的一个邮件收发客户端,而mutt则是一个email程序,是用来管理email的
实现:
1.安装msmtp
# wget http://downloads.sourceforge.net/msmtp/msmtp-1.4.16.tar.bz2?modtime=1217206451&big_mirror=0 # tar -jxvf msmtp-1.4.16.tar.bz2 # cd msmtp # ./configure --prefix=/usr/local/msmtp //./configure --help可以查看到默认安装是安装到哪个目录下面的 # make && make install # ./msmtp --version //查看配置文件位置 System configuration file name: /usr/local/msmtp/etc/msmtprc User configuration file name: /root/.msmtprc
如上所示msmtp有两个地方可以存放配置。在/usr/local/msmtp下面新建etc文件夹,在/usr/local/msmtp/etc新建msmtprc文件
# vim /usr/local/msmtp/etc/msmtprc //内容如下 # Set default values for all following accounts. defaults logfile /usr/local/msmtp/msmtp.log # The SMTP server of the provider. account test # SMTP邮件服务器地址 host smtp.qq.com # 发送的邮件Email from test@qq.com #发送方的QQ邮箱 auth login # 邮件服务器登录账号 user test@qq.com #发送方的QQ邮箱 # 邮件服务器登陆密码 password 123456 # Set a default account account default : test
2.msmtp测试
# /usr/local/msmtp/bin/msmtp youremail@test.com #接收方的QQ邮箱
输入任意字符,然后按Ctrl+D退出,查看邮件是否收到。
由于设置了日志,可以到 /usr/local/msmtp/msmtp.log,查看日志,发信成功失败都会有记录。
我用QQ邮箱测试,都是空白的,不知是不是都这样。
3.安装mutt
一般系统上都已经安装了mutt软件,如果没有的话,可以下载源码包,解压,make,make install,mutt -version 查看配置文件位置
# cat /etc/Muttrc //内容如下 set sendmail="/usr/local/msmtp/bin/msmtp" set use_from=yes set realname="发件人" set from="发送邮件地址" set envelope_from=yes set envelope_from=yes //在发送到139信箱时,不加这个参数 139不会发短信提示
4.测试mutt发送短信
# echo hello | mutt -s 报警系统 yourmail@qq.com //hello为邮箱内容,报警系统为邮件标题 # echo hello | mutt -s 报警系统 message@163.com -a /root/people.doc //添加附件
5.监控脚本的编写
获取内存,虚拟内存使用率(百分比)的脚本:如果物理内存超过95%,虚拟内存超过20%则发送报警
# cat mem.sh //内容如下 #!/bin/bash IP=`ifconfig | grep 'inet ' | grep -v '127.0.0.1' | awk -F ' ' '{print $2}'| awk -F':' '{print $2}'| head -n 1` //获取IP MAX_mem=95 MAX_swap=20 Mem=`free | awk '/Mem/ {print int($3/$2*100)}'` //物理内存 SWAP=`free | awk '/Swap/ {print int($3/$2*100)}'` //虚拟内存 if [ $Mem -gt $MAX_mem -o $SWAP -gt $MAX_swap ];then echo "Men Warning" | /usr/local/mutt/bin/mutt -s "$IP Mem Warning " yourmail@qq.com fi
附录:
附录1.linux脚本发送邮件 shell发送邮件
推荐发送到139邮箱或者QQ邮箱(QQ邮箱利用微信来收,有邮件会跟短信一样有声音)。