1. 程式人生 > >Zabbix 如何實現郵件報警通知以及免費簡訊報警通知

Zabbix 如何實現郵件報警通知以及免費簡訊報警通知

               

 前提條件:

(1) zabbix伺服器端已經成功安裝並且執行。

(2) zabbix客戶端已經成功建立並且執行。

1 下載並且安裝msmtp軟體

tar jxvf msmtp-1.4.32.tar.bz2

cd msmtp-1.4.32

./configure--prefix=/usr/local/msmtp

Make

Make install

2、手動建立配置檔案,輸入外部smtp地址mkdir –p /usr/local/msmtp/etcvi /usr/local/msmtp/etc/msmtprc新增以下內容account default host smtp.sohu.com                    #你的傳送郵件伺服器

port 25from [email protected]      #要從哪個郵箱發出auth logintls offuser  zabbix2014                      #郵箱使用者名稱password xxxxx-xxx                  #郵箱密碼,如果你覺得不安全可以把檔案改為600屬性logfile /var/log/mmlog儲存退出。

3、簡單測試一下/usr/local/msmtp/bin/msmtp hellotest ctrl dcat /usr/local/msmtp/msmtp.log 看看有沒有成功。  然後再到sohu郵箱中,看看信收到沒有

報錯如下

[[email protected] msmtp-1.4.32]# /usr/local/msmtp/bin/msmtp [email protected]: authentication failed (method LOGIN)msmtp: server message: 535 5.7.0 Invalid resultmsmtp: could not send mail (account default from /usr/local/msmtp/etc/msmtprc)

Google之後,需要安裝 mutt元件

4、下面開始安裝 MUTT如果是CentOS的話直接用yum就好了yum install mutt

安裝完成後要手動給他建立一個配置檔案,vim /etc/Muttrcsetsendmail="/usr/local/msmtp/bin/msmtp" #你的msmtp命令路徑set use_from=yesset realname="[email protected]"set editor="vim"簡單的4行就可以了好了,讓我們來測試一下吧!測試一下:echo"test mail" | mutt -s "test" [email protected]

OK,測試了下,能收到已經發送的email,如下所示:

echo"test mail 2014 content tom 2" | mutt -s "test 2014 title2"  [email protected]

 

5建立 zabbix用於傳送郵件的指令碼

指令碼放在什麼位置隨便,但是要保證zabbix可以找到!

1)vim/usr/bin/zabbix2014,並寫入如下內容:#!/bin/bashecho "$3" | mutt -s "$2"$1       # $3表示郵件內容、$2表示郵件標題、$1表示收件人(2)chmod a+x /usr/bin/zabbix2014

6    zabbix配置(1)建立meida types1.登入到zabbix,進入“Administration" >> ”Media types",點選右上角“Create Media Type" Description"mediatype-zabbix2014"或其它名稱,Type選擇"Script"Script” zabbix2014”2.點選save儲存,如下圖所示:

 

7、建立actions1.登入到zabbix,進入"Configation" >> "Actions",點選右上角"Create Actions"。輸入Name “action-zabbix2014” ,其它都預設點選右側“Action Operations"下的"New"按鈕,"Operation Type"選擇"Send message""Send Message to"選擇一個或多個要傳送訊息的使用者組,”Send only to"選擇我們之前新增的mediatype-zabbix20142.點選save儲存,如下圖所示:

 

8zabbix使用者配置登入到zabbix, 進入"Adimistration" >>"Users",在之前選定要傳送訊息的組裡的Members欄位裡選擇一個使用者,例如選擇AdminZabbix使用者。在使用者資訊修改介面最下方的”Media"處點選"Add"按鈕。Type選擇"mediatype- zabbix2014"Send to填入收件人地址,點選Add新增。點選"Save"儲存配置。如下圖所示:

 

9 測試驗證郵件傳送功能是否正常。

9.1 去stop伺服器上的mysql服務,一會就應該會報警

[[email protected]~]# service mysql stop

Shutting downMySQL...                                    [確定]

[[email protected]~]#

但是沒有收到email,所以我們需要去看events,是否有提示為什麼會發不出email來。進去目錄Monitoring—> EventsGroup(選All)Host(選要監控的資料庫主機)Source(選Trigger)。

點開最左邊一列的連線 02 May 2014 12:34:06 ,

看到提示:

/usr/local/zabbix/scripts/zabbix2014: [2] Nosuch file or directory

記得是放在 /usr/bin/zabbix2014 ,所以將指令碼放在提示所需要的目錄上面,直接mv一下即可:

mv/usr/bin/zabbix2014 /usr/local/zabbix/scripts/zabbix2014

之後會看到新的報警PROBLEM資訊,email已經發送出去了,如下圖:

9.2 改email地址,改成139郵箱,並且附帶免費簡訊報警功能實現。

進入目錄,AdministrationUsers Zabbix administrators Users (1) AdminZabbix(最左邊一列)Media(選擇中間的那一個欄目)—> mediatype-zabbix2014(選擇用Trigger所用的mediatype)Edit(點選進去修改)Send to(後面的輸入框裡面填寫上139的email,比如[email protected]),如下圖所示:

9.3 切換139郵箱來驗證傳送簡訊功能

註冊139郵箱,開啟email,stop以及start資料庫上面的mysql程序服務,就會收到報警email以及簡訊通知,報警email如下:

記得開啟簡訊提示功能,簡訊免費。

9.4 如何讓zabbix繼續傳送報警資訊直到恢復正常為止。

進入目錄,ConfigurationHosts選中主機TriggerName(比如進入check_mysql_status)在Multiple PROBLEM events generation一欄打勾Save。如下圖所示:

10 總結:

第一次zabbix的郵件報警試驗成功了,折騰了很多天,也諮詢了很多朋友,在此感謝他們,下面還有許多zabbix的深入的東西需要繼續學習繼續專研。

且行且努力吧。

附上網友北京醬油帝的建議,如何驗證trigger報警成功:

要想驗證trigger的有效性很簡單:

第一,trigger在monitor的介面有個events選項看到沒有,那裡面是可以點選機器ip的,你看你定義的trigger有沒有發生。

第二,  第二,如果trigger發生了,是要看指令碼也就是media呼叫有沒有成功,如果成功了,最好在腳本里面加上日誌。