MSMTP+MUTT轻松实现服务器资源监控

在Linux系统中,我们可以使用各种软件之间的关联与配合,完成我们想要完成的工作,这也正是Linux系统人性化的一方面,而MUTT+MSMTP的邮件组合便为我们提供了不错的应用解决方案。

应用背景:

  公司新上线了一个项目,设计到的服务器有9台,公司想通过邮件的方式来监控主机的运行状态,以及判断服务器上的资源是否可用,如果不可用自动执行重启应用的操作,并且发送一封Email邮件通知相关人员。

  在了解了需求之后,我们就可以整理出自己的一套解决方案,首先在这个项目需求中涉及到了Email邮件的发送,我们就会想到搭建Email邮件服务器,例如sendmail、postfix等等,但是这里我们仅仅是需要发送邮件,对于费尽心思搭建的一套Email邮件服务器来讲简直就是浪费资源。对于这样简单发送邮件的需求,我们用Msmtp客户端加上发送邮件需要的Mutt程序完全就可以实现了。

Msmtp (下载地址

  Msmtp是一款专门负责邮件发送的客户端软件,基于GPL发布。支持TLS/SSL、DNS模式、IPv6、服务器端认证、多用户等特性。该软件和mpop是姊妹软件。

Msmtp软件安装

tar jxf msmtp-1.4.16.tar.bz2
./configure  --prefix=/usr/local/msmtp
make
make install

MUTT (系统一般自带 下载地址:

  mutt是linux下的一个email程序。Mutt 显然是一个 Unix 的邮件程序,它跟一般的 Windows 邮件程序不同,它不是一个包罗万象的大杂烩。你甚至会发现它根本不直接发出邮件,它从来不自己编辑邮件,它从来不自己对邮件进行加密和数字签名,Mutt 更像一个文件管理器,只不过它管理的是email。它的功能是借助各个最强大的程序来实现的。这符合 UNIX 的设计思想。

Mutt安装

tar zxf mutt-1.5.21.tar.gz
./configure
make
make install

  软件的安装非常简单,安装之后我们就可以对其进行配置了,比较有意思的是这两个程序的配置文件都为隐藏文件,路径为家目录。

Msmtp

cd ~
vi .msmtprc

 host smtp.163.com   #你的邮件服务器地址
 tls off   #关闭tls
 auth plain   #设定登录方式
 from youraddress@163.com   #发送Email的邮件地址
 user yourname   #发送Email的用户名
 password yourpassword   #发送Email的用户名密码

chmod 600 .msmtprc   #不允许其他用户访问该文件
touch .msmtp.log   #创建日志记录文件

Mutt

cd ~
vi .muttrc

 set sendmail="/usr/local/msmtp/bin/msmtp"   #指定msmtp执行的路径
 set use_from=yes    #指定是否显示来自用户(别名)
 set realname="阿布"   #发件人别名
 set from=youradress@163.com  #指定要使用的email地址
 set rfc2047_parameters=yes   #解决附件中文乱码的问题
 set charset="GBK"   #指定发送的邮件文字编码(与服务器保持一致)

  软件配置完成后我们可以使用下面的命令来进行测试

  echo “这里输入的是你邮件的正文内容” | mutt -s ‘这里是你邮件的标题’ test@test.com(指定要发送到谁的邮箱)

  正常接收到测试邮件后,说明程序的安装及配置是没有问题的,接下来就可以配合系统来发送监控邮件了,而我们只需要将系统关键的信息提取出来即可,举例如下:

vi sendmail.sh

 #!/bin/bash
 cpu=`vmstat 1 2 | sed -n '$p' |awk '{printf "%8s |%6s |%9s", $13,$14,$15}'`
 mem=`free | grep 'buffers/cache' | awk '{print $4}'`
 swap=`free | grep 'Swap' | awk '{print $4}'`
 echo “您CPU目前使用量为:$cpu 内存使用量为:$mem 虚拟内存使用量为:$swap”

chmod 755 sendmail.sh
./sendmail.sh | mutt -s ‘system_monitor’ myemailtest@163.com

  同样的我们也可以使用它来监控我们的系统应用,例如监控Apache的运行情况,如果80端口不能正常工作,那么重新启动Apache应用,同时发送一封Email通知相关人员。

vi appcheck.sh

 #!/bin/bash
 curl
 if [ $? -eq 0 ];then
  echo “is ok!”
 else
  /usr/local/apache/bin/apachectl restart
  echo -e “您的Apache已于`date +%Y-%m-%d-%H:%M`执行重启,请您关注此信息!”

chmod 755 appcheck.sh

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/43dc7923394419cc607c8495374544b6.html