设为首页 收藏本站
查看: 1184|回复: 0

[经验分享] 抽取Zabbix的图形整合到自己后台

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-31 08:58:18 | 显示全部楼层 |阅读模式
大家应该都知道Zabbix的图是可以通过接口获取出来的,例如CPU性能图
wKiom1W56TuCDMpmAAYyvU0cZ8I257.jpg
把这图拖到新窗口可以看到这张图的地址:http://xxxxx.xxxx.com/chart2.php ... rtime=1438247260802
参数多得很,其实很多对我都没啥用的,精简一下可以裁剪成:http://xxxxx.xxxx.com/chart2.php ... 3600&width=1772,其中参数意义:
graphid:这个是Zabbix的图形ID,下面再说怎么获取出来
period:这个是时间,以秒为单为,3600是指获取1个小时内的数据
width:这个就是图片的宽度
我只需要知道这三个参数,我就能把我想要的图形数据获取出来,嵌入到自己的后台中了。

graphid的查询方法:
1、先通用ip在hosts表中查出对应的hostid
wKioL1W57gfz2MdqAACtDuRbRGQ360.jpg
2、根据hostid在items表里查找到对应监控项的itemid,倒如我要看流量图,可以查到net.if.in[eth0]的itemid是395636
wKiom1W57BfiIAXuAAQLi4BL4f0364.jpg
3、通过上面查找出来的itemid在graphs_items表里,可以找到graphid,这个ID就是生成图形的ID
wKioL1W57geB0UqIAAHJZJAvTB8135.jpg
利用这个graphid组合一下上面的URL:http://xxxxx.xxxx.com/chart2.php ... 3600&width=1772,就能拿到图形
wKiom1W57Nzw8tquAASvTSTk9Tg456.jpg
接下来就是嵌入到自己的后台里面去,业务代码都是很少,主要还是用jquery就OK了:
模板:我这里是用bootstrap的模拟框弹出展示,这是模拟框的代码
wKioL1W572PzfeRQAARXCcs0lP8159.jpg
jquery代码:通过点击按钮弹出上面的模拟框,把URL填入四个img里面
wKioL1W58AuTyBx_AAKXhXQQZno548.jpg
ajax是通过异步获取我要生成图形的graphid,/yunwei/api/getgraphid/xxx/ 返回来的东西就是一个列表:[30308, 33636, 30310, 30305]

后端是django,view代码很简单:
urls.py:

1
url(r'^api/getgraphid/(\d+)/$',                         GetGrapidAPIView.as_view(),),



views.py:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class GetGrapidAPIView(View):

    def get(self, request, hostid):
        try:
            hostinfo = GameHost.objects.using('res').get(id=hostid)
            if hostinfo.platid == 34:
                hostip = hostinfo.ip2
            else:
                hostip = hostinfo.ip1
            print "hostip: %s" % hostip

            ret = []
            for key in ['system.cpu.util[,idle]', 'net.if.in[eth0]|net.if.in[em1]', 'vm.memory.size[available]', 'icmpping']:
                if '|' in key:
                    key1, key2 = key.split('|')
                    #获取itemid:
                    itemid = Items.objects.using('zab').get(Q(key_field=key1)|Q(key_field=key2), hostid__host=hostip).itemid         
                else:
                    #获取itemid:
                    itemid = Items.objects.using('zab').get(key_field=key, hostid__host=hostip).itemid
                print "itemid: %s" % itemid
                graphitems = GraphsItems.objects.using('zab').filter(itemid=itemid)[0]
                graphid = graphitems.graphid.graphid
                print "graphid: %s" % graphid
                ret.append(graphid)
        except Exception,e:
            print e
            ret = []
        return HttpResponse(json.dumps(ret))




最后出来的结果:
wKioL1W58b7TBsGEAAd7CZOqByQ091.jpg 这样做有个致命的缺点,就是浏览器需要登陆过zabbix才能看得到图形,不过我们也是运维自己看看,问题不大,方便自己而已~


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-92517-1-1.html 上篇帖子: 网管员都应该知道在拓扑图上的IT实时运行状态 下篇帖子: Zabbix 监控服务器配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表