實驗條件:
Zabbix監控服務器、客戶端都已經部署完成,被監控主機已添加完成,Zabbix監控運行正常。
實現目的:
Zabbix監控服務器設置郵件報警,當被監控主機宕機或達到觸發器預設值進,會自動發送報警郵件到指定的郵箱。
概念補充:
什么是MTA?什么是MUA?
通俗的說MUA就是用戶使用的客戶端,而MTA則是真正發送郵件的發送進程,MUA編寫的郵件最終也交由MTA發送至目標端。
mailx即為負責查看、編寫郵件和向MTA發送郵件的MUA。
Sendmail和postfix即為負責郵件在網絡上傳輸的MTA,將郵件從一個MTA傳送至另一個MTA。
標注:使用zabbox服服務端本地郵箱賬號發送郵件,需要安裝兩個軟件達到報警郵件轉發至指定郵箱。Sendmail或postfix(兩個軟件各選擇一個,但不能同時運行)和mailx郵件客戶端。
配置網絡yum源參考教程:
http://www.cnblogs.com/zoulongbin/p/5773330.html
Zabbix服務器操作
1、 安裝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 ~]#
2、安裝郵件發送工具mailx 。(郵件用戶代理MUA)
[root@ssticentos65 ~]# yum -y install mailx #在線安裝mailx
3、 配置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 #登錄
4、測試郵件能否發送
#發送一份郵件到1873714157@qq.com 這個QQ郵箱(個人申請的QQ測試郵箱)
[root@ssticentos65 ~]# echo "test" | mail -s 'test linux' 1873714157@qq.com
5、編寫郵件發送腳本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介面配置
1、管理 ---- 報警媒介類型 ----- 創建媒介類型。
2、名稱可以隨便自己定義 ----- 類型選擇腳本 ----- 腳本名稱輸入上一步編寫的發送郵件的腳本名稱 ----
再添加以下3個參數,分別對應腳本需要的3個參數:收件人地址、主題、詳細內容:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
3、管理 ---- 用戶 ----- 選擇admin用戶。(自己創建一個用戶也可以)
4、報警媒介 ---- 添加。
5、類型輸入剛剛創建的報警媒介類型sendmail腳本 --- 輸入個人郵箱用於接收報警郵件 --- 啟動打勾 ---- 添加。
6、選擇更新。
7、權限設置(管理員用戶不用修改,權限默認所有服務器,如果要分類權限需要在用戶組進行控制)
8、配置 ---- 動作 ---- 創建動作。
9、動作 ---- 名稱自定義 --- 設置一條新的觸發條件 ---- 啟用 ---- 添加。(觸發條件需要根據實際情況設置)
觸發器 似 is unreachable for 5 minutes #根據主機觸發器 Template App Zabbix Agent: Zabbix agent on {HOST.NAME} is unreachable for 5 minutes 設置,主要監測zabbix_agentd客戶端連接情況。
10、定義操作。
默認接收人:故障{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}
11、定義恢復操作。
默認接收人:恢復{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}
12、測試。
[root@ssticentos65 alertscripts]# /etc/init.d/zabbix_agentd stop #暫停zabbix_agentd客戶端服務