利用Django在前端展示Oracle 状态趋势

2017-12-15 Python 宅必备

开发环境

操作系统:CentOS 7.4

Python版本 :3.6

Django版本: 1.10.5

操作系统用户:oms

数据处理:pandas

前端展示:highcharts

通过上面我们已介绍了如何定时获取系统Oracle状态语句以及如何利用pandas处理成highcharts识别的格式

这节讲如何让其在前端显示

建立页面的步骤

我们还是通过这张图的步骤来说明如何建立页面

1. urls.py页面

from django.conf.urls import url, include

from monitor import views

urlpatterns = [

url(r'^$', views.index, name='index'),

url(r'^oracle_command/$',views.oracle_command, name='oracle_command'),

url(r'^commandresult/$',views.commandresult, name='commandresult'),

url(r'^oracle_status$',views.oracle_status, name='oracle_status'),

url(r'^oracle_performance$',views.oracle_performance, name='oracle_performance'),

url(r'^performance$',views.performance, name='performance'),

url(r'^oracle_topevent$',views.oracle_topevent, name='oracle_topevent'),

url(r'^check_topsql$',views.check_topsql, name='check_topsql'),

url(r'^addbaseline$',views.addbaseline, name='addbaseline'),

url(r'^check_hitratio$',views.check_hitratio, name='check_hitratio'),

url(r'^linux_list$',views.linux_list, name='linux_list'),

]

oracle_performance分别为系统状态趋势的页面(以天为单位)

performance分别为系统状态趋势的页面(以小时为单位)

2. views.py

这里以oracle_performance函数做例子讲解

def oracle_performance(request):

baseline=[]

ip=[]

ip1=oraclelist.objects.all().order_by('ipaddress')

for i in ip1:

ip.append(i.ipaddress+':'+i.tnsname)

if request.method == 'POST': # If the form has been submitted...

#return HttpResponse('ss')

form = charts_oracle_performance(request.POST) # A form bound to the POST data

if form.is_valid(): # All validation rules pass

starttime1 = request.POST['starttime']

endtime1 = request.POST['endtime']

performance_type= form.cleaned_data['performance_type']

ipaddress_tnsname_list=form.cleaned_data['ipaddress']

interval=request.POST['interval']

if starttime1 =='' or endtime1 =='':

return HttpResponse('Please give the Start and End time')

else:

starttime=int(str(time.mktime(time.strptime(starttime1,'%Y%m%d'))).split('.')[0])

endtime=int(str(time.mktime(time.strptime(endtime1,'%Y%m%d'))).split('.')[0])

if starttime>endtime:

return HttpResponse('The Start time must larger than the End time')

#starttime=int(str(time.mktime(time.strptime(starttime1,'%Y%m%d %H:%M:%S'))))

#endtime=int(str(time.mktime(time.strptime(endtime1,'%Y%m%d %H:%M:%S'))))

else:

title='Oracle Performance '+'-'+performance_type

subtitle=performance_type

title_y=' Blocks/Seconds'

if performance_type in ['PhysicalReads','LogicalReads']:

unit='blocks/s'

elif performance_type in ['RedoSize']:

unit='bytes/s'

elif performance_type in ['DBTime','CPUTime']:

unit='Minites'

else:

unit='times/s'

final_series=[]

#final_series=oracle_performance_day(performance_type,ipaddress_tnsname_list,starttime,endtime,interval)

#return HttpResponse(final_series)

if interval=='day':

final_series=oracle_performance_day(performance_type,ipaddress_tnsname_list,starttime,endtime,interval)

x_categories=final_series[0]['x']

elif interval=='week':

final_series=oracle_performance_week(performance_type,ipaddress_tnsname_list,starttime,endtime,interval)

x_categories=final_series[0]['x']

#return HttpResponse(final_series)

dic={'categories':x_categories,'series':final_series,'title':title,'subtitle':subtitle,'unit':unit,'title_y':title_y}

