1.设置告警媒介类型
管理--->报警媒介类型----> 创建媒体类型

名称自定义,这里用脚本报警
脚本名称是将要发送告警邮件的脚本,脚本参数分别为
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
3个参数,分别对应脚本的3个参数:收件人地址、主题、详细内容。
2.设置报警脚本
报警脚本位于zabbix-server端,查看/etc/zabbix/zabbix_server.conf可以看到AlertScriptsPath=/usr/lib/zabbix/alertscripts此路径就是告警脚本的存放路径,可以手动更改路径,也可以不改,将相应的告警脚本放到此路径下即可。(注意,更改配置文件后要重启zabbix-server服务),内容如下,基于python2
#!/usr/bin/python#coding:utf-8import smtplibfrom email.mime.text import MIMETextimport sysimport base64mail_host = 'smtp.163.com' # smtp地址mail_user = '用户' # 比如zhangsanmail_pass = '邮箱密码'mail_postfix = '邮箱后缀' # 比如foxmail.comsender='发件人'def send_mail(to_list,subject,content):mail_user+"<"+mail_user+"@"+mail_postfix+">"msg = MIMEText(content,'plain', 'utf-8')if not isinstance(subject, unicode):subject = unicode(subject, 'utf-8')msg['Subject'] = subjectmsg['From'] = memsg['to'] = to_listmsg["Accept-Language"] = "zh-CN"msg["Accept-Charset"] = "ISO-8859-1,utf-8"try:s = smtplib.SMTP_SSL()s.connect(mail_host,994)s.login(sender, mail_pass)s.sendmail(me,to_list,msg.as_string())s.close()return Trueexcept Exception,e:print str(e)return Falseif __name__ == "__main__":send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
测试报警脚本是否可用:./support.py 收件地址 主题 内容
若无报错且收到邮件则表示报警邮件好使。
3.用户报警媒介设置
管理---->用户(选中相应的用户)--->报警媒介---->类型脚本报警,设置收件人等等

4.设置触发器
配置---->动作---->右上角事件源选触发器--->点击创建动作

设置动作,动作这一栏名称都自定义,触发条件可以写主机群组等于discovered hosts,就是此触发器生效的对象是谁,不填不会触发

操作设置,默认标题,消息内容都可以更改,可以改成以下内容,也可以不改
{TRIGGER.STATUS}: {TRIGGER.NAME} # 这个是默认标题,下面是消息内容
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

配置完成一点要点击下面的添加,才可以,类似如下就可以

相同的,恢复操作和更新操作都可以照葫芦画瓢,不多余解释
5.测试环节
测试触发告警时邮箱是否收到告警邮件,如果没有收到邮件,可以查看动作日志,如果动作日志没有消息,则前面步骤有遗漏或者配置错误,检查前面配置,如果动作日志有消息内容,但是显示已失败,可以点击后面红色感叹号!会有对应的报错信息。。如果显示已送达,则可能是报警脚本有问题或者收件箱设置问题。





