把zabbix图形整合至运维平台

  今天把运维平台加上图形功能,就是把zabbix的图片整合到CMDB平台;当然要是想要非常美观的显示图形的话也是不要建议这样做;参考了好几篇博客之后,自己也写篇总结文档:


主要思路是:

  1、找到zabbix图片对应的url。

  2、读取URL的所有内容生成jpg文件。

  3、遍历图片目录把图片文件返回前端js整合。


1、打开zabbix,找到图片的路径:


wKiom1fP2s6wZELDAAD6QwVTJGg398.png


http://192.168.63.216/zabbix/chart2.php?graphid=567&period=60&stime=20160907160153&updateProfile=1&profileIdx=web.screens&profileIdx2=567&width=1224&sid=0afbe713bbeb0519&screenid=&curtime=1473237848932

*我们所要获取的关键参数是

*graphid:图形IP。

*stime:开始时间;默认我们出当前时间。

*period:时间长度:以秒为单位。


2、我们需要获取的就是graphid而已,所以通过zabbix_client模块把id给获取出来,风格跟我之前写的api管理zabbix一致,大家可以自行查看:

def get_graphid(self,hostid):
    data = {
            "selectGraphs": ["graphid","name"],
            "filter": {"hostid": hostid}
         }
    ret = self.zb.host.get(**data)
    return ret[0]['graphs']


3、通过传入的graphid生成jpg图片文件,脚本:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from . import app , jsonrpc
import util
import json, traceback
import datetime
import cookielib, urllib2,urllib
class Zabbix_api():
    def __init__(self,url="http://192.168.63.216/zabbix/index.php",name="Admin",password="zabbix"):
        self.url=url
        self.name=name
        self.passwd=password
        #初始化的时候生成cookies
        cookiejar = cookielib.CookieJar()
        urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
        values = {"name":self.name,'password':self.passwd,'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="http://192.168.63.216/zabbix/chart2.php",values={'width': 800, 'height': 200, 'graphid': '564', 'stime': '20160907090409', 'period': 3600},image_dir="/tmp"):
        data=urllib.urlencode(values)
        request = urllib2.Request(url,data)
        url = self.urlOpener.open(request)
        image = url.read()
        imagename="%s/%s_%s.jpg" % (image_dir, values["graphid"], values["stime"])
        f=open(imagename,'wb')
        f.write(image)
        return '1'
if __name__ == "__main__":
    graph = Zabbix_api()
    values = {'width': 800, 'height': 200, 'graphid': '564', 'stime': '20160907090409', 'period': 3600}
    graph.GetGraph("http://192.168.63.216/zabbix/chart2.php",values,"/tmp")

4、后端程序处理,返回结果之后和前端结合吧图形加载到html即可:


js处理请求:

/*点击监控按钮,获取监控数据*/

$("tbody").on('click','.monitor-btn',function(){
    var id = $(this).attr('data-id')
    var url = "/getapi?method="+"graph"+"&id="+id
    $.getJSON(url,function(data){
      data = JSON.parse(data['result'])
      console.log(data)
      if (data['code']==0){
          var str = ''
           $.each(data.result, function(n,value){
                str +='<img src=' + value + " " + 'style="width:100%"/><br >' 
            })
          console.log(str)
          $("#graph").html(str)
          $('#monitor').modal('show')
        
      }else{
          swal("Error", data['errmsg'], "error")
      }
    })
})


5、html页面:


<!--监控查看 -->

<div id="monitor"  class="modal fade text-center">
 <div class="modal-dialog" style="display: inline-block; width: 60%;">
    <div  class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title">监控查看</h4>
          </div><!--modal-header end-->
      <div class="modal-body">
      <p hidden id="errorMsg" class="text-danger" style="color:red">监控查看</p> <!-- foe error msg-->
        <form class="form-horizontal" id="ChangePasswdForm">
        <input id="passwdid" type="hidden"  name="passwdid">  <!--update need id-->
        <div class="form-group">
                 <div class="col-sm-10" id="graph">
                </div>
        </div>
        <div class="form-group">
                <div class="modal-footer">
                                <button class="btn btn-warning" data-dismiss="modal">退出</button>
                </div>
      </div><!--button end-->
     </form>
   </div><!-- /.modal-body-->
   </div><!-- /.modal-content -->
  </div><!-- /.modal-dialog -->
</div><!-- /.modal -->


6、生成效果,在CMDB点击监控时候跳出相关监控图形方便查看:


wKioL1fP3SXxOqS5AAFM1cZudd0780.png


或者也有运维工程师习惯把生成的图片用html的方式发送发送到邮箱也是可以数显的,主要是图片已经生成后续的操作也非常简单了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程目标     全面理解和掌握 Zabbix 监控系统的架构及运行原理,搭建和管理各种规模的Zabbix监控系统 课程简介         Zabbix是一个开源的企业级的监控解决方案。通过Zabbix可以监控IT基础设施的方方面面,包括硬件、操作系统、网络、虚拟化层、中间件和各种业务应用系统。用Zabbix几乎可以监控你想监控的任意数据。              本课程从Zabbix的介绍、安装开始,一步步带你深入Zabbix,通过学习你会:         1、掌握Zabbix各个组件的配置和管理。         2、掌握不同监控项的类型和配置方法,根据监控需求灵活配置监控项。         3、掌握网络发现、低级发现和主动式agent自动注册,实现自动化监控。         4、掌握模版、宏变量、触发器和告警通知的配置和高级的应用方法。         5、掌握图形、屏幕、拓扑图和仪表盘等数据可视化的方法,利用大屏可以实时的展示监控数据。         6、掌握Zabbix系统自身的维护、备份、升级、排障以及性能优化。         7、掌握Zabbix内部运行机制和Zabbix使用技巧,让zabbix更好的帮助你实现监控目标。                  本课程中还包含很多操作演示,比如像创建主机,创建监控项、触发器、图形、全局事件关联等,也介绍了微信和钉钉告警的配置方法。当你对Zabbix深入了解之后,面对层出不穷的新业务、新应用,你都能轻松自如的制定和提供相应的监控解决方案。 特别提示:官网的中文文档有些地方翻译的有问题,一定要以英文文档为准。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值