#return render_to_response('highcharts_histogram.html',dic) # Redirect after POST

#return HttpResponse (final_series)

return render_to_response('highcharts.html',dic) # Redirect after POST

else:

return render(request, 'oracle_performance.html', {'form': form})

else:

form = charts_oracle_performance() # An unbound form

d1=datetime.datetime.now()

etime= d1.strftime("%Y%m%d")

stime=(d1-datetime.timedelta(hours=720)).strftime("%Y%m%d")

#etime= d1.strftime("%Y%m%d %H")

#stime=(d1-datetime.timedelta(hours=24)).strftime("%Y%m%d %H")

dic={'form':form,'etime':etime,'stime':stime}

#dic={'form':form,'ip':ip,'ipaddress_checked':ipaddress_checked,'etime':etime,'stime':stime}

return render(request, 'oracle_performance.html', dic)

上面的url设定调用views.py里面的oracle_performance函数,该函数讲解如下:

首先判断请求的方法是不是post(提交表单前),如果不是则打开oracle_performance.html页面,charts_oracle_performance为定义的表单,可在forms.py中定义

如果请求方法为post(提交表单后),首先验证输入是否正确,如果正确则获取相应的ipaddress,tnsname,performance_type等信息,

接下来根据performance_type的类型(物理读,逻辑读等)调用monitor/command/views_oracleperformance.py文件里面的方法来得到我们想要的数据,这个方法的讲解在昨天的公众号,大家可自行查看

最后我们将TOP SQL相关的内容封装成字典重定向到相应的template文件中

3. template文件

这里我们使用highcharts.html文件来显示趋势图

$(function () {

$('#container').highcharts({

title: {

text: '{{title|safe}}',

x: -20 //center

},

xAxis: {

categories: {{categories|safe}}

},

yAxis: {

title: {

text: '{{unit}}'

},

plotLines: [{

value: 0,

width: 1,

color: '#808080'

}]

},

legend: {

layout: 'vertical',

align: 'right',

verticalAlign: 'middle',

borderWidth: 0

},

plotOptions: {

series: {

cursor: 'pointer',

point: {

events: {

click: function(e) {

$("#test3").val(this.y+'s'+this.x);

//上面是当前页跳转,如果是要跳出新页面,那就用

//window.open(e.point.url);

//这里的url要后面的data里给出

}

}

},

}

},

series:[

{% for i in series %}

{

name: '{{i.name}}',

data: {{i.data}}

},

{% endfor %}

]

});

});

这里通过highcharts来展现数据库性能趋势状态

Django允许在html文件内部使用程for循环的形式来迭代列表

关于oracle_peforance页面就说到这了,performance页面可自行参考源码

4. 效果展示

1.数据库系统状态趋势(天为单位)

首先是表单提交之前的界面

这里选择需要查询的数据库,支持多个数据库同时查询

然后是起止时间以及性能类型

最后可以选择天和周为单位

点击提交后会展示各个数据库该时间段的趋势图

2.数据库系统状态趋势(小时为单位)

首先是表单提交之前的界面

这里选择需要查询的数据库

然后是起止时间以及性能类型

最后是是否比较基线,这个后续会有单独介绍

点击提交后会展示出每天各个时间段的趋势图

5. 源代码位置

欢迎访问我的github主页查看源码

