iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >zabbix实现Python邮件报警
  • 206
分享到

zabbix实现Python邮件报警

邮件zabbixPython 2023-01-31 06:01:16 206人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

zabbix是个非常强大的监控工具,可以监控linux和windows的服务器数据,也可以通过自定义key来扩展默认的监控项,但是自带的邮件报警提供的信息却不太友善。本文想通过自定脚本的方式,实现在报警邮件的同时发送对应的图像和url连接。

zabbix是个非常强大的监控工具,可以监控linuxwindows服务器数据,也可以通过自定义key来扩展默认的监控项,但是自带的邮件报警提供的信息却不太友善。本文想通过自定脚本的方式,实现在报警邮件的同时发送对应的图像和url连接。

步骤如下:

  1. 创建一个脚本媒体报警:修改zabbix脚本报警配置路径:AlertScritpPath为存放脚本的路径

  2. ### Option: AlertScriptsPath
    # AlertScriptsPath=${datadir}/zabbix/alertscripts
    #AlertScriptsPath=/usr/lib/zabbix/alertscripts
    AlertScriptsPath=/etc/zabbix/alert
  3. 点击创建媒体类型,并关联默认动作报警

    wKioL1QRF4ig1tVhAALOZnV-xPk727.jpg

    wKiom1QRFy-T_AU1AAE0v3PRQRA480.jpg

  4. 为用户启用报警脚本

    wKioL1QRGpyjsqb0AALCzCHpM_g276.jpg

  5. 修改第一步关联的报警动作,让其使用脚步发送报警,注意修改仅发送到的报警方式,还要修改报警的触发模版中带上Itemid这个参数(为脚本报警提供参数)

    wKiom1QRG9STM-_ZAAI8ClOoF1U093.jpg

    wKiom1QRG-jBTfrEAAKknSc_fgI962.jpg

    wKioL1QRHfyS1uB1AANq42qxq9E862.jpg

  6. 最后,准备工作都已完成,将python脚本上传到第1步的路径中即可,此脚本的思路是通过动作报警中的itmeid去获取监控项的item值,并通过history.PHP获取图形,并提供url连接

    将下面脚本中#注意修改下面的zabbix地址 修改到你实际的zabbix server地址哦!

    #注意修改日志路径 修改到你实际日志的路径


#! /usr/bin/Python
# -*- coding: utf-8 -*-
import sys,os,re,smtplib,mimetypes,pycurl,JSON,urllib,StringIO,time,traceback
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.p_w_picpath import MIMEImage
leng=len(sys.argv)
def log4py(logpath,logtxt):
   f=open(logpath,'a')
   logtime=time.strftime('%Y%m%d%H%M%S',time.localtime())
   f.writelines(logtime+":")
   f.writelines(logtxt)
   f.writelines('\n')
   f.close()
def printmlinestr(mlinestr):
   d=mlinestr.splitlines()
   res=""
   for i in d:
      i="<br>"+i+"</br>"
      res+=i+'\n'
   return res
#getvalue 通过正则表达式获取对应itemID
def getvalue(string,rexp):
    r=re.compile(rexp,re.M)
    #r=re.compile("^ITEMID:[0-9]*",re.M)
    log4py(logpath,'method getvalue')
    log4py(logpath,'string')
    log4py(logpath,string)
    #for i in string:
    d=r.findall(string)
    log4py (logpath,'rexp:')
    log4py (logpath,rexp)
    str1=d[0] 
    log4py(logpath, 'rexresult:')
    log4py(logpath,str1)
    print str1
   # arrstr=str.split("\xa3\xba")
    arrstr=str1.split(":")
    result=arrstr[1]
    log4py(logpath,'result:')
    log4py(logpath,result)
    log4py(logpath,'end method getvalue')
    return result
#getpic 获取报警图片,写入文件
def getpic(itemid):
        log4py(logpath,'method getpic')
   # try:   
        c = pycurl.Curl()
        pathroot='/etc/zabbix/alert/'
        #path='c:/alert.png'
        #head='Content-Type:application/json'
        global stime
        endtime=time.strftime('%Y%m%d%H%M%S',time.localtime())
        tmptime=int(endtime)-10000
        stime = repr(tmptime)
        post_data_dic={"itemid":itemid,"period":"3600","stime":stime}
