数据库管理平台NetopGO简介

原文出自【听云技术博客】:http://blog.tingyun.com/web/article/detail/600前端

断断续续写了将近一个月,听云初版数据库管理平台终于写完了,期间来来回回的改了好屡次小毛病,如今已经部署到生产环境上去了。golang

在刚开始的时候,后端的数据库集群只有10多个节点组,平常的巡检工做并不会花费太多的时间和精力。随着业务的增加,在较短期内后端集群扩展到数百节点时,这时的平常巡检若是仍是人肉完成,讲道理,最终可能就是不作巡检或者是缘分巡检,哪天想起来了搞一下。显然这不是咱们的风格。那么如何解放咱们花在巡检上的时间和精力,咱们决定写一个工具来帮咱们完成巡检工做,咱们要作的就是登录上这个系统,look and check。web

在这个版本中实现的功能并非不少,大都是针对目前工做中的痛点来开发的,架构也很简单,分为报表和数据收集两个部分,数据收集程序主要从两个地方收集数据,一个是线上的数据库中收集一些指标数据,一个是调用云厂商的api取DB的容量信息。sql

该系统的开发语言是golang,netop是咱们部门的简称,因此索性就叫NetopGO。前端页面是改的jumpserver的页面,数据搬运工真心写不动前端。shell

Web开发框架使用的beego。讲道理,jumpserver的前端模版真的是一款很优秀易上手的模版,beego就更不用说了,powerful、beautiful and amazing!直接上图,标清有码,嘿嘿嘿。数据库

一、仪表盘后端

图片描述

这里主要是一些数据概览,各类总量、截至到当前的本月数据量变化趋势。每一个业务库本月的数据容量变化状况,还有前一天慢查询数量排名top12。仪表盘上提供快速跳转的连接,只须要点击相关的数字便可。好比点击DB总数,就会跳转到DB列表的页面。api

二、用户权限浏览器

1.2234.jpg

划分三种权限:admin、dba和guest。若是当前用户的权限不足,访问受限页面会提示没有权限或页面上的部分按钮不可用。安全

1.2235.png

三、主机管理

1.2236.jpg

这里主要是主机列表管理和业务组列表管理。主机列表依赖业务组列表。这部分对来宾和数据库管理员是有权限控制的,好比这个guest用户登陆上来以后查看主机列表只有readonly用户的远程登陆可用,其余功能受限,点击远程登录会弹出一个webshell,以下图:
1.2237.jpg

四、DB管理

DB管理是这个版本的重心,首先看DB列表 1.2238.jpg

这里有全部线上的实例,而且每一个实例都有图表和慢sql的入口连接,点击图表,会跳转到图表的页面:1.2239.jpg

图表目前只有数据量(天天统计)、QPS&TPS(每10分钟统计)和慢查询个数(天天统计)的变化曲线。监控不是这个系统的重点,目前基本上全部的生产环境监控都是另一个平台再支撑。我但愿系统可以为我展现全部实例的数据量变化趋势、qps&tps状况,固然最重要的是慢查询的详细状况。若是在列表中点击慢查询,就会跳转到慢查询列表页面,以下图:1.2240.jpg

这个页面中会对慢sql作简单的汇总和统计,同时提供查看sql和具体执行计划的功能,好比点击查看执行计划,就会向生产环境的数据库作一个即时的执行计划分析并返回结果,这样抓到慢sql就不用打开黑窗口(xshell)登录到后端数据库上去看执行计划,直接在前端页面就能查看。以下1.2241.jpg

Schema列表,这个页面一样有比较大的信息量,包含了全部业务库的列表,这个列表主要是给数据查询窗口使用的,动态的增删schema列表,就至关于动态的增删数据源。同时展示了每一个业务库当前的数据容量大小,很是直观。1.2242.jpg

因为咱们后端的数据库使用了分区表,分区是由存储过程自动维护的,因此咱们对每一个业务库后端的分区增删状态在这里作了展示,点击分钟按钮就会跳转到分区监控列表页面,可以清晰的看到哪些节点的添加分区没有成功,若是添加失败,就会显示红色的Failed字样。小时和天表也是同样的。 1.2243.jpg

日常的工做中会有不少数据查询的场景,研发和测试的同事那么多,若是全部的请求都对准dba一我的的话,也是一个头疼的问题,因此在NetopGO中开了一个查询的窗口,实现了权限划分、查询sql审计记录和自动后端识别的功能。动态增删数据源,Schema列表中添加一个数据源,在查询窗口里能够当即显示并进行查询。若是后端容许的话,dba能够作任何操做,好比 insert操做,以下1.2244.jpg

若是后端是代理的话,即使是dba角色也只能支持查询,以下1.2245.jpg

若是是来宾账号,全部的数据库都只能是查询权限,以下1.2246.jpg

若是查询成功,会跳转到结果页面,若是列不少,超出了表格的宽度,下方是会有滚动条出现的。以下1.2247.jpg

目前,出于信息安全的考虑,并无支持数据导出功能,不过正在考虑给dba视角添加一个结果导出功能。

在数据查询窗口中执行的sql,不管是否成功,都会被记录到审计日志里面,查看审计日志能够访问审计日志页面,以下:1.2248.jpg

列表中会展现每条sql的执行用户、schema、状态和具体执行的sql。其余同事正在查询的时候你就看这个列表,十分有快感。

五、升级记录功能

升级记录功能并无引入工做流,因此只是一个简单的记录,目前实现了应用升级记录、数据库升级记录和故障记录的功能,可是你们都但愿不要手工录入,最好是提流程系统本身记录。这个从目前的环境来看,可能难以实现。

不过从我本身的体验来讲,这种记录方式相比以前已经有很大改善。以数据库升级记录为例,之前的升级记录是放在一个nfs共享目录下的一个excel表中,目录比较深,跟sql文件的存档目录不在一个目录下,每次记录须要翻两次n级的目录,并且若是要找以前的一个升级sql,也不太好找,由于文件比较多,因此DB升级记录功能是这样的1.2249.jpg

在记录升级记录的时候直接把sql文件上传到服务器端的目录,而后列表中提供查看附件的入口,以下1.2250.jpg

点击详细内容,会跳转到以下页面 1.2251.jpg

点击附件,若是是在Chrome浏览器上,会直接在一个新的窗口中显示出文本内容,若是是其余浏览器,会直接下载这个文件。附件直接在浏览器上访问真的很方便。Chrome下点击附件1.2252.jpg

这个版本实现的功能基本上就这些了,接下来打算在查询窗口的页面中支持对后端中间代理下的集群作DDL和DML的变动,中间件自己是没有办法支持这些的,因此咱们实现的思路就是在查询窗口中选定schema以后,sql会被提交到代理后端全部的分片上去执行,并最终返回执行状态,从而达到验证的目的。目前咱们是使用的脚原本完成,有点low。这个版本已经作了至关多的准备工做,因此实现这个功能并不会很难。目前来看NetopGO绑定了太多咱们本身的业务场景,后续若是功能完善以后,会在通用性上下点功夫,作一个开源的版本出来。

相关文章
相关标签/搜索