zabbix 报告生成

#!/usr/bin/env python
#date 2013.5.9
#author finy
#Grab zabbix kind of generation, and generate a report
import re,urllib,urllib2,cookielib,os
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
zabbix='http://localhost'     #zabbix website url
sender='[email protected]'           #sender
receiver='[email protected]'       #receiver
smtpserver='mail.163.com'          #smtp server
smtpusername='appsend'                   #smtp user password
smtppassword='password'          #smtp username
cycle='43200'                #repost cycle,unit for seconds
date=int(os.popen('date +%Y%m%d%H%M%S').read())  #date generate
imagedir='/usr/local/zabbix_data'        #save images directory
zabbixuser='admin'           #zabbix username
zabbixpassword='explort'         #zabbix login password
post_data = urllib.urlencode({"autologin":"1","enter":"Sign in","name":"%s"%zabbixuser,"password":"%s"%zabbixpassword})             #web POST submit
def slogin(loginurl):                   #obtaining cookie
req = urllib2.Request(loginurl,post_data)
_response = urllib2.urlopen(req)
for i in str(_response.info()).split('\n'):
if 'Set-Cookie' in i:
sid = i.split("=")[1].split(";")[0][16:]
break
_d=_response.read()
return _d,sid
def pro():                            #Open the zabbix website,login zabbix
post_data=""
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0')]
urllib2.install_opener(opener)
url = "http://%s/zabbix" % zabbix
global sid,login
login,sid = slogin("%s/index.php" % zabbix)
def sendmail():                     #get the url and download the images and sendmail,Using HTML format.
imgda={"cpu":"%s/chart2.php?graphid=1004&period=%s&stime=%s&updateProfile=1&sid=%s&width=800"%(zabbix,cycle,date,sid),
"mem":"%s/chart2.php?graphid=1005&period=%s&stime=%s&updateProfile=1&sid=%s&width=800"%(zabbix,cycle,date,sid),
"java":"%s/chart2.php?graphid=1007&period=%s&stime=%s&updateProfile=1&sid=%s&width=800"%(zabbix,cycle,date,sid),
"mysql":"%s/chart2.php?graphid=1008&period=%s&stime=%s&updateProfile=1&sid=%s&width=800"%(zabbix,cycle,date,sid),
"load":"%s/chart2.php?graphid=1009&period=%s&stime=%s&updateProfile=1&sid=%s&width=800"%(zabbix,cycle,date,sid),
"net":"%s/chart2.php?graphid=1010&period=%s&stime=%s&updateProfile=1&sid=%s&width=800"%(zabbix,cycle,date,sid)}
os.popen('if [ ! -d %s ];then mkdir -p %s ;fi'%(imagedir,imagedir))
os.chdir(imagedir)
for key in imgda.keys():
filename=open(key+'.png','w')
filename.write(urllib2.urlopen(imgda[key]).read())
filename.close()
ic=os.popen('ls  *.png').read()
ic2=[]
for ii in imgda.keys():
ic2.append(ii+'.png')
msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = 'zabbix  report'
msgText = MIMEText('<h1>Cpu Use</h1><br><img src="cid:image5"><br><h1>Men Use</h1><br><img src="cid:image2"><br><h1>load average</h1><br><img src="cid:image0"><br><h1>network I/O</h1><br><img src="cid:image4"><br><h1>mysql status</h1><br><img src="cid:image3"><h1>java running</h1><br><img src="cid:image1"></html>','html','utl8')
msgRoot.attach(msgText)
for ii in range(len(imgda.keys())):
fp=open(ic2[ii],'rb')
images=MIMEImage(fp.read())
fp.close()
images.add_header('Content-ID', '<image%s>'%ii)
msgRoot.attach(images)
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(smtpusername,smtppassword)
smtp.sendmail(sender, receiver, msgRoot.as_string())
smtp.quit()
if __name__ == '__main__':
pro()
sendmail()

 

效果图 查看附件。

imgda 字典是网页登陆zabbix,然后按F12里,resource--chart2.php--的资源。

附件下载此脚本,上面的空格都没有了吧下载的保存.py格式就可以了

最新版在这里:https://github.com/Finyy/zabbix-graphical-reports

你可能感兴趣的:(zabbix)