(不是一天寫成blog,有截圖上的時間差)
流程:
1.配置zabbix-server服務端mailx,並在zabbix-server.conf配置文件的腳本路徑中添加郵件腳本;
2.配置web界面選項的動作,報警媒介類型,
3.在用戶中添加告警媒介,設置類型,收件人等選項
首先,在zabbix-server客戶端安裝mailx,先停掉postfix
systemctl stop postfix.service
yum install mailx -y
在配置文件最后面編寫發送使用的配置郵件:
vim /etc/mail.rc
set bsdcompat set from=yourmail@163.com set smtp=smtp.163.com set smtp-auth-user=yourmail@163.com set smtp-auth-password=163郵箱授權碼 set smtp-auth=login
163郵箱授權碼獲得方式:
需要手機發送短信收到之后網頁163郵箱確定會會出現一次,記住在添加到配置中去。。
測試,自己給自己發一下吧:
echo "yourmail@163.com test" | mailx -s "zabbix-alert" yourmail@163.com
測試 成功了!!!
===
創建郵件發送腳本
先看下zabbix-server配置文件查看下發送腳本的目錄
找到alertscripts目錄,
編寫腳本mail.sh,並賦予執行權限x,
#!/bin/bash
echo "use mailx to send mail"
echo "$3" | mail -s "$2" "$1"
OK,,
配置報警媒介回到zabbix-server 界面,在告警媒介添加新的告警
腳本名稱要和配置文件中的一樣,,點擊測試
要添加發送的郵箱收告警信息,成功如下圖,
配置動作
緊接着配置zabbix界面上的動作選項,
動作選項中,在子選項條件選項中添加對應的觸發條件,我設置的是主機web1的nginx宕機為觸發條件,也可以添加一個主機組,
操作選項中,消息內容要把需要的報警信息填進去,會在郵件中顯示,操作細節必須填寫,要設定發送郵件給定的主機或主機組,恢復操作細節也是,但也可以不寫,不寫在事故恢復時,不會發郵件告訴我事故已經沒有了,,
操作-->消息內容:
故障{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.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
恢復告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
看下演示:
然后在用戶中添加告警媒介
當監控主機web1的nginx停掉后,zabbix-server會發送郵件通知。
===============================================================
報錯集合:
1.碰到的錯誤如圖,發送郵件的時候顯示以失敗,並報錯No media defined for user.
原因如圖,我在玩配置用戶報警媒介的時候類型忘記選擇自定義的郵件告警,將類型選擇郵件告警,正常發送:
2.這個也不是錯誤
就是收到的郵件是個bin文件,需要下載之后改成txt類型查看,怎么解決?
解決了!!
mail.sh腳本配置文件:
#!/bin/bash #export LANG=zh_CN.UTF-8 #dos2unix -k "$3" #echo "use mailx to send mail" #echo "$3" | mail -s "$2" "$1" #export.UTF-8 ###解決發送的中文變成了亂碼的問題 #FILE=/tmp/zabbix_mail.txt #echo "$3" >$FILE #dos2unix -k $FILE ###解決了發送的郵件內容變成附件的問題。 #/usr/bin/mail -s "$2" $1 < $FILE SENT_TO=$1 SENT_SUBJECT=$2 SENT_CONTENT="/tmp/alert_$$.tmp" echo "$3">$SENT_CONTENT dos2unix $SENT_CONTENT mailx -s "SENT_SUBJECT" $SENT_TO<$SENT_CONTENT