這裏實現的郵件告警方式是使用一個能夠在互聯網上正常收發郵件的郵箱帳號(例如:***@163.com),經過在zabbix服務端中設置,實現當發生故障時能夠發送告警郵件到指定郵箱
實現步驟:web
一、 安裝郵件發送工具mailx
能查到版本信息說明安裝成功
二、 修改配置文件
在/etc/mail.rc文件最後添加如下內容並重啓zabbix-server服務:
Smtp-auth-passwordd的獲取方式見下圖:
三、 修改web端
三個腳本參數分別對應sendmail.sh腳本里面的須要的參數:收件人地址、主題、詳細內容。
配置用戶,以Admin爲例,由於Admin用戶是在Zabbix administrators這個用戶羣組裏面,因此要保證這個羣組對全部的主機羣組都有管理權限:服務器
配置動做將告警和發郵件的操做關聯起來
修改一下告警內容:
默認標題:
{TRIGGER.STATUS}: {TRIGGER.NAME}
消息內容:ide
故障:{TRIGGER.STATUS},服務器:{HOSTNAME1}發生:{TRIGGER.NAME}故障! 告警主機:{HOSTNAME1},IP地址:{HOST.CONN} 告警時間:{EVENT.DATE}--{EVENT.TIME} 告警等級:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME} 告警項目:{TRIGGER.KEY1} 問題詳情:{ITEM.NAME}:{ITEM.VALUE} 當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
告警恢復內容也修改一下:工具
默認標題: {TRIGGER.STATUS}: {TRIGGER.NAME} 消息內容: 恢復:{TRIGGER.STATUS},服務器:{TRIGGER.NAME} 已經恢復! 告警主機:{HOSTNAME1} ,IP地址:{HOST.CONN} 告警時間:{EVENT.DATE}---{EVENT.TIME} 恢復時間:{EVENT.DATE}---{EVENT.RECOVERY.TIME} 告警等級:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME} 告警項目:{TRIGGER.KEY1} 問題詳情:{ITEM.NAME}:{ITEM.VALUE} 當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
恢復操做設置相同
註釋:步驟1-3:默認是1-1,就是從1開始到1結束,一旦故障發生,就執行sendmail.sh腳本發送告警郵件給你設置的用戶羣組或用戶(我上面只添加了Admin用戶),若是故障持續了一個小時也沒解決,它也只執行一次,若是是1-0,0表示無限次,發送間隔就是步驟持續時間60s,就會發送60封郵件,顯然是不合理的。
Web端配置完畢
四、 編寫sendmail.sh腳本
注意你在zabbix-server的配置文件中設置的告警腳本存放路徑:
我這裏選擇了默認,沒作修改,因此sendmail.sh腳本必須放在此路徑下面
腳本內容以下(記得+X權限):測試
#!/bin/sh export.UTF-8 FILE=/tmp/mailtmp.txt echo "$3" >$FILE dos2unix -k $FILE /bin/mail -s "$2" $1 < $FILE touch /tmp/mailtmp.txt chown zabbix.zabbix /tmp/mailtmp.txt
五、 驗證測試
在zabbix server端停掉zabbix-agent,看可否收到告警郵件
恢復郵件:
zabbix郵件告警已完成
ending.....unix