監控zabbix 3.4.11異常通過郵件報警步驟
監控的目的一個是可以檢視歷史狀態,可以對比零晨和工作區間資料的對比,以便後期進行優化指導。還有一個是報警,總不能等到伺服器出現異常了才去從頭查是什麼問題吧。所以這篇主要介紹報警中最基礎的一個 配置郵件預警。
安裝郵件傳送工具mail
我選擇的是mailx,所以的關閉其他的郵件傳送工具
#systemctl stop sendmail #關閉
#systemctl disable sendmail #禁止開機啟動
#systemctl stop postfix #關閉
#systemctl disable postfix#禁止開機啟動
安裝mailx
安裝zabbix之後,設定郵件指令碼報警的時候,傳送的報警內容變成了tcmime.1278.1278.1724.bin或ATT00001.bin。
安裝dos2unix:
yum -y install mailx dos2unix //安裝mailx工具和dos2unix轉換工具
#yum install mailx -y
#yum -y install dos2unix #安裝mailx工具和dos2unix轉換工具
配置Zabbix服務端外部郵箱
#vim /etc/mail.rc #在此配置檔案中新增 set from[email protected]163.com smtp=smtp.163.com #自己的郵箱 set [email protected]163.com set [email protected]312588 set smtp-auth=login
測試郵件是否可以發出
echo "zabbix test mail" |mail -s "zabbix" [email protected]163.com #這時候,郵箱[email protected]163.com會收到來自[email protected]163.com的測試郵件
編寫傳送郵件指令碼
# vim /etc/zabbix/zabbix_server.conf AlertScriptsPath=/usr/lib/zabbix/alertscripts #此路徑是編寫傳送郵件的路徑 #cd /usr/lib/zabbix/alertscripts #vim sendmaail.sh
#!/bin/bash
export LANG=zh_CN.UTF-8
file=/tmp/zabbix_mail.txt
echo "$3" > $file
dos2unix -k $file
/bin/mailx -s "$2" $1 < $file
上面的這個三個引數是接收從web頁面中傳遞過來的,$1:收件人郵箱地址;$2:郵件標題;$3:郵件內容
配置web頁面
建立媒體型別 →建立媒體型別
新增以下3個引數,分別對應sendmail.sh指令碼需要的3個引數:收件人地址、主題、詳細內容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
注:如果在3.0中不新增這三個引數會報錯,因為在3.0以後zabbix允許自定義引數了,所以不會預設傳遞引數,在2.0的時候會預設傳遞三個引數,所以在3.0如果不寫這三個引數會報錯。
給使用者新增報警媒介
以Admin使用者為例 管理→使用者→點選Admin
新增收件人
新增動作
填寫動作選項
除了自己填寫一個名稱以外,修改成中文:參考如下
預設接收人:
故障{TRIGGER.STATUS},伺服器:{HOSTNAME1}發生:{TRIGGER.NAME}故障!
預設資訊:
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE}{EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警資訊: {TRIGGER.NAME}
告警專案:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢復主題:
恢復{TRIGGER.STATUS},伺服器:{HOSTNAME1}: {TRIGGER.NAME}已恢復!
恢復資訊:
告警主機:{HOSTNAME1}
恢復時間:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
#這裡注意了,很多教程都是複製故障通知訊息,這裡時間需要設定為EVENT.RECOVERY.DATE 才會傳送正確的故障恢復時間,否則會發送故障發生時的時間。
告警時間:{EVENT.DATE}{EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警資訊: {TRIGGER.NAME}
告警專案:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
填寫條件選項
解釋:
預設的步驟是1-1,也即是從1開始到1結束。一旦故障發生,就是執行sendemail.sh指令碼發生報警郵件給Admin使用者和zabbix administrator組。
假如故障持續了1個小時,它也只發送一次。如果改成1-0,0是表示不限制.無限傳送 間隔就是預設持續時間60秒。那麼一個小時,就會發送60封郵件。
到這我們的郵件報警配置就完成了,這時只要我們設定的觸發器觸發,就會自動給我傳送報警郵件。
測試郵件報警
此處模擬的是監控伺服器的nginx宕機,給郵件接收者發郵件
此時手動將被監控伺服器上nginx停用,這將收到觸發後的郵件(故障發生和故障恢復)