參考博客:http://blog.chinaunix.net/uid/26118446.html 小鉆風
http://www.iyunv.com/thread-61736-1-1.html 運維網論壇帖子
搭建好zabbix監控服務系統后,就是增加郵件報警功能,還是費了點時間,因為先是能發送到163郵箱,不能發送到QQ郵箱,后又是以附件的形式發送郵件,而不是直接顯示其報警內容:
用163做的測試:
使用外部郵箱賬號發送報警郵件設置
一、關閉sendmail或者postfix
service sendmail stop #關閉
chkconfig sendmail off #禁止開機啟動
service postfix stop
chkconfig postfix off
備注:
使用外部郵箱賬號時,不需要啟動sendmail或者postfix
如果在sendmail或者postfix啟動的同時使用外部郵箱發送報警郵件,首先會讀取外部郵箱配置信息。
二、安裝郵件發送工具mailx
yum install mailx #安裝
CentOS 5.x 編譯安裝mailx,直接yum安裝的mailx版本太舊,使用外部郵件發送會有問題,CentOS6.X自帶版本為mailx12.4。
yum remove mailx #卸載系統自帶的舊版mailx
下載mailx:
http://nchc.dl.sourceforge.net/project/heirloom/heirloom-mailx/12.4/mailx-12.4.tar.bz2
tar jxvf mailx-12.4.tar.bz2 #解壓
cd mailx-12.4 #進入目錄
make #編譯
make install UCBINSTALL=/usr/bin/install #安裝
ln -s /usr/local/bin/mailx /bin/mail #創建mailx到mail的軟連接
ln -s /etc/nail.rc /etc/mail.rc #創建mailx配置文件軟連接
whereis mailx #查看安裝路徑
mailx -V #查看版本信息
三、配置Zabbix服務端外部郵箱
vi /etc/mail.rc #編輯,添加以下信息
set from=xxx@163.com smtp=smtp.163.com
set smtp-auth-user=xxx@163.comsmtp-auth-password=123456
set smtp-auth=login
:wq! #保存退出
#echo "zabbix test mail" |mail -s "zabbix" yyy@163.com
#測試發送郵件,標題zabbix,郵件內容:zabbix test mail,發送到的郵箱:yyy@163.com
#這時候,郵箱yyy@163.com會收到來自xxx@163.com的測試郵件
四、配置Zabbix服務端郵件報警
1、打開Zabbix
管理-示警媒介類型-創建媒體類型
名稱:Sendmail
類型:腳本
腳本名稱:sendmail.sh
已啟用:勾選
存檔
2、設置Zabbix用戶報警郵箱地址
管理-用戶-Admin (Zabbix Administrator)
切換到示警媒介-添加
類型:Sendmail
收件人:xxx@163.com
其他默認即可,也可
以根據需要設置
狀態:已啟用
存檔
3、設置Zabbix觸發報警的動作
組態-動作-創建動作
名稱:Action-Email
默認接收人:故障{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}
已啟用:打鉤
切換到操作選項
新的
操作類型:送出信息
送到用戶:添加
默認信息:打鉤
選擇用戶:Admin
選擇
僅送到:Sendmail
存檔
4、添加Zabbix服務端郵件發送腳本
cd /usr/local/zabbix/share/zabbix/alertscripts #進入zabbix腳本存放目錄
vi sendmail.sh #編輯,添加以下代碼
#!/bin/sh
echo "$3" | mail -s "$2" $1
:wq! #保存退出
或
這個是運維網復貼的:
01 02 03 | #! /bin/bash #echo "$3" | mail -s "$2" $1 echo "$3" | sed s/'\r'//g | mail -s "$2" $1 |
chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh
#設置腳本所有者為zabbix用戶
chmod +x /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh
#設置腳本執行權限
五、測試Zabbix報警
關閉Zabbix客戶端服務
service zabbix_agentd stop
查看xxx@163.com郵箱,會收到報警郵件
再開啟Zabbix客戶端服務
service zabbix_agentd start
查看xxx@163.com郵箱,會收到恢復郵件
六、郵件可以收到,但是只是以附件的形式
原因:
Unix 系統里,每行結尾只有“<換行>”,即"\n";Windows系統里面,每行結尾是“<回車><換行>”,即“\r\n”;Mac系統里,每行結尾是“<回車>”,即"\r";。一個直接后果是,Unix/Mac系統下的文件在Windows里打開的話,所有文字會變成一行;而Windows里的文件在Unix/Mac下打開的話,在每行的結尾可能會多出一個^M符號。"
于是就有一中方法,dos2unix 轉換一下.bin文件格式
解決辦法:
安裝dos2unix格式轉換軟件
yum -y install dos2unix
vim /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh
1. #!/bin/bash
2. export zabbixemailto="$1"
3. export zabbixsubject="$2"
4. export zabbixbody="$3"
5. FILE=/usr/local/zabbix/share/zabbix/alertscripts/mail.txt
6. echo "$3" > $FILE
7. /usr/bin/dos2unix -k $FILE
8. mail -s "$2" $1 < $FILE
這樣配置后依然只收到附件,后網上搜了一下,大部分都是這個配置方式,找到一位網友貼的一方法,試試可行:
vim /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh
1. #!/bin/bash
2. exportzabbixemailto="$1"
3. exportzabbixsubject="$2"
4. exportzabbixbody="$3"
5. zabbixbody=`echo $zabbixbody|tr '\r' '\n'`
6. cat << EOF |mail -s "$2"$1
7. $zabbixbody
8. EOF
測試成功后,將用戶接收郵箱改為QQ郵箱,也執行成功,只不過QQ郵件限制很多,發送的郵件內容有可能通不過審查,會退回,引起接收不到郵件,前邊QQ郵箱接收不到可能是以*.bin為后綴的附件通不過審查,現在QQ郵箱都實現SSL安全認證。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。