IT技术学习之开发(六)

       上次好像说到了反映zabbix数据,我又打算回到web形式,一劳永逸,比word形式的更好,但web形式的开发又涉及到了很多其他技术,比如前端、中间件,以及如何用它们调用后端数据。之前突击了一阵技术文章,之后就沉寂了几个月,最近又开始搞,稍微学了点皮毛,拿来晒晒。

       Python有现成的web应用框架,可以快速的搭建网站,我用的是Django框架,介绍性的内容大家可以上网查查,资料很多,都比我说的好,我只说说我学习和实操的过程。

       这篇先来讲讲技术发展历程。上回说已经可以通过MySQLdb包调用zabbix数据库,并且在第一篇技术文章里我显摆过首页,当时已经可以通过登录跳转到资源监控页了(只是个空白页),后来实现了在该页上显示调用数据库返回的数据了,就是一行行丑陋的原始数据。虽然后来我搭建了Django项目和应用,但就像上图那样,两者完全没有联系,我不知怎么把网页和脚本植入Django框架中。

       经过一段时间(我也忘了过了多久),我大概了解了Django框架的运作模式,通过urls.py和view.py两个文件,我实现了登录页跳转首页的功能(只是跳转,没有登录系统),并且把zabbix数据库同步到了Django自带的操作数据库的文件models.py。后来又从网上找来了一套Bootstrap框架,按着不同文件夹放进了Django里,但还没开始编辑,因为这套前端框架也不小,得熟悉一阵子。

       Django自带的models.py应该是很方便的,但我感觉从逻辑上用的不顺手(其实就是不会用),并且考虑到数据库由zabbix自身和models两者同时管理,万一models不小心修改了数据,就麻烦了,于是我又换成了pyzabbix包调取zabbixAPI的方式获取数据。同时我开始着手pyecharts包的植入,之前搞word时就想用它来做图,但植入到word里只能是图片,不能展示动态、交互的效果,这也是我转web模式的原因之一。另外我还试了试Apache和Nginx代理网页,好像是可以,然后就暂时搁置了。

       上面图里新的部分就是最近几周搞的了。首先搞了个登陆系统,从网上找的一段登陆认证的代码,放到views.py里,把用户信息通过models.py存储到数据库里(和zabbix是两个库);然后是从pyecharts包转到echarts.js,有原装的为什么还要用仿制的,而且pyecharts到网页里不能自动适应窗口大小(其实还是不会,最终放弃了),不过目前代码都写在html里了,等以后建立完整页面时还需要考虑分离出来;正因为这种考虑,我把pyzabbix从views里分离出来单独放到zabbix-data.py文件里,这里还需要写大量调用zabbixAPI的函数。在调用的过程中,存在一个重要问题,就是调取zabbix数据时耗时非常大,加了多线程操作也没有节省时间,我看了zabbix的代码,它是靠各种cache缓存数据的,我不会搞,还得继续学。下图就是目前的状态:

       除了数据图,其他都属模板自带的,后面还有大量改布局的工作,数据是每分钟一次,一共一个月的,echarts展现数据的能力还是很不错的,密密麻麻,所以什么样的数据用什么样的图展示更好看也是后期需要琢磨的。

       在这个改来改去的过程中,遇到过许许多多的问题,有些查资料、反复修改能解决,有些则束手无策,只能绕过。目前做的只是展示数据,后面还有很多方向可以涉足。当然,我还只是个业余选手,代码不如专业开发工程师写的工整,经验不如开发项目经理丰富,技术知识都是现学现卖的。不过从中我也能得到一种追求逻辑的快乐,就像做数学题,玩三国杀,更有一种创造逻辑的可能性的憧憬,就像编数学题、制作三国杀武将。

       不升华了,具体代码分析下回再说。

你可能感兴趣的:(IT技术学习之开发(六))