zabbix監控服務端、客戶端都已經部署完成,被監控主機已經添加,Zabiix監控運行正常。html
在Zabbix服務端設置郵件報警,當被監控主機宕機或者達到觸發器預設值時,會自動發送報警郵件到指定郵箱。mysql
具體操做:web
如下操做在Zabbix監控服務端進行sql
而後安裝那兩個依賴包,命令是:bash
yum install perl-Net-SSLeay perl-IO-Socket-SSL -y服務器
解壓軟件,而後將sendemail複製到/usr/local/bin/目錄下,並加上可執行權限,而後修改用戶和羣組。app
[root@mysqla ~]# tar zxf sendEmail-v1.56.tar.gz ide
[root@mysqla ~]# cd sendEmail-v1.56/測試
[root@mysqla sendEmail-v1.56]# cp sendEmail /usr/local/bin/sendEmail編碼
[root@mysqla sendEmail-v1.56]# chown zabbix:zabbix /usr/local/bin/sendEmail
[root@mysqla sendEmail-v1.56]# ll /usr/local/bin/sendEmail
-rwxr-xr-x. 1 zabbix zabbix 80213 Nov 21 21:26 /usr/local/bin/sendEmail
執行# /usr/local/bin/sendEmail -h查看sendEmail的幫助
#/usr/local/bin/sendEmail -f bpcyh1@126.com -t bpcyh1@126.com -s smtp.126.com -u "hello" -o message-content-type=html -o message-charset=utf8 -xu bpcyh1@126.com -xp 123abc -m "abcfdd"
命令主要選項說明:
/usr/local/bin/sendEmail #命令主程序
-f from@126.com #發件人郵箱
-t to@126.com #收件人郵箱
-s smtp.126.com #發件人郵箱的smtp服務器
-u "我是郵件主題" #郵件的標題
-o message-content-type=html #郵件內容的格式,html表示它是html格式
-o message-charset=utf8 #郵件內容編碼
-xu from@126.com #發件人郵箱的用戶名
-xp WEE78@12l$ #發件人郵箱密碼
-m "我是郵件內容" #郵件的具體內容
進入/usr/local/zabbix/share/zabbix/alertscripts/目錄
而後在這個目錄下建立報警腳本sendmail.sh
[root@mysqla alertscripts]# vi mail.sh
下面是腳本內容(塗顏色部分是你的郵箱和密碼,-f和-xu參數後面跟郵箱,-xp後面跟受權碼)
#!/bin/bash
to=$1
subject=$2
body=$3
/usr/local/bin/sendEmail -o tls=auto -f bpcyh1@126.com -t "$to" -s smtp.126.com -u "$subject" -o message-content-type=html -o message-charset=utf8 -xu bpcyh1@126.com -xp 123abc -m "$body"
[root@mysqla alertscripts]# chmod +x mail.sh
執行腳本測試發郵件
[root@mysqla alertscripts]# ./mail.sh bpcyh1@126.com test 123
*******************************************************************
Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client
is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER
together with SSL_ca_file|SSL_ca_path for verification.
If you really don't want to verify the certificate and keep the
connection open to Man-In-The-Middle attacks please set
SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application.
*******************************************************************
at /usr/local/bin/sendEmail line 1906.
invalid SSL_version specified at /usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 415
注:進行發送郵件測試時,出現了第一個報錯
緣由是sendemail軟件和perl5裏面的ssl版本不兼容致使的,經過修改sendemail裏面的內容能夠解決這個問題。
解決方法:
在sendemail中1906行的內容,從
if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3 TLSv1')) {
修改成
if (! IO::Socket::SSL->start_SSL($SERVER)) {
即不指定SSL的版本,讓程序來本身選擇
無論你使用的是163/126郵箱仍是qq郵箱,你都必須開通pop3服務,並且126/qq郵箱還要求使用第三方客戶端發送郵件是必須使用受權碼登陸,使用帳號密碼驗證時,會出現下面圖片中的錯誤。
sendEmail[5102]: ERROR => ERROR => SMTP-AUTH: Authentication to smtp.126.com:25 failed.
至於郵箱的受權碼,本身登陸126郵箱去設置就好。
通過上面兩個問題的處理後就能夠正常發送郵件以下所示顯示成功提示
[root@mysqla alertscripts]# ./mail.sh bpcyh1@126.com test 123
Nov 21 22:50:47 mysqla sendEmail[5195]: Email was sent successfully!
zabbix web端配置
上面的郵件腳本配置好後,就要在web端添加報警媒介,在web頁面的管理,報警媒介類型頁面,點擊右邊的建立媒體類型
進入建立頁面,而後輸入名稱「郵件報警腳本」,類型選擇腳本,名稱選擇mail.sh,點擊添加按鈕,添加三個腳本參數,分別是{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESAGE},分別對於mail.sh中的to、subject和body。添加完成後點下面的添加按鈕,咱們的報警媒介就建立完成了
建立好報警媒介後,就須要將報警媒介關聯到咱們的用戶。點擊管理,用戶,而後選擇咱們的用戶admin也可新建一個用戶,點擊用戶名就進入到用戶配置界面。點擊報警媒介,而後點添加,選擇咱們上一步建立的郵件報警腳本,輸入收件人,選擇報警時間和類型,而後點擊添加,就將建立好的報警媒介關聯到咱們的用戶上面了。
如今須要作的是,建立一個觸發動做,即系統出現故障時,觸發這個動做,而後給咱們的郵箱發送報警郵件。點擊配置,選擇動做,而後點擊右邊的建立動做。
在動做這一頁名稱中寫入咱們定義的動做名以及觸發條件
設置「操做」
步驟是1-3,也便是從1開始到3結束。一旦故障發生,就是執行Email.sh腳本發生報警郵件給zabbix用戶。
假如故障持續了1個小時,它也只發送3次,第1-3次(即前3次)郵箱發送給zabbix用戶,時間間隔爲0秒。
若是改爲1-0,0是表示不限制.無限發送
設置「恢復操做」
添加好之後就能夠看到咱們添加的動做名,以及該動做已啓用的狀態。
查看狀態是否顯示以啓用
在動做日誌裏能夠看到發送情況,顯示已送達,就能夠了。
報警測試
將192.168.129.88服務器的zabbix_agent進程關閉。
發現能夠正常收到故障報警郵件
最後,點擊」報表「->」動做日誌「,能夠看到觸發動做的次數(右邊還看查看到郵件發送狀態「已發送」)。
----------------------------------------------------------------------------------------------
今日推薦電影《教父Ⅰ Ⅱ Ⅲ》
偉大的人不是生下來就偉大的,而是在成長過程當中顯示其偉大的