zabbix自动截图留档_python版

文章目录

[隐藏]

  • 一、背景
  • 二、写个小脚本
    • 2.1 获取图片url
    • 2.2 脚步及测试
一、背景

每个DB Server都有zabbix监控,除了异常情况的报警信息外,也会在日检、周检、月检等工作中用到zabbix的监控数据,对zabbix监控数据会做两种处理:1 数据分析(环比分析、最大值、最小值及平均值分析);2 主要检测项目折线图留档(为啥需要留档呢,因为zabbix监控过多服务器,监控数据仅保留半年到1年间)。

关于 数据分析类的,已嵌入 日检邮件报告跟 月度报告 中,而 zabbix 监控图留档 一直没实现自动化,每个月都是人工取截图。刚好最近遇到 国庆db报告跟9月数据库报告,需要各种截图留档,然后触发了写个小脚本来自动下载 zabbix的监控图。

二、写个小脚本

2.1 获取图片url

首先打开日常的zabbix监控图页面,点击 F12,然后点击,这个时候选中页面中的折线图,就可以看到 对应的HTML代码,最后点击对应的html代码右键 copy下图片的链接地址,即可知道 zabbix的监控图 的url。

根据获取的url如下:

http://company.moniter.com/chart.php?period=2592000&stime=20170901000000&itemids%5B0%5D=32571&type=0&updateProfile=1&profileIdx=web.item.graph&profileIdx2=32571&>2.2 脚步及测试

小脚本实现的功能是:根据批量的itemid,自动下载图片到本地目录,并且重命名图片名称。

代码实现如下:

# -*- coding: utf-8 -*-  __author__ = 'xinysu'  __date__ = '2017/10/12 14:38'  import sys  import datetime  import http.cookiejar, urllib.request, urllib  from lxml import etree  import requests  class ZabbixChart(object):      def __init__(self, name, password):          url="http://company.monitor.com/index.php";          self.url = url          self.name = name          self.password = password          cookiejar = http.cookiejar.CookieJar()          urlOpener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookiejar))          values = {"name": self.name, 'password': self.password, 'autologin': 1, "enter": 'Sign in'}          data = urllib.parse.urlencode(values).encode(encoding='UTF8')          request = urllib.request.Request(url, data)          try:              urlOpener.open(request, timeout=10)              self.urlOpener = urlOpener          except urllib.request.HTTPError as e:              print(e)      def download_chart(self, image_dir,itemids,stime,etime):          # 此url是获取图片是的,请注意饼图的URL 和此URL不一样,请仔细观察!          url="http://company.monitor.com/chart.php";          # 折线图的大小          url_par={}          url_par={"width":1778, "height":300,"itemids":itemids}          # 开始日期、结束日期从str转换为datetime          stime = datetime.datetime.strptime(stime, "%Y-%m-%d")          etime=datetime.datetime.strptime(etime, "%Y-%m-%d")          # 计算period          diff_sec = etime - stime          period = diff_sec.days*24*3600 + diff_sec.seconds          url_par["period"] = period          # stime转换str          stime = stime.strftime('%Y%m%d%H%M%S')          url_par["stime"] = stime          key = url_par.keys()          data = urllib.parse.urlencode(url_par).encode(encoding='UTF8')          request = urllib.request.Request(url, data)          url = self.urlOpener.open(request)          image = url.read()          html = requests.get('http://company.monitor.com/history.php?action=showgraph&itemids[]={}'.format(itemids)).text          page = etree.HTML(html)          hostname_itemname = page.xpath('//div[@]/h4/text()')[0].split(':')          hostname = hostname_itemname[0]          hostname_itemname.pop(0)          itemname = '_'.join(hostname_itemname).replace('/','_')          imagename = "{}{}_{}_{}_({}).png".format(image_dir,hostname,stime,etime.strftime('%Y%m%d%H%M%S'),itemname)          f = open(imagename, 'wb')          f.write(image)  

根据写好的类,输入zabbix的登录帐号、监控图的起始跟结束时间、本地存放图片目录、itemid的list,运行后如下:

# 登陆URL  username = "xinysu"  password = "passwd"    # 图片的参数,该字典至少传入graphid  stime = "2017-09-01"  etime = "2017-10-01"    # 用于图片存放的目录  image_dir = "E:\03 WORK\03 work_sql\201709"    #运行  b = ZabbixChart(username, password)  item_list =(35295,35328,38080,37992,38102,38014,35059,35022,42765,35024,35028,35035,35036,35044,35045,35046,35047,38248,36369,36370,36371,36372)  for i in item_list:      itemids = i      b.download_chart(image_dir,itemids,stime,etime)  

随便输入的itemid 测试下载,实际需要根据监控需要过滤itemid,下载后在文件夹中显示如下:

原文出处:cnblogs -> http://www.cnblogs.com/xinysu/p/7722303.html

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。