一步一步Zabbix4.4.0系統教你實現sendEmail郵件報警
api
sendEmail是一個輕量級、命令行的SMTP郵件客戶端。若是你須要使用命令行發送郵件,那麼sendEmail是很是完美的選擇。使用簡單而且功能強大.這個被設計用在php、bash、perl和web站點使用。bash
以上是sendEmail的簡單介紹,千萬不要和sendmail搞混掉了。服務器
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使用命令幫助:app
測試一下:微服務
1 /usr/local/bin/sendEmail -f carlos@163.com -t 4224179@qq.com -s smtp.163.com -u "testsubject" -o message-content-type=html -o message-charset=utf8 -xu carlos@163.com -xp xxxxx -m "test"
1 /usr/local/bin/sendEmail 命令主程序 2 -f carlos@163.com 發件人郵箱 3 -t 4224179@qq.com 收件人郵箱 4 -s smtp.163.com 發件人郵箱smtp服務器 5 -u "testsubject" 郵件標題 6 -o message-content-type=html 郵件內容的格式 7 -o message-charset=utf8 郵件內容編碼 8 -xu carlos@163.com 發件人郵箱用戶名 9 -xp xxxxxx 發件人郵箱密碼 10 -m "test" 郵件具體內容 11 </span>
經過腳本報警是很是靈活的,由於咱們能夠經過腳本發送郵件,發送短信,發送微信等,腳本內部具體經過哪一種方式報警,取決於咱們怎樣編寫腳本。post
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 carlos@163.com -t "$to" -s smtp.163.com -u "$subject" -o message-content-type=html -o message-charset=utf8 -xu carlos@163.com -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 422417945@qq.com test 123
爲何測試不成功? 顯示「無主題」 ,本次測試問題就是「subject」寫成了「subjext」 。每每不成功就是由於參數問題。
2.4 編輯zabbix_server.conf文件,修改AlertScriptsPath參數,該參數用於指定外部腳本的絕對路徑。
vi /etc/zabbix/zabbix_server.conf AlertScriptsPath=/usr/lib/zabbix/alertscripts
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