1. 程式人生 > >zabbix配置傳送報警郵件

zabbix配置傳送報警郵件

Linux系統版本:CentOS7.3

下載mailx:

http://nchc.dl.sourceforge.net/project/heirloom/heirloom-mailx/12.4/mailx-12.4.tar.bz2

[[email protected] ~]# rpm -qa |grep mailx
mailx-12.4-8.el6_6.x86_64

檢視mailx軟體版本

[[email protected] ~]# mailx -V
12.4 7/29/08

配置zabbix服務端郵件地址

[[email protected] ~]# tail -3 /etc/mail.rc 
set from=[email protected] smtp=smtp.sina.net
set smtp-auth-user=[email protected] smtp-auth-password=123456
set smtp-auth=login

使用mailx測試傳送郵件

echo "zabbix test mail" | mailx -s "Test-mail" 

[email protected] ---檢視自己126郵箱是否有此封測試郵件。

建立media型別

設定使用者報警郵箱

在web介面配置zabbix動作Action選項

故障:{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},伺服器:{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}

 

接著配置Operations選項

編寫sendmail.sh指令碼

[[email protected] ~]# cd /yc/usr/local/zabbix/share/zabbix/alertscripts/

[[email protected] alertscripts]# cat sendmail.sh 
#!/bin/bash
echo "$3" |mailx -"$2" $1

*註釋:其中$3為報警郵件內容,$2為報警郵件主題,$1為使用者接收郵箱

[[email protected] alertscripts]# chown -R zabbix.zabbix sendmail.sh

[[email protected] alertscripts]# chmod +x sendmail.sh

測試,停掉任意一臺機器的zabbix_agentd,過幾分鐘檢視126郵箱中是否存在報警郵件。

附:python郵件傳送指令碼。

複製程式碼

[[email protected] alertscripts]# cat sendmail.py 
#!/usr/bin/python
#coding:utf-8 
 
import smtplib
from email.mime.text import MIMEText
import sys 
reload(sys)
sys.setdefaultencoding('utf8')
#郵箱伺服器地址
mail_host = 'smtp.exmail.qq.com'
#郵箱使用者名稱
mail_user = '[email protected]'
#郵箱密碼
mail_pass = 'Z123456'
mail_postfix = 'xkops.com'

def send_mail(to_list,subject,content):
    me = mail_user+"<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEText(content,_charset='utf-8')
    if not isinstance(subject,unicode):
        subject = unicode(subject)
    msg['Subject'] = subject
    msg['From'] = me
    msg['to'] = to_list 
 
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user,mail_pass)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False
 
if __name__ == "__main__":
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])