首页 后端开发 Python教程 详解Zabbix3.0.2使用外部python脚本实现邮件报警方法

详解Zabbix3.0.2使用外部python脚本实现邮件报警方法

Mar 23, 2017 pm 03:40 PM
蟒蛇脚本

1,找到默认存放脚本的路径(我是在默认路径下面放着,如果想换别的路径,修改zabbix_server.conf配置文件)

/usr/local/zabbix-server/share/zabbix/alertscripts 脚本存放路径

2,在目录新建一个mail.py的文件,脚本参考:

cd /usr/local/zabbix-server/share/zabbix/alertscripts

vim mail.py

#!/usr/bin/python

#coding:utf-8

#author: itnihao

#mail: itnihao@qq.com

#url:https://github.com/itnihao/zabbix-book/edit/master/06-chapter/zabbix_sendmail_v2.py   脚本直接down修改下复制会出现格式问题~

import smtplib

from email.mime.text import MIMEText

import os

import argparse

import logging

import datetime

#QQ enterprise

#smtp_server = 'smtp.exmail.qq.com'

#smtp_port = 25

#smtp_user = 'itnihao_zabbix@itnihao.com'

#smtp_pass = '1234567890'

#163 Mail

#smtp_server = 'smtp.163.com'

#smtp_port = 25

#smtp_user = 'itnihao_zabbix@163.com'

#smtp_pass = '1234567890'

#QQ Mail

smtp_server ='smtp.qq.com'

smtp_port = 25

smtp_user   ='itnihao_zabbix@qq.com'

smtp_pass   ='1234567890'

def send_mail(mail_to,subject,content):

    msg = MIMEText(content,_subtype='plain', _charset='utf-8')

    msg['Subject'] = unicode(subject,'UTF-8')

    msg['From'] = smtp_user

    msg['to'] = mail_to

    global sendstatus

    global senderr

    try:

        if smtp_port == 465:

            smtp = smtplib.SMTP_SSL()

        else:

            smtp = smtplib.SMTP()

        smtp.connect(smtp_server,smtp_port)

        smtp.login(smtp_user,smtp_pass)

        smtp.sendmail(smtp_user,mail_to,msg.as_string())

        smtp.close()

        print 'send ok'

        sendstatus = True

    except Exception,e:

        senderr=str(e)

        print senderr

        sendstatus = False

def logwrite(sendstatus,mail_to,content):

    logpath='/var/log/zabbix/alert'

    if not sendstatus:

        content = senderr

    if not os.path.isdir(logpath):

        os.makedirs(logpath)

    t=datetime.datetime.now()

    daytime=t.strftime('%Y-%m-%d')

    daylogfile=logpath+'/'+str(daytime)+'.log'

    logging.basicConfig(filename=daylogfile,level=logging.DEBUG)

    os.system('chown zabbix.zabbix {0}'.format(daylogfile))

    logging.info('*'*130)

    logging.debug(str(t)+' mail send to {0},content is :\n {1}'.format(mail_to,content))

if __name__ == "__main__":

    parser = argparse.ArgumentParser(description='Send mail to user for zabbix alerting')

    parser.add_argument('mail_to',action="store", help='The address of the E-mail that send to user ')

    parser.add_argument('subject',action="store", help='The subject of the E-mail')

    parser.add_argument('content',action="store", help='The content of the E-mail')

    args = parser.parse_args()

    mail_to=args.mail_to

    subject=args.subject

    content=args.content

    send_mail(mail_to,subject,content)

logwrite(sendstatus,mail_to,content)

3,修改脚本的权限

# chown   zabbix.zabbix mail.py

# chmod  775 mail.py

4,zabbix web配置

在配置媒介类型选择,创建一个媒介类型

详解Zabbix3.0.2使用外部python脚本实现邮件报警方法

填写下面信息,类型选择脚本,需要填写zabbix3.0需要下面3个参数。

详解Zabbix3.0.2使用外部python脚本实现邮件报警方法

创建用户或者在admin用户里设置报警

详解Zabbix3.0.2使用外部python脚本实现邮件报警方法

此处添加的是出现故障后邮件通知到的邮件,也就是收件人。

详解Zabbix3.0.2使用外部python脚本实现邮件报警方法

创建一个action,实现邮件报警,在配置-Action-create action里

(处我图片和下面给的模板不一样,建议使用模板,因为我使用的服务器不在中国区域,所有邮件标题会乱码.. 所以此图我把标题改短了。)

详解Zabbix3.0.2使用外部python脚本实现邮件报警方法

Name:

Action-Email

Default subject:

故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

Default message:

告警主机:{HOSTNAME1}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

请至Montoring-Events中查看详细情况。

Recovery subject:

恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

Recovery message:

告警主机:{HOSTNAME1}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

报警已恢复,请放松心情。

详解Zabbix3.0.2使用外部python脚本实现邮件报警方法

此处要注意操作类型,发送消息,还有消息的脚本。都要选对.

详解Zabbix3.0.2使用外部python脚本实现邮件报警方法

5,测试zabbix发送邮件

找一个agent客户端,停掉。然后看报警邮件~

Kill掉之后,可以在发送这里看到已经发生成功~ 

注意:zabbix的报警一般是5分钟发一次。比如:16:20停止的,16:25才会收到故障邮件,16:30处理了。16:35可以收到恢复信息~ … 

详解Zabbix3.0.2使用外部python脚本实现邮件报警方法

详解Zabbix3.0.2使用外部python脚本实现邮件报警方法

