更多技术干货请戳:听云博客

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

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

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

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

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

1、仪表盘

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

2、用户权限

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

3、主机管理

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

4、DB管理

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

这里有所有线上的实例,并且每个实例都有图表和慢sql的入口链接,点击图表,会跳转到图表的页面:

图表目前只有数据量(每天统计)、QPS&TPS(每10分钟统计)和慢查询个数(每天统计)的变化曲线。监控不是这个系统的重点,目前基本上所有的生产环境监控都是另外一个平台再支撑。我希望系统能够为我展示所有实例的数据量变化趋势、qps&tps情况,当然最重要的是慢查询的详细情况。如果在列表中点击慢查询,就会跳转到慢查询列表页面,如下图:

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

Schema列表,这个页面同样有比较大的信息量,包含了所有业务库的列表,这个列表主要是给数据查询窗口使用的,动态的增删schema列表,就相当于动态的增删数据源。同时展现了每个业务库当前的数据容量大小,非常直观。

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

平常的工作中会有很多数据查询的场景,研发和测试的同事那么多,如果所有的请求都对准dba一个人的话,也是一个头疼的问题,所以在NetopGO中开了一个查询的窗口,实现了权限划分、查询sql审计记录和自动后端识别的功能。动态增删数据源,Schema列表中添加一个数据源,在查询窗口里可以立即显示并进行查询。如果后端允许的话,dba可以做任何操作,比如 insert操作,如下

如果后端是代理的话,即便是dba角色也只能支持查询,如下

如果是来宾帐号,所有的数据库都只能是查询权限,如下

如果查询成功,会跳转到结果页面,如果列很多,超出了表格的宽度,下方是会有滚动条出现的。如下

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

在数据查询窗口中执行的sql,无论是否成功,都会被记录到审计日志里面,查看审计日志可以访问审计日志页面,如下:

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

5、升级记录功能

升级记录功能并没有引入工作流,所以只是一个简单的记录,目前实现了应用升级记录、数据库升级记录和故障记录的功能,但是大家都希望不要手工录入,最好是提流程系统自己记录。这个从目前的环境来看,可能难以实现。

不过从我自己的体验来说,这种记录方式相比之前已经有很大改善。以数据库升级记录为例,以前的升级记录是放在一个nfs共享目录下的一个excel表中,目录比较深,跟sql文件的存档目录不在一个目录下,每次记录需要翻两次n级的目录,而且如果要找之前的一个升级sql,也不太好找,因为文件比较多,所以DB升级记录功能是这样的

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

点击详细内容,会跳转到如下页面

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

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

原文链接:http://blog.tingyun.com/web/article/detail/600

