• Zabbix 邮箱告警(Python脚本)


    Python 脚本内容

    #!/bin/env python
    #coding:utf-8
     
    import smtplib  
    from email.mime.text import MIMEText  
    from sys import argv
     
    mailto_list=[]
    mail_host="hwsmtp.qiye.163.com"  #邮箱服务器地址
    mail_user="邮箱地址"
    mail_pass="邮箱密码"
    debug_level=0
     
    def send_mail(to_list,sub,content):
        me=mail_user
        msg = MIMEText(content,_subtype='plain',_charset='utf-8')
        msg['Subject'] = sub  
        msg['From'] = me  
        msg['To'] = ";".join(to_list)
        try:
            server = smtplib.SMTP()
            server.set_debuglevel(debug_level)
            server.connect(mail_host)
            server.login(mail_user,mail_pass)
            server.sendmail(me,to_list,msg.as_string())
            server.close()
            return True  
        except Exception, e:
            print str(e)
            return False  
    if __name__ == '__main__':
        try:
            mailto_list=argv[1].split(';')
            sub=argv[2]
            content=argv[3]
        except:
            print "python send_mail.py 'user1@xx.com;user2@xx.com' sub content"
            exit()
     
        if send_mail(mailto_list,sub,content):
            print "发送成功"
        else:
            print "发送失败"
     

    创建脚本文件

    上传脚本到文件下
     
    测试邮件是否可以发出
     
     
     

    配置web页面

    创建媒体类型
    名称随意填
    脚本名称要填上传的脚本名称
    添加以下3个参数,分别对应sendmail.sh脚本需要的3个参数:收件人地址、主题、详细内容
    {ALERT.SENDTO}
    {ALERT.SUBJECT}
    {ALERT.MESSAGE}
    如果在3.0中不添加这三个参数会报错,因为在3.0以后zabbix允许自定义参数了,所以不会默认传递参数,在2.0的时候会默认传递三个参数,所以在3.0如果不写这三个参数会报错。

    更新配置

     

    给用户添加报警媒介

    在这以Admin用户为例 管理—》用户—》点击Admin
     

    添加邮件接收人

     
     

    添加动作

     

    填写动作选项

    添加邮件格式

    除了自己填写一个名称以外,其余的都默认就好了。当然也可以修改成中文:参考如下
    默认接收人:
    故障{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.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
    #这里注意了,很多教程都是复制故障通知消息,这里时间需要设置为EVENT.RECOVERY.DATE 才会发送正确的故障恢复时间,否则会发送故障发生时的时间。
    告警时间:{EVENT.DATE} {EVENT.TIME}
    告警等级:{TRIGGER.SEVERITY}
    告警信息: {TRIGGER.NAME}
    告警项目:{TRIGGER.KEY1}
    问题详情:{ITEM.NAME}:{ITEM.VALUE}
    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
    事件ID:{EVENT.ID}
    已启用:打钩
    填写条件选项
    解释:
    默认的步骤是1-1,也即是从1开始到1结束。一旦故障发生,就是执行sendEmail.sh脚本发生报警邮件给Admin用户和zabbix administrator组。
    假如故障持续了1个小时,它也只发送一次。如果改成1-0,0是表示不限制.无限发送 间隔就是默认持续时间60秒。那么一个小时,就会发送60封邮件。
    到这我们的邮件报警配置就完成了,这是只要我们设置的触发器触发,就会自动给我发送报警邮件
     

    测试邮件报警

    我将zabbix自带的模板中的对可用内存的监控中的触发器的临界值改为大于0,进入模板列表
     
    选则模板
     
    选则触发器
     
    选则内存
    调为2000 然后测试下
  • 相关阅读:
    使用.sig签名验证文件
    ubuntu server 安装nextcloud12
    centos 搭建owncloud私有云
    archlinux错误:无法提交处理 (无效或已损坏的软件包)
    Oracle数据库-建库、建表空间,建用户
    JS中几种遍历方式
    常用的正则表达式
    JavaWeb中GET请求url传参中文乱码问题
    常用的ajax方式
    table中td内容过长自动换行
  • 原文地址:https://www.cnblogs.com/xuewenlong/p/12857565.html
Copyright © 2020-2023  润新知