MSMTP+MUTT輕鬆實現服務器資源監控

  在Linux系統中,我們可以使用各種軟件之間的關聯與配合,完成我們想要完成的工作,這也正是Linux系統人性化的一方面,而MUTT+MSMTP的郵件組合便爲我們提供了不錯的應用解決方案。

應用背景:

  公司新上線了一個項目,設計到的服務器有9臺,公司想通過郵件的方式來監控主機的運行狀態,以及判斷服務器上的資源是否可用,如果不可用自動執行重啓應用的操作,並且發送一封Email郵件通知相關人員。

  在瞭解了需求之後,我們就可以整理出自己的一套解決方案,首先在這個項目需求中涉及到了Email郵件的發送,我們就會想到搭建Email郵件服務器,例如sendmail、postfix等等,但是這裏我們僅僅是需要發送郵件,對於費盡心思搭建的一套Email郵件服務器來講簡直就是浪費資源。對於這樣簡單發送郵件的需求,我們用Msmtp客戶端加上發送郵件需要的Mutt程序完全就可以實現了。

Msmtp (下載地址http://sourceforge.net/projects/msmtp/files/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 (系統一般自帶 下載地址:http://sourceforge.jp/projects/sfnet_mutt/releases/

  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 [email protected]   #發送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 [email protected]  #指定要使用的email地址
 set rfc2047_parameters=yes   #解決附件中文亂碼的問題
 set charset="GBK"   #指定發送的郵件文字編碼(與服務器保持一致)

  軟件配置完成後我們可以使用下面的命令來進行測試

  echo “這裏輸入的是你郵件的正文內容” | mutt -s ‘這裏是你郵件的標題’ [email protected](指定要發送到誰的郵箱)

  正常接收到測試郵件後,說明程序的安裝及配置是沒有問題的,接下來就可以配合系統來發送監控郵件了,而我們只需要將系統關鍵的信息提取出來即可,舉例如下:

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’ [email protected]

  同樣的我們也可以使用它來監控我們的系統應用,例如監控Apache的運行情況,如果80端口不能正常工作,那麼重新啓動Apache應用,同時發送一封Email通知相關人員。

vi appcheck.sh

 #!/bin/bash
 curl http://127.0.0.1
 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

  最後我們可以將兩個shell腳本加入到系統計劃任務中,通過crontab計劃任務可以實現公司的郵件監控需求,當然所監控的內容不止這些,另外如果你的郵件中需要包含附件,可以採用如下方式:

  echo “test” | mutt -s ‘test’ [email protected] -a /usr/local/filename

寫在最後

  整個過程沒有太多的技術含量,但是通過應用程序之間的配合既可以達到我們所要的需求,我們應該廣開思路,通過MSMTP+MUTT在加上系統計劃任務,我們可以讓系統完成很多事情,同時我們也可以收到相應的郵件通知,例如Mysql數據庫備份、網站定時備份等等。

  原創文章轉載請註明,本爲地址:http://www.abuve.com/737.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章