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='appsend@163.com' #sender
receiver='exp@163.com' #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("=").split(";")
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).read())
filename.close()
ic=os.popen('ls*.png').read()
ic2=[]
for ii in imgda.keys():
ic2.append(ii+'.png')
msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = 'zabbixreport'
msgText = MIMEText('Cpu UseMen Useload averagenetwork I/Omysql statusjava running','html','utl8')
msgRoot.attach(msgText)
for ii in range(len(imgda.keys())):
fp=open(ic2,'rb')
images=MIMEImage(fp.read())
fp.close()
images.add_header('Content-ID', ''%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
附件:http://down.运维网.com/data/2362805
页:
[1]