Zabbix3.0邮件告警配置

来源:互联网 发布:windows 2012装snmp 编辑:程序博客网 时间:2024/06/07 14:05

  • 概述
  • 安装环境
  • 编写脚本
  • 修改配置文件
  • 新建媒体类型
  • 添加收件人
  • 配置报警动作
  • 测试

概述

最近在部署调试zabbix3.0监控系统,邮件告警是监控系统中必不可少的一部分,下面就来谈谈通过自定义脚本的方式来给zabbix3.0配置邮件告警。

安装环境

  • zabbix server版本为3.0.3,使用rpm包方式安装
  • 使用官方rpm包方式安装的zabbix server本身不支持SMTP authentication1
  • 系统版本
    $ cat /etc/redhat-release
    Red Hat Enterprise Linux Server release 6.3 (Santiago)

编写脚本

在这里我们使用一个简单的python脚本来实现发送邮件的功能。
脚本如下:sendmail.py2

#!/usr/bin/python#coding:utf-8import smtplibfrom email.mime.text import MIMETextimport sys# configure your own parameters heremail_host = 'smtp.xxxx.com'  mail_user = 'xxx@xxxx.com'mail_pass = 'xxxxx'mail_postfix = 'xxxx.com'def send_mail(to_list,subject,content):    me = mail_user+"<"+mail_user+"@"+mail_postfix+">"    msg = MIMEText(content, 'plain', 'utf-8')    # 必须使用'utf-8'参数,否则默认为us-ascii, 在部分邮件客户端中文会显示为乱码    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 Falseif __name__ == "__main__":    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

注意:

  • s.sendmail(me,to_list,msg.as_string())中的me变量需为一个username@company.com格式的完整邮箱地址,否则我公司smtp服务器会退信,报错:DELIVERY FAILURE: Error transferring to 132.228.xxx.xxx; SMTP Protocol Returned a Permanent Error 555 Syntax error
  • 类似的python3脚本4还有许多,也有用linux系统下的mutt5和mail6程序实现的shell脚本

修改配置文件

  • 修改zabbix_server.conf 中的这一行:
    AlertScriptsPath=/etc/zabbix/alertscripts
    该目录应为发邮件脚本所在目录
  • 重启zabbix server使配置生效
    service zabbix-server restart

新建媒体类型

  • 在Zabbix Web页面下,Administration -> Media Type -> Create media type
  • 输入脚本名称,类型选择Script
  • Zabbix3.0新加了脚本参数功能,因此Script Parameter栏目必须填写,一般为:
    {ALERT.SENDTO}, {ALERT.SUBJECT}, {ALERT.MESSAGE}
    分别为脚本需要的3个参数:收件人地址、主题、详细内容
  • 很多人安Zzabbix3.0之后,写的脚本一直发信不成功,手动执行时可以的。这是因为Zabbix3.0之后,可以自定义参数了。所以不写参数,它是不会传参数的。在2.x版本不存在这个问题,默认会传3个参数。
    Create Media type

添加收件人

Administration -> User -> 选择用户 -> Media -> Add
type选择新建的脚本媒体名称,recipient填写收件人邮箱地址
add recipient 1
add recipient 2

配置报警动作

Configuration -> Action -> Create action
create action

测试

停掉client节点的zabbix-agent服务,等待邮件报警。默认agent发邮件是5分钟,即5次没有获取到数据则报警。


  1. https://www.zabbix.com/documentation/3.0/manual/config/notifications/media/email ↩
  2. http://www.cnblogs.com/Eivll0m/p/5446993.html ↩
  3. https://gist.github.com/superdaigo/3754055 ↩
  4. https://github.com/itnihao/zabbix-book/blob/master/06-chapter/zabbix_sendmail_v2.py ↩
  5. https://karp.id.au/a/2014/12/31/sending-authenticated-smtp-alerts-from-zabbix ↩
  6. https://www.zabbix.com/documentation/3.0/manual/config/notifications/media/script ↩
1 0
原创粉丝点击