picpath=(pathroot)+(stime)+(itemid)+'.png'
print 'picpath:'+picpath
        str=file(picpath,'wb')
        #注意修改下面的zabbix地址
        c.setopt(pycurl.URL, "Http://10.1.1.67/zabbix/chart.php")
        c.setopt(pycurl.WRITEFUNCTION, str.write)
        c.setopt(pycurl.FOLLOWLOCATION, 1)
        #c.setopt(pycurl.HEADER, True)
        c.setopt(c.POSTFIELDS,urllib.urlencode(post_data_dic))
        c.perfORM()
        log4py(logpath,'end method getpic')
return picpath
   # except Exception,e:
   #     f.writelines('expforgetpic:\n')
   #     f.writelines(e)
def SendMail(receivers,subject,data,picpath,itemid):
    msg = MIMEMultipart()
    msg['From'] = "zbx@huazhu.com"
    #msg['To'] = "zgyan@huazhu.com"
    receives=receivers
    msg['To'] = receivers
    msg['Subject'] = subject
    body=printmlinestr(data)
    file1 = picpath
    p_w_picpath = MIMEImage(open(file1,'rb').read())
    p_w_picpath.add_header('Content-ID','<p_w_picpath1>')
    msg.attach(p_w_picpath)
    #print txt
    #print 'txt end'
    #print type (txt)
    #注意修改下面的zabbix地址
    url=" 
    #msg.attach(txt)
    html =  """ 
    <html> 
      <body>
    """
    html+=body   
    html+="<br><img src=cid:p_w_picpath1></br>"
    html+="<p><a href="+url+">URLLINK</a></p>"
    
    html+="""     
        </body> 
    </html>
    """
    htm = MIMEText(html,'html','gb2312')
    msg.attach(htm)
    server = smtplib.SMTP()
    server.connect('mail.huazhu.com')
    #server.login('htinns\qinlaw','~liuqing0530')
    #server.sendmail(msg['From'],msg['To'],msg.as_string())
    server.sendmail(msg['From'],receives,msg.as_string())
    server.quit()
#if __name__ == "__main__":
   
#def main
#获取zbx的传入参数 ,参数1-收件人地址,参数2-邮件主题,参数3-报警内容
#注意修改日志路径
global logpath
logpath='/etc/zabbix/alert/ts.log'
log4py(logpath,"--------------------------startx")
rece=sys.argv[1]
subject=sys.argv[2]
data=sys.argv[3]
#picpath='c:/alert.png'
#picpath='/etc/zabbix/alert/alert.png'
#\xa3\xba代表中文的冒号
#以后要加上异常处理,如果没有找到ID或者图片
#itemid=getvalue(data,"^ITEMID\xa3\xba[0-9]*")
#itemid=getvalue(data,"^ITEMID:[0-9]*)
#f.writelines(data)
try:
   itemid=getvalue(data,"ITEMID:[0-9]*")
   picpath= getpic(itemid)
   SendMail(rece,subject,data,picpath,itemid)
   os.remove(picpath)
except Exception,e:
   log4py(logpath,e)
   #os.system('echo $3|mail -s $2 $1 ')
   shellcmd='echo '+data+'|mail -s '+subject+' '+rece
   print shellcmd 
   os.system(shellcmd)
log4py(logpath,"--------------------------end")


补上效果图:

wKioL1QRH_rTIN1VAAOVFEhlAto285.jpg

    

--结束END--

本文标题: zabbix实现Python邮件报警

