簡介
之前的文章中介紹了zabbix的配置和使用方法,同時也間接的提到了zabbix的報警方式。zabbix可以支持多種報警方式,在初始化後系統默認支持郵件報警(相對而言,郵件方式報警是最便宜最方便的)。但是從實際使用的角度來看,這種方式過於簡單。原因在於它不支持郵件的用戶驗證,在今天不驗證的郵件太少了(同時也太不安全了),而要在本機建一個郵件服務器又太複雜而且對於接收者郵件很容易被認爲垃圾郵件。今天我們可以利用開源的msmtp項目完成郵件報警的操作。
zabbix安裝指南:http://waringid.blog.51cto.com/65148/904201
zabbix使用指南:http://waringid.blog.51cto.com/65148/945352
zabbix配置指南續:http://waringid.blog.51cto.com/65148/1104627
zabbix使用手冊:http://down.51cto.com/data/462129
zabbix配置手冊:http://down.51cto.com/data/469472
安裝msmtp
首先需要下載msmtp這個組件,可以從這裏下載(http://msmtp.sourceforge.net/)。其實官網的說明中有詳細的內容教大家使用。這裏僅講講需要注意的地方。通過msmtp可以使用gmail的郵件(安全性更高,使用TLS方式連接),當然因爲網絡的原因(這個原因大家都知道)應用不是穩定,我們可以申請國內的郵箱,例如126或是163或其它。
安裝方式很簡單,直接編譯安裝就可以了,需要注意的是如果要用到tls或是ssl之類的東西的話,需相相關組件的支持,例如openssl、sasl等,這個在編譯時會有體現。這些組件可以通過yum的方式安裝就不多介紹了。詳細的編譯指令如下所示:
- tar jxvf msmtp-1.4.30.tar.bz2
- cd msmtp-1.4.30
- ./configure
- make
- make install
是不是非常簡間呢?這裏要注意的是文件默認安裝到/usr/loca/bin下面,生成的可執行文件是msmtp這個,安裝是否成功可以查看下這個文件是否存在。
配置msmtp
配置msmtp有幾個需要注意的地方,首先它和當前用戶相關,如果你運行的指令msmtp沒有加配置文件的參數(-C 詳情自行help下),它默認取當前用戶的主文件夾中(例如root用戶則查找/root,zabbix用戶則查找/home/zabbix).msmtprc的配置文件,如果沒有則無法正常運行。同時需要注意的是用戶調用的配置文件同樣存在權限問題,如果權限不正確它也沒辦法正常工作(例如zabbix都是使用zabbix用戶權限執行,那麼相關的文件就需要配置正常的權限)。
- cd /home/zabbix
- vi .msmtprc
- touch /var/log/zext_msmtp.log
- chown zabbix:zabbix /var/log/zext_msmtp.log
- chmod 0600 /home/zabbix/.msmtprc
- chown zabbix:zabbix /home/zabbix/.msmtprc
配置文件.msmtprc的詳細內容如下:
- account zabbix #調用時的用戶
- host smtp.126.com #郵件服務器
- port 25
- from [email protected]
- auth login #驗證方式
- tls off #不使用tls
- user [email protected]
- password xxxxxxx
- logfile /var/log/zext_msmtp.log #記錄日誌
配置zabbix
首先創建報警腳本,報警腳本在zabbix中的存放位置是由zabbix_server.conf中參數指定的(如果腳本存放的位置和權限不正確將無法正常工作),對如何查看和更改腳本的存放位置可以參考之前的內容。這裏假設你的設定是和我一致的。指令如下:
- vi /usr/bin/zext_msmtp.sh
- chmod 755 /usr/bin/zext_msmtp.sh
- chown zabbix:zabbix /usr/bin/zext_msmtp.sh
腳本的內容如下:
- #! /bin/sh
- DEBUG=1
- if [ $DEBUG -gt 0 ]
- then
- exec 2>>/var/log/zext_msmtp.log
- set -x
- fi
- FROM='[email protected]'
- MSMTP_ACCOUNT='zabbix'
- # Parameters (as passed by Zabbix):
- # $1 : Recipient
- # $2 : Subject
- # $3 : Message
- recipient=$1
- subject=$2
- message=$3
- date=`date --rfc-2822`
- sed 's/$/\r/' <<EOF | /usr/local/bin/msmtp --account $MSMTP_ACCOUNT $recipient
- From: <$FROM>
- To: <$recipient>
- Subject: $subject
- Date: $date
- $message
- EOF
完成了上面的操作後,剩下的事情就只需要在zabbix中操作就可以了,首先以管理員(admin)登陸zabbix,在Administration/Media Types這個頁面中添加一種媒體類型,如下圖所示。
然後在個人用戶的管理界面中添加一種報警媒體,在類型中選取上面添加的報警方式,在聯繫方式的地方填寫收件人的郵箱地址,如下圖所示。
最後你只需要調整一下監控內容中的action就可以完成整體的報警動作了。對於action可以在中間加入郵件Priority級別。例如X-Priority: 1,這樣收到的郵件會自動列入重要的郵件中。對於trigger配置後的圖形如下圖所示。
整體設好後你就可以通過查看郵件來驗證成果了,當然中間如果存在問題也可以查看zabbix的server日誌和msmtp的配置日誌,如下圖所示。
通過這個軟件可以實現帶驗證功能的郵件報警,至少在zabbix改進郵件報警前它還是很有用武之地的。