django oracle 性能,4.利用Django在前端展示Oracle 状态趋势相关推荐

  1. django restful 请求_利用 Django REST framework 构建 RESTful Web API

    利用 Django REST framework 构建 RESTful Web API 终于到了动手操作的环节啦,这一节,我们以师生管理系统为例,带领大家搭建一套 framework Web API. ...

  2. oracle数据库path,利用Path环境变量解决oracle数据库和owb工具不兼容问题!

    利用Path环境变量解决oracle数据库和owb工具不兼容问题! 2009年5月4日 现象: 安装了oracle9i和owb10后往往会出现各自工具不能启动的现象,比如安装完oracle9i后再安装 ...

  3. Oracle编程入门经典 第6章 在Oracle中处理语句

    6.1     SQL语句类别 DDL:数据定义语言语句.这样的语句有CREATE.TRUNCATE和ALTER,它们用于建立数据库中的结构,设置许可等.用户可以使用它们维护Oracle数据词典. D ...

  4. Django小实战——在线Web计算器(利用Bootstrap进行前端开发)

    文章目录 前言 一.目的 二.步骤 1.创建项目 2.项目配置 3.页面制作 4.界面美化 5.逻辑功能实现 6.后端计算模块 7.效果展示 三.总结 前言 前端采用了Bootstrap进行制作,提供 ...

  5. 通过python利用Django框架搭建一个属于自己的免费网站(已更新)

    大家好,我是天空之城,今天给大家带来,通过python利用Django框架搭建一个属于自己的免费网站. 以下是网上找到的免费教程,https://djangogirlstaipei.gitbooks. ...

  6. 利用django中间件CsrfViewMiddleware防止csrf攻击

    一.在django后台处理 1.将django的setting中的加入django.contrib.messages.middleware.MessageMiddleware,一般新建的django项 ...

  7. 树莓派利用Django搭建聊天网页服务器 —— 准备篇

    利用Django在树莓派上搭建一个聊天网页服务器,话不多说,直接上流程. 首先来看一下刚创建的Django项目文件结构: 项目文件配置 setting.py配置 第一个我们先来看一下setting.p ...

  8. 树莓派网页服务器的网页留言板,树莓派利用Django搭建聊天网页服务器 —— 准备篇...

    利用Django在树莓派上搭建一个聊天网页服务器,话很少说,直接上流程.html 首先来看一下刚建立的Django项目文件结构: 前端 项目文件配置 setting.py配置 第一个咱们先来看一下se ...

  9. 10分钟利用django搭建一个博客

    以前老是听说ROR开发有多快多块,网上还有朋友为了证明这,专门制作了10分钟利用rails框架搭建一个简易博客的教程,最近学习django框架,觉得django给开发者的便捷也很多,心血来潮来写个10 ...

最新文章

  1. c++ 动态分配数组_C/C++编程笔记:「C语言指针」民间解读版本
  2. 【软件测试】白盒测试のN-S图
  3. nosuiteable Oracle,快给你的Kubernetes集群建一个只读账户(防止高管。。。后)
  4. shell export 命令
  5. vue中注意watch的执行顺序
  6. Python应用|绘制任意正态分布曲线
  7. 阿里云服务器使用步骤详解
  8. openwrt 怎么进入串口_OpenWrt路由器读取串口数据,建立tcp服务
  9. 当我们聊策略的时候,我们在聊什么?策略 Strategy。
  10. 【Servlet篇】Response对象详细解读
  11. python re库 详解(正则表达式)
  12. HGVS制订的变异位点命名规则
  13. optix资料(基于optix7.0)——错误
  14. 才茂CM520如何通过4G物联网卡将信号发送到PC端
  15. MySQL——慢查询日志分析
  16. PS安装插件提示无法加载扩展未正确签署解决方式(适用于mac/win)
  17. 计算机专业中的一些术语
  18. 干活的累死累活,数据分析师最后还要会写PPT的5条原则
  19. 人生何处不相逢谐音歌词
  20. java 栈的使用

热门文章

  1. Nacos服务发现控制台预览
  2. 基于AliOS Things玩转智能语音
  3. 三款新功能发布,助力阿里云表格存储再次升级
  4. 美国燃油“动脉”被黑客切断,网络安全走向哪里?专访山石网科|拟合
  5. 再见 Nacos,我要玩 Service Mesh 了!
  6. 云原生安全厂商小佑科技完成数千万Pre-A轮融资
  7. 关于云原生需要了解什么
  8. 5分钟,带你了解不同类型的云计算!
  9. oracle list 分区详解,oracle的List分区及分区索引
  10. 菜鸟教程 mysql like_MySQL LIKE 子句