本文链接: https://www.lsjlt.com/news/189653.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • zabbix实现Python邮件报警
    zabbix是个非常强大的监控工具,可以监控linux和windows的服务器数据,也可以通过自定义key来扩展默认的监控项,但是自带的邮件报警提供的信息却不太友善。本文想通过自定脚本的方式,实现在报警邮件的同时发送对应的图像和url连接。...
    99+
    2023-01-31
    邮件 zabbix Python
  • zabbix邮件报警python脚本
    下面是两个不同的python脚本,只是连接邮件服务器的方法不同,其他方法还是相同的#!/usr/bin/env python #-*- coding: UTF-8 -*- import smtplib import sys from em...
    99+
    2023-01-31
    脚本 邮件 zabbix
  • 通过python为ZABBIX发告警邮件
    最近部署ZABBIX的邮件告警时,用刚学的python来写告警邮件脚本。python代码如下 #!/usr/bin/python #coding:utf-8 import smtplib from email.mime.text impor...
    99+
    2023-01-31
    邮件 python ZABBIX
  • zabbix邮件报警常见问题有哪些
    本篇内容主要讲解“zabbix邮件报警常见问题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“zabbix邮件报警常见问题有哪些”吧!使用163邮箱mailx配置文件里的set smtp-a...
    99+
    2023-06-04
  • 如何搭建zabbix监控及邮件报警
    这篇文章主要介绍“如何搭建zabbix监控及邮件报警”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何搭建zabbix监控及邮件报警”文章能帮助大家解决问题。一、zabbix1.1 简介zabbix...
    99+
    2023-07-02
  • Grafana邮件报警
    报警是Grafana的一项革命性功能,它让Grafana从一个数据可视化工具变成一个真正的任务监控工具。报警规则可以使用现有的图表控制面板设置,阈值可以通过拖拉右边的线控制,非常简单。Grafana服务器会不断评估设置的规则,在规则条件符合...
    99+
    2023-01-31
    邮件 Grafana
  • CentOS7.8是如何通过QQ邮箱实现邮件报警
    CentOS7.8是如何通过QQ邮箱实现邮件报警,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为了实现服务得高可用性,可以使用电子邮件通知服务,当出现问题时能够实现邮件报警从而...
    99+
    2023-06-28
  • 如何实现脚本SSH登录邮件报警
    本篇内容主要讲解“如何实现脚本SSH登录邮件报警”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现脚本SSH登录邮件报警”吧!登录保护是一个非常重要的环节,下面通过图文并茂的方式给大家详细讲...
    99+
    2023-06-09
  • zabbix用python发送邮件
    !/usr/bin/pythoncoding: utf-8import smtplibimport sysfrom email.mime.text import MIMEText_user = "12345678@qq.com"_pwd ...
    99+
    2023-01-31
    发送邮件 zabbix python
  • python之钉钉机器人zabbix报警
    首先在钉钉群聊里添加一个自定义的机器人并复制webhook的内容https://oapi.dingtalk.com/robot/sendaccess_token=37e23308d1b84eb4ac34566e03c4c4e74b7eede...
    99+
    2023-01-31
    机器人 python zabbix
  • python监控日志中的报错并进行邮件报警怎么实现
    今天小编给大家分享一下python监控日志中的报错并进行邮件报警怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。实现思...
    99+
    2023-07-02
  • SpringBoot应用监控带邮件警报的实现示例
    目录1.actor(client)2.admin(server)3.测试1.actor(client) 1.1 pom.xml <xml version="1.0" encod...
    99+
    2024-04-02
  • python监控日志中的报错并进行邮件报警
    目录前言实现思路实现代码前言 在测试过程中,注意力往往都在功能上,如果功能正常,是基本不会查看日志的,反之会查看日志定位问题。但是表面上的功能正常不能确保日志没有报错,不能确保其他功...
    99+
    2024-04-02
  • oracle数据库自动发邮件怎么实现报警功能
    这篇文章主要介绍“oracle数据库自动发邮件怎么实现报警功能”,在日常操作中,相信很多人在oracle数据库自动发邮件怎么实现报警功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • 如何实现告警的邮件通知方式?
    如何在睿象云智能告警平台Cloud Alert中快速实现邮件告警?只需要3个步骤就可以快速实现告警的邮件通知方式: 集成告警 设置分派策略 设置通知策略集成告警:主要是将您的告警平台对接到 Cloud Aler...
    99+
    2023-06-04
  • 如何解析MySQL prometheus邮件报警配置
    这篇文章给大家介绍prometheus如何配置MySQL邮件报警,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。这里介绍一下prometheus的邮件报警配置。alertmanager下...
    99+
    2024-04-02
  • Python实现邮件发送
    使用smtplib模块发送邮件,它对smtp协议进行了简单的封装。smtp协议的基本命令包括:    HELO 向服务器标识用户身份    MAIL 初始化邮件传输 mail from:    RCPT 标识单个的邮件接收人;常在MAIL命...
    99+
    2023-01-31
    邮件发送 Python
  • python实现发邮件(sendmail
    #!/usr/bin/python#-*-coding:utf-8-*- #-*-coding:utf-8-*-#filename :sendmail.pyimport sys import smtplibfrom email.mime.t...
    99+
    2023-01-31
    发邮件 python sendmail
  • python实现QQ邮箱群发邮件实例
    目录一,登录邮箱,获取授权码二,替换参数总结一,登录邮箱,获取授权码 二,替换参数 给多人发送邮箱,我只是做了个循环,把每个人得授权码循环输入了。把授权码和邮箱替换成自己得就行,...
    99+
    2024-04-02
  • 用Python实现群发邮件
    目录群发邮件登录邮箱设置邮件信息及正文文本设置附件发送邮件并关闭邮箱服务项目总结完整代码: 我们需要将【小组销量排名表.xlsx】通过邮件发送给【组长邮箱.xlsx】中的各个组长。 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作