實驗條件:php
Zabbix監控服務器、客戶端都已經部署完成,被監控主機已添加完成,Zabbix監控運行正常。html
實現目的:linux
Zabbix監控服務器設置郵件報警,當被監控主機宕機或達到觸發器預設值進,會自動發送報警郵件到指定的郵箱。web
概念補充:vim
什麼是MTA?什麼是MUA?centos
通俗的說MUA就是用戶使用的客戶端,而MTA則是真正發送郵件的發送進程,MUA編寫的郵件最終也交由MTA發送至目標端。bash
mailx即爲負責查看、編寫郵件和向MTA發送郵件的MUA。服務器
Sendmail和postfix即爲負責郵件在網絡上傳輸的MTA,將郵件從一個MTA傳送至另外一個MTA。網絡
標註:使用zabbox服服務端本地郵箱帳號發送郵件,須要安裝兩個軟件達到報警郵件轉發至指定郵箱。Sendmail或postfix(兩個軟件各選擇一個,但不能同時運行)和mailx郵件客戶端。工具
配置網絡yum源參考教程:
http://www.cnblogs.com/zoulongbin/p/5773330.html
Zabbix服務器操做
一、 安裝sendmail或postfix (郵件傳送代理MTA),本教程使用sendmail軟件。
(標註:若是直接使用外部郵箱發送郵件能夠不須要配置sendmail或postfix,直接把這兩個軟件關掉,直接跳到第3步:配置mail便可實現)
[root@ssticentos65 ~]# yum -y install sendmail #在線yum安裝sendmail
[root@ssticentos65 ~]# /etc/init.d/sendmail start #啓動sendmail服務
[root@ssticentos65 ~]# /etc/init.d/sendmail status #查看sendmail啓動狀況
sendmail dead but subsys locked #sendmail進程鎖住,緣由是postfix服務啓動致使sendmail服務進程鎖住,須要關閉postfix服務。
sm-client (pid 1759) is running...
[root@ssticentos65 ~]# /etc/init.d/postfix stop #暫停postfix服務提示失敗,緣由是postfix進程正在使用,須要使用kill命令殺掉postfix進程
Shutting down postfix: [FAILED]
[root@ssticentos65 ~]# /etc/init.d/postfix status #查看postfix服務能夠查看到進程號
master (pid 1647) is running...
[root@ssticentos65 ~]# kill -9 1647 #殺掉postfix服務進程號
[root@ssticentos65 ~]# /etc/init.d/postfix status #查看postfix狀態
master dead but pid file exists
[root@ssticentos65 ~]# chkconfig postfix off #設置postfix開機不啓動
[root@ssticentos65 ~]# /etc/init.d/sendmail stop #暫停sendmail服務
Shutting down sm-client: [ OK ]
Shutting down sendmail: [FAILED]
[root@ssticentos65 ~]# /etc/init.d/sendmail start #啓動sendmail服務
Starting sendmail: [ OK ]
Starting sm-client: [ OK ]
[root@ssticentos65 ~]#
二、安裝郵件發送工具mailx 。(郵件用戶代理MUA)
[root@ssticentos65 ~]# yum -y install mailx #在線安裝mailx
三、 配置mail
[root@ssticentos65 ~]# vim /etc/mail.rc
set from=lg1871212539@sina.com #新浪註冊的我的郵箱,用於zabbi服務端轉發郵件到指定郵箱
set smtp=smtp.sina.com #填寫新浪發送郵箱服務器地址smtp
set smtp-auth-user= lg1871212539 #新浪我的郵箱用戶
set smtp-auth-password=lg123456 #新浪我的郵箱密碼
set smtp-auth=login #登陸
四、測試郵件可否發送
#發送一份郵件到1873714157@qq.com 這個QQ郵箱(我的申請的QQ測試郵箱)
[root@ssticentos65 ~]# echo "test" | mail -s 'test linux' 1873714157@qq.com
五、編寫郵件發送腳本sendmail.sh
[root@ssticentos65 ~]# cd /usr/local/zabbix/share/zabbix/alertscripts/ #進入zabbix默認存放腳本路徑
[root@ssticentos65 alertscripts]# vim sendmail.sh #編寫發送郵件腳本
#!/bin/bash
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/sendmail.log 2>&1
[root@ssticentos65 ~]# chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh #sendmail.sh腳本修改所屬用戶和用戶組
[root@ssticentos65 ~]# chown zabbix.zabbix /tmp/sendmail.log #sendmail.log日誌記錄文本修改屬用戶和用戶組
[root@ssticentos65 ~]# chmod 755 /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh #sendmail腳本賦予執行權限
[root@ssticentos65 ~]# ls -l /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh #查看sendmail.sh腳本信息
[root@ssticentos65 ~]# vim /usr/local/zabbix/etc/zabbix_server.conf #配置zabbix_server.conf配置文件
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts #這個修改爲sendmail.sh腳本存放路徑
[root@ssticentos65 ~]# su zabbix #切換zabbix用戶
sh-4.1$ /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh 1873714157@qq.com "test linux" "test" #zabbix用戶執行sendmail.sh腳本看是否有權限
Zabbix後臺web介面配置
一、管理 ---- 報警媒介類型 ----- 建立媒介類型。
二、名稱能夠隨便本身定義 ----- 類型選擇腳本 ----- 腳本名稱輸入上一步編寫的發送郵件的腳本名稱 ----
再添加如下3個參數,分別對應腳本須要的3個參數:收件人地址、主題、詳細內容:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
三、管理 ---- 用戶 ----- 選擇admin用戶。(本身建立一個用戶也能夠)
四、報警媒介 ---- 添加。
五、類型輸入剛剛建立的報警媒介類型sendmail腳本 --- 輸入我的郵箱用於接收報警郵件 --- 啓動打勾 ---- 添加。
六、選擇更新。
七、權限設置(管理員用戶不用修改,權限默認全部服務器,若是要分類權限須要在用戶組進行控制)
八、配置 ---- 動做 ---- 建立動做。
九、動做 ---- 名稱自定義 --- 設置一條新的觸發條件 ---- 啓用 ---- 添加。(觸發條件須要根據實際狀況設置)
觸發器 似 is unreachable for 5 minutes #根據主機觸發器 Template App Zabbix Agent: Zabbix agent on {HOST.NAME} is unreachable for 5 minutes 設置,主要監測zabbix_agentd客戶端鏈接狀況。
十、定義操做。
默認接收人:故障{TRIGGER.STATUS},服務器:{HOSTNAME1}發生: {TRIGGER.NAME}故障!
默認信息:
告警主機IP地址:{HOST.CONN}
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
十一、定義恢復操做。
默認接收人:恢復{TRIGGER.STATUS}, 服務器:{HOSTNAME1}: {TRIGGER.NAME}已恢復!
恢復信息:
告警主機IP地址:{HOST.CONN}
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
十二、測試。
[root@ssticentos65 alertscripts]# /etc/init.d/zabbix_agentd stop #暫停zabbix_agentd客戶端服務