把zabbix图形整合至运维平台
龙果运维平台开源项目地址:
https://github.com/roncoo/roncoo-cmdb
龙果运维平台安装使用视频教程:
http://www.roncoo.com/course/view/a2d58fe08172447696412fb7af1de620
今天把运维平台加上图形功能,就是把zabbix的图片整合到CMDB平台;当然要是想要非常美观的显示图形的话也是不要建议这样做;参考了好几篇博客之后,自己也写篇总结文档:
主要思路是:
1、找到zabbix图片对应的url。
2、读取URL的所有内容生成jpg文件。
3、遍历图片目录把图片文件返回前端js整合。
1、打开zabbix,找到图片的路径:
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=\'#\'" /><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">×</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点击监控时候跳出相关监控图形方便查看:
或者也有运维工程师习惯把生成的图片用html的方式发送发送到邮箱也是可以数显的,主要是图片已经生成后续的操作也非常简单了。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Spring Boot基础教程5-日志配置-logback和log4j2
Spring Boot基础教程1-Spring Tool Suite工具的安装 Spring Boot基础教程2-RESTful API简单项目的快速搭建 Spring Boot基础教程3-配置文件详解:Properties和YAML Spring Boot基础教程4-配置文件-多环境配置 Spring Boot基础教程5-日志配置-logback和log4j2 视频教程:http://www.roncoo.com/course/view/c99516ea604d4053908c1768d6deee3d 源码地址:https://github.com/roncoo/spring-boot-demo 支持日志框架:Java Util Logging, Log4J2 and Logback,默认是使用logback 配置方式:默认配置文件配置和引用外部配置文件配置 一、 默认配置文件配置(不建议使用:不够灵活,对log4j2等不够友好) # 日志文件名,比如:roncoo.log,或者是 /var/log/roncoo.log logging.file=roncoo.log # 日志级别配...
- 下一篇
为什么要用分布式集群任务调度?
作为一个开发者,避免不了定时任务的问题,最粗暴和简单直接的解决方案就是crontab。当然在机器少,任务不多,定时任务之间关联少的情况下,crontab效率还是比较高和便捷的。但当机器越多、定时任务越多,各个任务联系越紧密的情况下,用crontab进行定时任务的管理配置,就会非常混乱,严重影响工作效率。 机器多、定时任务多的情况下,就会遇到以下问题: 1、每个服务器各个用户下的crontab任务管理混乱,生命周期无法统一协调管理 2、定时任务运行异常告警难以统一对接 3、任务A和任务B如果存在互斥关系,crontab很难进行互斥处理 4、随着时间增长,当定时任务达到几千上万的时候,定时任务就非常难以管理,线上跑了多个定时任务,每个定时任务什么时候运行,属于哪个应用和哪个开发负责等等问题变得很难解决。 Linux原生Crontab调度系统和Quartz对比: 1、执行粒度方面: Crontab:进程调度 Quartz:线程调度 线程调度优势:一是更节省资源,二是可以在进程内做数据交换,做数据交换这点很重要。 2、平台依赖性: Crontab支持Linux系统 Quartz由于是Java实...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果