Zabbix3.0邮件告警配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cheng10cc/article/details/51856388

概述

最近在部署调试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-8

import smtplib
from email.mime.text import MIMEText
import sys

# configure your own parameters here
mail_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 False

if __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次没有获取到数据则报警。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页