Zabbix4.4.1系統教你實現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 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>
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 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 配置報警媒介
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