shell监控内存使用率,超过指定值发邮件(msmtp mutt)

说明:
本篇文章实现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邮箱利用微信来收,有邮件会跟短信一样有声音)。

发表评论

邮箱地址不会被公开。 必填项已用*标注