听云数据库管理平台NetopGO简介的更多相关文章

  1. 国内物联网平台(5):机智云IoT物联网云服务平台及智能硬件自助开发平台

    国内物联网平台(5)——机智云IoT物联网云服务平台及智能硬件自助开发平台 马智 平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运 ...

  2. #听云博客大赛#如何在自己的App嵌入听云产品监控App性能

    近日浏览园子文章的时候,发现博客园与听云正在举办“听云原创博文”大赛.最近手上正好正在开发一款iOS的应用,所以就用听云App来监测一下我的App各个指标,为我的应用保驾护航.下面,我就从头到尾演示下 ...

  3. 利用听云Server和听云Network实测Kubernetes和Mesos在高并发下的网络性能

    文章出自:听云博客 随着公司业务的不断增长,我们的应用数量也有了爆发式增长.伴随着应用爆发式的增长,管理的难度也随之加大.如何在业务爆发增长的同时快速完成扩容成了很大的挑战.Docker的横空出世恰巧 ...

  4. 【活动】写#听云#原创博文 赢取iPhone 6超级大奖

    移动应用的使用量和重要性与日俱增,用户体验的要求也越来越高.与桌面程序相比,移动应用耗电小,速度慢,但手机用户却希望享受到与桌面程序同样的加载速度.那么如何发现移动应用的性能黑洞,优化移动应用性能,这 ...

  5. Java开源生鲜电商平台-系统简介

    Java开源生鲜电商平台-系统简介 1.生鲜电商平台的价值与定位. 生鲜电商平台是一家致力于打造全国餐饮行业智能化.便利化.平台化与透明化服务的创新型移动互联网平台,连接买家与卖家之间的一个平台 看以 ...

  6. OpenResty 在又拍云容器平台中的应用

    大家好,我是又拍云叶靖,今天主要分享 OpenResty 在又拍云容器平台中的应用.目前又拍云有很多产品,其中很多都使用了 OpenResty 技术,比如又拍云的 CDN .网关都是基于 OpenRe ...

  7. 直压到亚马逊AWS平台,阿里云OSS平台或者腾讯云COS平台

    GTX Compressor (直压上云技术预览版) Powered by GTXLab of Genetalks. 技术预览版本下载地址: https://github.com/Genetalks/ ...

  8. Bmob移动后端云服务平台--Android从零開始--(二)android高速入门

    Bmob移动后端云服务平台--Android从零開始--(二)android高速入门 上一篇博文我们简介何为Bmob移动后端服务平台,以及其相关功能和优势. 本文将利用Bmob高速实现简单样例,进一步 ...

  9. waf 引擎 云原生平台tproxy 实现调研

    了解了基本 云原生架构,不清楚的查看之前的文章:https://www.cnblogs.com/codestack/p/13914134.html 现在来看看云原生平台tproxy waf引擎串联实现 ...

随机推荐

  1. hadoop的概念

    hadoop的概念 网上会经常遇到各种hadoop的概念,Hive,HBase,Hdfs都各是什么呢? 首先从hdfs说起,hdfs是分布式文件系统,它把集群当作单机一样做文件操作,文件可能存在于多个 ...

  2. HTML5矢量实现文件上传进度条

    在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传.上传成功了没有,所以今天给大家介绍的内容是通过HT for Web矢量来实现HTML5文件 ...

  3. JS魔法堂:LINK元素深入详解

    一.前言 我们一般使用方式为 <link type="text/css" rel="stylesheet" href="text.css&quo ...

  4. 【C#】分享一个可灵活设置边框的Panel

    ---------------------------更新:2014-05-19--------------------------- 优化了一下逻辑,就是既然可以通过设置BorderSide=Non ...

  5. java中的几种取整函数

    舍掉小数取整:Math.floor(2)=2 舍掉小数取整:Math.floor(2.1)=2 舍掉小数取整:Math.floor(2.5)=2 舍掉小数取整:Math.floor(2.9)=2 负数 ...

  6. 修正 Memo 設定為 ReadOnly 後, 無法有複製的功能

    问题:当 Memo 設定為 ReadOnly = True 後, 选取一段文字后,無法有複製的功能. 适用:XE6 Android 系统(目前 iOS 还找不到方法) 修正方法: 请将源码 FMX.P ...

  7. JVM基本原理

    第一节 JVM内存模型 •堆栈简称栈,主要提供以下用途: –保存临时数据 –放置临时变量(局部.自动.堆栈) –保存调用现场 –方法返回值的传递 •堆主要提供以下用途: –存放对象(GC对象) –存放 ...

  8. GJM:用C#实现网络爬虫(二) [转载]

    上一篇<用C#实现网络爬虫(一)>我们实现了网络通信的部分,接下来继续讨论爬虫的实现 3. 保存页面文件 这一部分可简单可复杂,如果只要简单地把HTML代码全部保存下来的话,直接存文件就行 ...

  9. SQL Server 行转列重温

    转载自http://www.cnblogs.com/kerrycode/ 行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER ...

  10. 编写高性能Javascript代码的若干建议

    多年来,Javascript一直在web应用开发中占据重要的地位,但是很多开发者往往忽视一些性能方面的知识,特别是随着计算机硬件的不断升级,开发者越发觉得Javascript性能优化的好不好对网页的执 ...