6.总结

    我此处使用的ubuntu 16.4的系统,开始尝用mailx发,后来少一些库文件无法安装,后来切换其他办法都已收不到邮件最后才选定用外部python脚本来实现~·ubuntu系统有很多软件的依赖环境不自带.apt-get实在用的不顺手,使用126邮箱出现客户端授权码无法无法在python脚本中登陆.QQ邮箱只能发生给自己. 最后选的是公司的企业邮箱。但是由于zabbix会频繁的发送邮件很多也被丢进垃圾箱… 最后在企业邮箱做的转发到QQ邮箱。

Ubuntu用开发和学习没问题,但是用作服务器问题还不少.

正确的姿势: centos+zabbix+企业邮箱 后续如果有机会写下篇zabbix中微信报警。

以上是详解Zabbix3.0.2使用外部python脚本实现邮件报警方法的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1280
29
C# 教程
1257
24
crontab定时任务不执行的一些原因,你知道吗? crontab定时任务不执行的一些原因,你知道吗? Mar 09, 2024 am 09:49 AM

crontab定时任务不执行的一些缘由总结更新时间:2019年01月09日09:34:57作者:田野上的希望这篇文章主要给你们总结介绍了关于crontab定时任务不执行的一些缘由,对每种可能发生的诱因都给出了解决方式,对遇见这个问题的同事们具有一定的参考学习价值,须要的同学们下边随着小编来一起学习学习吧序言近来在工作中遇见了一些问题,crontab定时任务竟然不执行,后来我在网上找的时侯发觉网上主要说了这5个诱因:1crond服务未启动crontab不是Linux内核的功能,而是依赖一个cron

探秘Orange3:打开数据挖掘与机器学习新世界! 探秘Orange3:打开数据挖掘与机器学习新世界! Mar 04, 2024 pm 08:16 PM

Orange3是一个功能强大的开源数据可视化和机器学习工具,它具备丰富的数据处理、分析和建模功能,为用户提供了简单快捷的数据挖掘和机器学习解决方案。本文将简要介绍Orange3的基本功能和使用方法,同时结合实际应用场景和Python代码案例,帮助读者更好地掌握Orange3的使用技巧。Orange3的基本功能包括数据加载、数据预处理、特征选择、模型建立和评估等。用户可以利用直观的界面拖放组件,轻松构建数据流程。同时,通过Python脚本,也能完成更复杂的数据处理和建模任务。下面我们将通过一个实际

PyCharm高级教程:利用PyInstaller将代码打包为EXE格式 PyCharm高级教程:利用PyInstaller将代码打包为EXE格式 Feb 20, 2024 am 09:34 AM

PyCharm是一款功能强大的Python集成开发环境,提供了丰富的功能和工具来帮助开发者提高效率。其中,PyInstaller是一个常用的工具,可以将Python代码打包为可执行文件(EXE格式),方便在没有Python环境的机器上运行。在本篇文章中,我们将介绍如何在PyCharm中使用PyInstaller将Python代码打包为EXE格式,并提供具体的

python怎么重复字符串_python重复字符串教程 python怎么重复字符串_python重复字符串教程 Apr 02, 2024 pm 03:58 PM

1、首先打开pycharm,进入到pycharm主页。2、然后新建python脚本,右键--点击new--点击pythonfile。3、输入一段字符串,代码:s="-"。4、接着需要把字符串里面的符号重复20次,代码:s1=s*20。5、输入打印输出代码,代码:print(s1)。6、最后运行脚本,在最底部会看到我们的返回值:-就重复了20次。

pycharm怎么读取excel数据 pycharm怎么读取excel数据 Apr 03, 2024 pm 08:42 PM

如何使用PyCharm读取Excel数据?步骤如下:安装openpyxl库;导入openpyxl库;加载Excel工作簿;访问特定工作表;访问工作表中的单元格;遍历行和列。

CoreFreq:Linux下的CPU频率监控工具介绍 CoreFreq:Linux下的CPU频率监控工具介绍 Feb 21, 2024 pm 05:12 PM

CoreFreq:Linux下的CPU频率监控工具介绍在Linux系统中,对于CPU频率的监控和管理一直是一个比较重要的任务。通过监控CPU的频率,我们可以及时了解CPU的运行状态,调整频率以提高性能或降低功耗。在Linux系统中,有许多工具可以用来监控CPU频率,其中一个比较优秀的工具是CoreFreq。本文将介绍CoreFreq工具的基本功能以及如何在L

网站子域名查询工具有哪些 网站子域名查询工具有哪些 Mar 07, 2024 am 09:49 AM

网站子域名查询工具有:1、Whois Lookup:可以查询域名的注册信息,包括子域名;2、Sublist3r:可以在搜索引擎和其他工具的帮助下自动扫描域名的子域名;3、DNSdumpster:可以查询域名的子域名、IP地址和DNS记录等信息;4、Fierce:可以通过DNS服务器查询域名的子域名信息:5、Nmap;6、Recon-ng;7、Google Hacking。

Flask安装配置教程:轻松搭建PythonWeb应用的利器 Flask安装配置教程:轻松搭建PythonWeb应用的利器 Feb 20, 2024 pm 11:12 PM

Flask安装配置教程:轻松搭建PythonWeb应用的利器,需要具体代码示例引言:随着Python的日益流行,Web开发也成为了Python程序员的必备技能之一。而要进行Python的Web开发,我们需要选择合适的Web框架。在众多的PythonWeb框架中,Flask是一款简洁、易上手且灵活的框架,备受开发者们的青睐。本文将介绍Flask框架的安装、

See all articles