11 一步一步Zabbix4.4.0系統教你實現sendEmail郵件報警

  • 2019 年 11 月 7 日
  • 筆記

點擊返回:自學Zabbix之路

點擊返回:自學Zabbix4.0之路

點擊返回:自學zabbix集錦

一步一步Zabbix4.4.0系統教你實現sendEmail郵件報警

sendEmail是一個輕量級、命令行的SMTP郵件客戶端。如果你需要使用命令行發送郵件,那麼sendEmail是非常完美的選擇。使用簡單並且功能強大.這個被設計用在php、bash、perl和web站點使用。

以上是sendEmail的簡單介紹,千萬不要和sendmail搞混掉了。

1. 下載安裝sendEmail 

wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz  tar zxvf  sendEmail-v1.56.tar.gz  cd sendEmail-v1.56  mv sendEmail  /usr/local/bin/  

確認一下命令的許可權:

SendEmail使用命令幫助:

測試一下:

1 /usr/local/bin/sendEmail -f [email protected]  -t [email protected]  -s smtp.163.com -u "testsubject" -o message-content-type=html -o message-charset=utf8 -xu [email protected]   -xp xxxxx -m "test"  

 1 /usr/local/bin/sendEmail    命令主程式   2 -f [email protected]       發件人郵箱   3 -t [email protected]         收件人郵箱   4 -s smtp.163.com        發件人郵箱smtp伺服器   5 -u "testsubject"            郵件標題   6 -o message-content-type=html   郵件內容的格式   7 -o message-charset=utf8        郵件內容編碼   8 -xu [email protected]         發件人郵箱用戶名   9 -xp xxxxxx                  發件人郵箱密碼  10 -m "test"            郵件具體內容  11 </span>  

2. 自定義腳本

 通過腳本報警是非常靈活的,因為我們可以通過腳本發送郵件,發送簡訊,發送微信等,腳本內部具體通過哪種方式報警,取決於我們怎樣編寫腳本。

2.1 創建目錄

mkdir  -p /usr/lib/zabbix/alertscripts/sendEmail.sh    # 創建目錄  vi /usr/lib/zabbix/alertscripts/sendEmail.sh   # 創建腳本

2.2  編寫腳本

在配置腳本類型的"報警媒介"之前,我們需要先編寫好對應的腳本,並且將腳本放置到對應的目錄中,以便zabbix能夠找到對應的腳本。那麼此處,我們來動手編寫一個能夠發送郵件資訊的腳本,這個腳本很簡單,此處我們直接使用sendEmail命令發送郵件,腳本內容如下:

#!/bin/bash  to=$1        #第一個參數代表郵件發送給哪個郵箱  subject=$2   #第二個參數代表郵件主題  message=$3   #第三個參數代表郵件內容  #url=$4  ech0 -e "$context" | mail -s "$subject""$to"  /usr/local/bin/sendEmail -f [email protected]  -t "$to"  -s smtp.163.com -u "$subject" -o message-content-type=html -o message-charset=utf8 -xu [email protected]   -xp xxxxx -m "$message"

從腳本內容可以看出,我們在腳本中接收了3個參數,既然定義了參數,那麼zabbix在調用此腳本的時候,必然需要傳入對應的參數。
我們向腳本中傳入了3個參數,我們可以通過"腳本參數"設定需要傳入的參數,當zabbix調用對應腳本時,會自動把"腳本參數"中對應的值按照順序傳入對應的腳本中。如下圖,我們添加了三個參數。

其實,這種由大括弧括起,並且由大寫字母組成的字元串在zabbix中被稱作"宏",我們可以理解為zabbix內置的變數,當不同的警告發生時,上述的三個"宏"的值會自動發生變化。

那麼,除了上述的三個"宏",zabbix還有那些"宏"呢?其他"宏"都代表了什麼含義呢?我們可以查看zabbix的官方在線幫助手冊,點擊查看。

注意:
在zabbix3.0之前,上圖中的三個參數是默認傳入對應腳本的,不用再手動進行定義,但是從zabbix3.0開始,如果想要向對應的腳本傳入上述三個參數,則需要按照上圖進行定義。

2.3 編輯完成後,給腳本許可權:

chmod +x sendEmail.sh  chown zabbix.zabbix sendEmail.sh  

測一下:  (手動執行一次腳本,後面的參數分別對應接收人,主題,內容)

./sendEmail.sh [email protected] test 123  

為什麼測試不成功? 顯示“無主題” ,本次測試問題就是“subject”寫成了“subjext” 。往往不成功就是因為參數問題。 

2.4  編輯zabbix_server.conf文件,修改AlertScriptsPath參數,該參數用於指定外部腳本的絕對路徑。

vi /etc/zabbix/zabbix_server.conf  AlertScriptsPath=/usr/lib/zabbix/alertscripts

3  配置報警媒介

3.1   Administration –> Media types –> Create media type     media types選擇Script

Name:觸發器名稱  Type:介質類型  Script name:腳本名稱(需要先定義AlertScriptsPath,sendEmail.sh放在這個目錄下,寫絕對路徑沒用)  Script parameters:腳本參數  Description:腳本描述  Enabled:狀態  

zabbix支援的報警媒介如下:

Email:郵件,這是最常用也是最傳統的一種報警媒介,郵件報警,zabbix通過配置好的SMTP郵件伺服器向用戶發送對應的報警資訊。  Script:腳本,當zabbix中的某些監控項出現異常時,也可以調用自定義的腳本進行報警,腳本的使用就比較靈活,具體怎樣報警全看你的腳本怎麼寫。  SMS:簡訊,如果想要使用簡訊報警,則需要依賴簡訊網關(貌似需要北美的運行商)。  Jabber:即時通訊服務。  E Texting:商業的,收費的簡訊服務(北美運營商提供服務)。
Webhooks:api概念,是微服務api的使用範式之一。

但是目前zabbix4.4.0版本裡面只保留以下四種:

 3.2 添加參數+腳本名稱

進一步測試郵件:   4.4.0 只有有一個"Test"測試按鍵。

 

3.3  創建一個用戶Administration –> Users –> Create user

 

    為新創建的user指定media:Administration –> Users –> Create user –> Media

 

3.4  創建action實現郵件報警Configuration –> Actions –> Create action

 

 

 

 

 

Tags: