Zabbix3.2监控charts图形自动发送邮件

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import MySQLdb
import datetime
import cookielib, urllib2,urllib
import smtplib
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

#发送邮件配置:
receiver = '10880347@qq.com'
#Subject = 'zabbix服务器监控网卡流量情况'
Subject =Header('zabbix服务器监控网卡流量情况', 'utf-8')
smtpserver = 'mail.qq.com'
mail_username = '10880347@qq.com'
mail_password = '**********'
#查找zabbix的Hostname
HostName = "172.16.8.200"
#查找图像名称
GraphsName = "Network traffice"
#此url是获取图片是的,请注意饼图的URL 和此URL不一样,请仔细观察!
gr_url="http://172.16.8.200/zabbix/chart2.php"
#登陆URL
indexURL="http://172.16.8.200/zabbix/index.php"
username="zabbix"
password="*****"
#用于图片存放的目录
image_dir="/tmp/zabbix"

class ReportForm:
    def getGraphID(self,HostName,GraphsName):
        graphid = 18287
        return graphid
 
class ZabbixGraph(object):
    def __init__(self,url,name,password):
        self.url=url
        self.name=name
        self.password=password
		#初始化的时候生成cookies
        cookiejar = cookielib.CookieJar()
        urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
        values = {"name":self.name,'password':self.password,'autologin':1,"enter":'Sign in'}
        data = urllib.urlencode(values)
        request = urllib2.Request(url, data)
        try:
            urlOpener.open(request,timeout=10)
            self.urlOpener=urlOpener
        except urllib2.HTTPError, e:
            print e
    def GetGraph(self,url,values,image_dir):
        data=urllib.urlencode(values)
        request = urllib2.Request(url,data)
        url = self.urlOpener.open(request)
        image = url.read()
        imagename="%s/%s_%s.png" % (image_dir, values["graphid"], values["stime"])
        f=open(imagename,'wb')
        f.write(image)
 
    def SendMail(self,receiver,Subject,smtpserver,mail_username,mail_password,values,image_dir,HostName,GraphsName):
        msgRoot = MIMEMultipart('related')
        msgRoot['Subject'] = Subject
        msgRoot['From'] = ("%s<10880347@qq.com>")%(Header('XXXXzabbix_charts图表','utf-8'),)
        sendText='<b>服务器IP: <i>"%s"</i></b>   提取的图像名称为<b>"%s"</b><br><img src="cid:image1"><br>XXXXzabbix监控告警,有问题请及时沟通!' % (HostName,GraphsName)
        msgText = MIMEText(sendText,'html','utf-8')
        msgRoot.attach(msgText)
        sendpng="%s/%s_%s.png" % (image_dir, values["graphid"], values["stime"])
        fp = open(sendpng, 'rb')
        msgImage = MIMEImage(fp.read())
        fp.close()
        msgImage.add_header('Content-ID', '<image1>')
        msgRoot.attach(msgImage)
        smtp = smtplib.SMTP()
		smtp.connect(smtpserver)
        smtp.login(mail_username, mail_password)
        smtp.sendmail(mail_username, receiver, msgRoot.as_string())
        smtp.quit()
 
if __name__ == "__main__":
    Report = ReportForm()
    get_graphid=Report.getGraphID(HostName,GraphsName)
    #图片的参数,该字典至少传入graphid。
    stime=datetime.datetime.now().strftime('%Y%m%d%H%M%S')
    values={"graphid":get_graphid,"stime":stime,"period":86400,"width":1300,"height":300}
    ZabbixG=ZabbixGraph(indexURL,username,password)
    ZabbixG.GetGraph(gr_url,values,image_dir)
    ZabbixG.SendMail(receiver,Subject,smtpserver,mail_username,mail_password,values,image_dir,HostName,GraphsName)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值