数据库管理平台一期已经开发完成,主要实现了下面的功能:
1数据库信息标记
2自动安装部署,之前的自动化安装部署是在后台调用写好的shell脚本,这种方式不怎么好,修改成后台使用salt-api去用state.sls去部署,这样的方式更好些。
3不同种类日志信息查看
4备份文件查看
5备份任务的自动添加,目前的备份恢复都是通过shell自动化完成的,恢复的过程需要手工去执行脚本,这种方式没有很好的整合到管理平台中,其实这部分完全可以修改成python实现,放置到管理平台,通过界面设置,完成备份恢复的自动化执行,目前时间人力不够,暂不实现。
6awr自动获取
7索引自动化创建,查看
8授权信息的查看
9sql执行计划查看,oracle执行计划的查看支持输入sql文件,和根据sql_id查看执行计划
10基于角色的权限控制,之前的权限控制自己写的太简单粗糙,重构使用django的权限控制
11dba周报的自动管理,发送。
12sql审核功能,由于测试环境与线上环境数据量差距较大,测试过程中无法测试出sql效率问题,所以使用管理平台获取业务sql,然后结合前面的执行计划查看功能,自动化的批量获取执行计划,dba只需要在输出文件中排查一遍sql执行计划即可,此处的sql审核是指的线上运行的sql性能审核
13所有数据库机器资源使用率查看,dba在搭建测试库或线上库的时候,需要规划服务安装在哪台机器上,在机器多了以后,就需要手工的上去一个一个看了,这个过程也是很枯燥耗时的,在数据库管理平台上展现所有数据库机器的cpu,内存,磁盘使用空间,这样dba可以快速找到能部署服务的机器,同时对于机器的使用情况也能一目了然,不至于出现某台机器很空闲,某台机器很忙,服务分布不均衡的问题。
14封装了下去哪儿开源的inception,对于后续的sql审核执行都自动化执行,人为调数总是有风险的,不管dba如何小心都是无法避免的问题,之前就因为新同事入职,磨合期出现过一次线上调数故障,能避免人为干预,就尽量避免吧。inception的开发思路跟我之前想的是一样的,使用msyql去进行语法语义的校验,而不是自己去开发工具做,语法语义的检查很复杂,直接用mysql的源码把这部分内容裁剪出来使用,又稳定,又省力,这就是开源的好处。,此处的sql审核指的是开发调数的sql审核,以及建表语句的审核。
15mysql状态变量的收集,页面展现,对于状态变量的实时展现,可以直观的观察到数据库的运行情况
16 开发时不时的会有挖掘oracle 日志的需求,查看一个表中的数据变化,定位数据错误问题,这种操作需要拷贝日志,然后执行一系列的操作,也比较繁琐,后续有时间添加到数据库运维管理平台上,自动化查看。
一期的功能已查询为主包含部分的线上维护操作,二期添加启停,及一些其他线上维护操作。
假期中添加了周报的部分,之前周报自己总是懒的发,现在把周报的功能添加进来,每天记录自己干的事情,会定时发送周报,不用自己每周五要想本周都干了什么。
调度使用的是APScheduler,没有使用http://www.celeryproject.org/ celery,简单能实现我的需求就好。
因为线上数据库包含了oracle与mysql,在开发数据库管理平台的时候,要兼容2个不同类型的库,处理起来还是比较麻烦的,oracle的东西放在自动化管理平台上搞起来不是很方便。
自动化运维平台的开发还是很有帮助的,不仅dba可以使用进行日常的维护操作,也可以开放部分内容给开发使用,也相当于解放了部分dba的工作。
目前的日常告警,可以通过平台去定位了,真对cpu使用偏高的处理,在接受到告警后,可以直接按时间去查看awr,然后在awr中定位sql,在平台上获取sql执行计划,分析。无需在登录数据库进行操作。打打缩短,简化了问题处理流程。
吐槽下,一直想在界面上加上一些指标的图形展现,但是本人前端开发水平真是有限,目前还没有精力去做。
目前开始集成cmdb的部分,将资产管理与数据库管理放在一起,分权限访问,加强平台的管理能力,目前的基本功能开发完成,后面需要添加一下封装salt的批量执行的功能。