Nagios警告郵件的特殊配置

urgel_babay發表於2016-05-11
Nagios警告郵件的特殊配置



nagios發警告郵件是採用本機的smtp服務,可以檢視commands.cfg中關於發郵件的命令的定義,使用本機的mail命令,這就需要開啟本機的smtp服務,
為了安全可以在防火牆上設定拒絕其他的機器連本機的25號埠


現在我們的網路裡面有一個郵件伺服器,所以要求使用這臺現有的郵件伺服器,不開啟本機的smtp服務,這就需要重新定義命令使用第三方軟體sendEmail.
 
首先我們當然要在郵件伺服器上新建一個賬戶用來做發郵件的賬戶


這裡郵件伺服器的地址為  mail.test.com
用來發郵件的帳號 nagios@test.com
SMTP驗證的使用者名稱   nagios 
密碼    p#3isoda
 
以下就來介紹一下sendEmail這個軟體的使用.

下載地址
sendEmail-v1.55.tar.gz[/
軟體十分小,是一個透過命令來發smtp郵件的程式.安裝也十分簡單(檢視其README檔案即可).


解壓縮tar –zxvf sendEmail-v1.55.tar.gz
cd sendEmail-v1.55
將可執行程式複製cp sendEmail /usr/local/bin


然後給確認確實它具有執行許可權
ll /usr/local/bin/sendEmail
-rwxr-xr-x 1 root root 77882 11-03 14:23 /usr/local/bin/sendEmail
這樣程式就裝好了,使用也很簡單.直接執行sendEmail就會顯示詳細的用法


先看一個典型的例子


/usr/local/bin/sendEmail –f nagios@test.com –t yahoon@test.com –s mail.test.com –u “from nagios” –xu nagios –xp p#3isoda –m happy
解釋:
-f 表示傳送者的郵箱
-t 表示接收者的郵箱
-s 表示SMTP伺服器的域名或者ip
-u 表示郵件的主題
-xu 表示SMTP驗證的使用者名稱
-xp 表示SMTP驗證的密碼(注意,這個密碼貌似有限制,例如我用d!5neyland就不能被正確識別)
-m 表示郵件的內容
 
如果你不帶-m引數的話,就會提示你自行輸入
Reading message body from STDIN because the ‘-m’ option was not used.
If you are manually typing in a message:
  - First line must be received within 60 seconds.
  - End manual input with a CTRL-D on its own line
輸入完成後使用CTRL-D來結束
當然我們也可以將一個檔案的內容作為郵件的正文發出去的
那麼就可以使用:
cat 檔名 | /usr/local/bin/sendEmail –f nagios@test.com –t yahoon@test.com –s mail.test.com –u “from nagios” –xu nagios –xp p#3isoda
有關sendEmail的用法就講到這裡
 
既然nagios要使用sendEmail來發警告郵件,那麼就要修改commands.cfg中關於發郵件的命令的定義,我們現在來修改notify-by-email這個命令,如下(注意其中粗體的部分)
# 'notify-by-email' command definition
define command{
        command_name    notify-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios 2.9 *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/local/bin/sendEmail -f nagios@test.com -t $CONTACTEMAIL$ -s mail.test.com -u "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -xu nagios -xp p#3isoda
        }
 




send_email() {
  /usr/local/bin/sendEmail -t $CONTACTEMAIL -f nagios@nagios.com -s 192.168.1.70 -xu nagios -xp Sinolife2008 -u "$HOSTNAME $SERVICEDESC ($NOTIFICATIONTYPE $SERVICESTATE)" -m "***** Nagios監控中心通知 *****\n\n通知型別: $NOTIFICATIONTYPE\n監控服務: $SERVICEDESC\n監控主機: $HOSTNAME\nIP地址: $HOSTADDRESS\n服務狀態: $SERVICESTATE\n日期/時間:$LONGDATETIME\n附加資訊: $SERVICEOUTPUT" -o message-charset=utf8
}






注:其實sendEmail是一個十分有用的程式,我們在這個地方用了它,其實別的地方也可以用,
典型的好處就是你不需要每臺機器都裝sendmail,開啟smtp服務.直接用現成的一臺郵件伺服器就行了,
這無疑很大的加強了系統的安全性,也節約了資源.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30936525/viewspace-2097974/,如需轉載,請註明出處,否則將追究法律責任。

相關文章