1. 程式人生 > >分布式監控系統Zabbix3.2給異常添加郵件報警

分布式監控系統Zabbix3.2給異常添加郵件報警

zabbix

在前一篇 分布式監控系統Zabbix3.2跳坑指南 中已安裝好服務端和客戶端,此處客戶端是被監控的服務器,可能有上百臺服務器。監控的目的一個是可以查看歷史狀態,可以對比零晨和工作區間數據的對比,以便後期進行優化指導。還有一個是報警,總不能等到服務器出現異常了才去從頭查是什麽問題吧。所以這篇主要介紹報警中最基礎的一個 配置郵件預警。

  通常zabbix提供了 e-mail、sms、jabber、微信等預警方式,sms等前期需要資金投入那就先否決吧,誰叫老板不給錢。

安裝郵件發送工具mailx

  這裏我選擇的是mailx,所以的關閉其他的郵件發送工具

service sendmail stop #關閉chkconfig sendmail off #禁止開機啟動service postfix stop
chkconfig postfix off

執行安裝mailx的命令:

yum install mailx

配置Zabbix服務端外部郵箱

打開文件vi /etc/mail.rc 如果mail.rc文件沒有,就手動創建 內容如下:

set sendcharsets=iso-8859-1,utf-8set [email protected]
set smtp=smtp.163.com:25set [email protected] #認證用戶,一般與from保持一致set smtp-auth-password=xxx #認證密碼,如何開通授權可自行google

測試郵件是否可以發出

echo "zabbix test mail" |mail -s "zabbix" [email protected]#這時候,郵箱[email protected]會收到來自[email protected]的測試郵件

編寫發送郵件腳本

進入下面路徑:/usr/local/zabbix/alertscripts 創建sendmail.sh文件,內容如下
echo "$3" | mail -s "$2" "$1"


  上面的這個三個參數是接收從web頁面中傳遞過來的,$1:收件人郵箱地址;$2:郵件標題;$3:郵件內容
  為什麽我們會在這個路徑下面創建這個腳本呢,這是在我們的zabbix_server.conf文件中配置的
  AlertScriptsPath=/usr/local/zabbix/alertscripts
  所以你不想將這個腳本放在這個目錄下面,需要修改服務端的配置文件中的AlertScriptsPath的值。

配置web頁面

  創建媒體類型

  點擊創建媒體類型

技術分享圖片

技術分享圖片

  添加以下3個參數,分別對應sendmail.sh腳本需要的3個參數:收件人地址、主題、詳細內容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
  如果在3.0中不添加這三個參數會報錯,因為在3.0以後zabbix允許自定義參數了,所以不會默認傳遞參數,在2.0的時候會默認傳遞三個參數,所以在3.0如果不寫這三個參數會報錯。

給用戶添加報警媒介

在這以Admin用戶為例 管理—》用戶—》點擊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封郵件。
到這我們的郵件報警配置就完成了,這是只要我們設置的觸發器觸發,就會自動給我發送報警郵件。

測試郵件報警

我將zabbix自帶的模板中的對可用內存的監控中的觸發器的臨界值改為大於0,進入模板列表

技術分享圖片

技術分享圖片

點擊修改,改成可用內存小於2g就報警,這樣就容易觸發。

技術分享圖片

保存以後 將收到一份報警郵件 內容如下:

技術分享圖片

在此就配好了郵件發送。

補坑註意:

  在郵件發送時,按上面的sendmail.sh中的寫可能會出現zabbix郵件內容為附件和zabbix圖中出現中文亂碼問題。

下面是參考園友的解決方法:

安裝zabbix之後,設置郵件腳本報警的時候,發送的報警內容變成了tcmime.1278.1278.1724.bin或ATT00001.bin。

安裝dos2unix:
yum -y install mailx dos2unix //安裝mailx工具和dos2unix轉換工具

以下是腳本內容
打開 /usr/local/zabbix/alertscripts/sendmail.sh
替換內容

#!/bin/bashexport LANG=zh_CN.UTF-8file=/tmp/zabbix_mail.txt
echo "$3" > $file
dos2unix -k $file/bin/mailx -s "$2" $1 < $file


分布式監控系統Zabbix3.2給異常添加郵件報警