- 自动化运维平台功能大纲
- 核心功能1-Dashboard及展示
- 核心功能2-资产管理及展示
- 核心功能3-SQL审核及展示
- 核心功能4-运维工具及展示
- 核心功能5-堡垒机及展示
自动化运维平台功能大纲

核心功能1-Dashboard及展示
自动化运维平台链接:http://devops.driverzeng.com

在Dashboard
页面中有以下三个标签:
分析页 |
---|
作用:分析网站崩溃率以及网站的响应时间
功能实现:
1)崩溃率:通过分析日志(底层Logstash将日志导入到数据库中),实时获取日志的状态码,计算出4xx,5xx的状态,和当前日志总量相比,得出结果,通过获取数据库中的数据,以画图的形式展示在页面中。
2)响应时间:根据nginx日志中的response_time
及upstream_reponse
计算出当前网站的响应时间,然后页面获取数据库中的数据,以图形的方式,展现在页面上。
监控页 |
---|
作用:运维人员可以方便的看到服务器的硬件信息,应用的状态,系统信息,以及业务的信息
功能实现:

在工作中,运维人员通常会通过一些监控软件(例如:zabbix,nagios,cacti,open-falcon,普罗米修斯等),来监控自己的服务器,防止服务器出现故障,没法立即处理的情况,为了不影响用户的体验,运维人员需要常常关注自己服务器的状态,服务应用的状态,以及接收告警信息或者邮件,常常处于一种精神紧绷的状态,随时待命准备处理问题。
此自动化运维平台,底层是调用了zabbix
,通过zabbix
从不同的维度来监控服务器,获得监控信息,输出到数据库中,在zabbix
中,虽然已经实现了页面展示监控项的功能,但是如果我们运维人员,每使用一个运维工具,就需要打开一个网站那就太影响工作效率了,而且很多公司的老大
也觉得zabbix
的监控页面展示出来的图片并不炫酷,都使用grafana
来代替zabbix
出图,那么...我们既然有了自动化运维平台,为何不将出图的功能展示进去呢?
所以我们通过获取到数据库中的数据,来自行画图,使用百度的画图工具echarts
链接如下:https://echarts.baidu.com/


这里整合了非常多的图形,不仅炫酷,而且我们只要获取到数据库的数据,就能自定义画图,想出什么样的图,就出什么样的图。

只要点击一个图片,左边就是代码,右边就可以展示出来,你获取到数据后的图片,只要集成到,咱们的平台中即可。

工作台 |
---|

作用:这是我们运维人员平时写周报,日报,月总结,年总结,绩效考核的地方。
功能实现:
将TXT
或者是EXECL
集成到页面当中即可。
核心功能2-资产管理及展示

大家可以看到,这一页面,就是我们常听到的cmdb
资产管理页面。
在管理的页面中,也分为三个标签页:
用户 |
---|
第一个标签页,就是用户,也就是针对用户及用户组的管理,这里涉及到用户的权限
员工权限: 1)运维权限 2)开发权限 3)测试权限
管理员权限: 1)运维总监 2)开发总监 3)测试总监
以及不同用户组的权限,可以看到左边的标签页也不同

还有就是他们每个人,所关联的主机权限也不同。 众所周知,在企业中,开发是一定没有生产服务器的权限的,这是规范,也为了安全。 所有服务器的权限,都控制在运维的手中,所以,所有服务器运维都看的到。 而开发,或许只能看到开发环境的机器,测试只能看到测试环境的机器。
当然,在这个用户组中,也有不同的项目,如下图所示,因为在一个公司中,不可能就只有一个项目,例如:天美,他们做出的游戏有很多,那么,每一款游戏便是一个项目,那么一个项目,就会有一组服务器的集群来支撑起整个项目,所以在这里,项目和服务器之间,也是有权限关联的。

主机 |
---|
接下来,就是真正的资产管理,也就是主机的页面了。

在图中我们可以看到,此页面中又有主机管理,和主机组管理,在企业中,我们会将不同的服务主机归为一类,例如:tomcat服务所在的机器是一类,nginx服务所在的机器是一类,mysql所在的机器又是一类...等等。
然而,在主机管理这个页面当中,我们可以看到所有主机的信息,包括后面有几个功能按钮,编辑
,推送用户
,删除
在编辑中,我们可以编辑这个主机的信息,当然,我们看到的所有主机的信息,并不是我们填写进去的,我们只需要点击新建
将主机的内网ip填写进去,然后再点击新建
右边的刷新
,底层调用saltstack
,就可以获取到全部的主机信息,包括 IP、磁盘、公网IP、操作系统及版本,CPU、内存等信息。

在主机组中,我们可以新建主机组,例如:tomcat,类型就是一个env
可以把它放到所属项目是王者荣耀
的项目,那么,这组服务器就是,王者荣耀
项目中的tomcat
服务器。
数据库 |
---|

第三个标签页,就是针对咱们生产中数据库的管理,这里可以管理SQLserver
和MySQL
这些库表的信息,也都是自动获取到的,而不是我们手动创建的。我们只需要在新建
那里填写数据库的主机的以下信息即可获取到里面的库和表。

填写完之后,在库管理
和表管理
中就可以看到对应项目的数据库及表了。

在表管理中,我们还可以针对表进行一个备份。

核心功能3-SQL审核及展示

为什么要做一个SQL审核的平台呢,正如上文所说,在企业中,开发是没有服务器权限的,那么他们就没有办法接触到数据库,这也是为了数据库的安装着想,如果每一个开发都可以操作数据库,那么或许结果会是这样,在一个库被删除之后,没有任何人知道,这个库是被谁删除的,都互相甩锅,最重要的是,企业的核心数据丢失,对企业会造成很大的损失,如果没有做好备份的情况下,可能会导致...凉凉,如此一来,我们就真正意义上实现了,删库跑路。
那么在开发人员没有数据库 没有服务器的权限的情况下,我们会遇到如下情景,一个运维人员的身后,站了一排的开发,等待着执行SQL。

甚至还有需要查看日志的开发人员,那运维整天不用干别的了,天天给开发执行sql语句,给开发查询日志吧。
此时此刻,我想吟诗一首。
卧槽...
本想吟诗赠天下,奈何自己没文化。
反正...总之就一句话,在企业中,运维不要每天都在做重复性的工作,这样不仅无法给公司带来利益,自己也不会有太多的提升。
查询sql |
---|
在第一个标签中,查询sql,在这里选择好项目,选择好数据库,可以执行select,show,desc语句,并且可以自动补全。



查询出结果之后,我们可以将它导出成 sql文件、excel表格或者json格式的文件。


如此一来,开发就可以自己查询想要查询的数据,并且将数据导出。但是这里是无法执行修改类的操作,例如:update、insert、delete

如果你执意要执行,也OK,那么等待你的就是报错。我说你这孩子,怎么这么犟呢?????
提交sql |
---|
那么问题来了,我开发在生产中,是有需求执行某一条SQL语句,来修改数据,或者修改字段,增加数据的。如何是好?

那么接下来讲的,就是提交sql
的页面,这个页面大家会发现多了两行内容出来,为什么要这么做?
因为不可能让开发随意去执行SQL,他可以提交,但是需要开发的老大或者DBA来审核,那么如此一来,即便是执行完出了问题,那也不是我们运维人员的锅了呀。?机制如我...
执行之前,必须要填写一个说明,告诉审核人,我为什么要执行这条SQL语句。

填写完SQL之后,点击检查,可以帮你检查SQL的语法,语法通过,则提交按钮会亮

语法不通过,右上角会出来报错,而且提交按钮不会亮

当我们检查通过后,就可以提交SQL了,此提交,并非执行SQL语句,而是交给审核人来进行处理

我的工单 |
---|
那么接下来,就可以在我的工单中,查看到刚才提交的SQL状态。

点击详情后,你可以看到 提交的时间等一些信息,还有SQL语句,包括下面还有两个功能按钮,检查和撤销

查询历史 |
---|
在查询历史中,我们可以看到,第一个标签页查询sql
的历史结果,点击详情,我们就能看到详细的结果。


sql审批 |
---|
最一个标签页就是SQL审批
了,这个标签页啊,也只有运维,开发老大,DBA可以看到。

有的同学可能会发现,这个和我的工单里有什么区别么?
当然有,当你点开详情
后,你会发现,别有洞天...

在右下角,多了几个功能按钮,可以拒绝,可以批准,批准后,总监可以点执行,开发人员也可以在我的工单中点击执行。



核心功能4-运维工具及展示

salt |
---|
那么下一个页面,就是我们运维需要的一些功能了
第一个标签页面,是salt,底层就是调用的自动化运维工具saltstack
这里面也支持命令的自动补全。上面输入命令,下面执行结果。

文件传输 |
---|
此页面是用来上传下载文件的,底层调用sftp
我们可以选择一台服务器点击查看,就能查看到里面的目录以及文件。


点击上传,选择一个文件,我们就可以把文件传到对应的目录下

文件的后面就会显示 下载。单击下载,我们就可以将文件,下载到本地。


构建管理 |
---|
接下来的页面,就是运维常用到的代码上线,底层调用的是,gitlab和Jenkins
因为这两个服务比较占资源,个人服务器有点扛不住,所以...

周期任务 |
---|

周期任务里面,主要是定时任务,我们运维平时会在服务器的里写一些定时任务,比如: 每周一次数据库全备 每天一次数据库增备 定时巡检服务器状态
所以这里,我们只需要在这里创建一个定时任务即可
日志查询 |
---|
在运维工具中的最后一个标签页,就是在企业中,不管是运维还是开发都会常用的一个功能,日志查询,在这里,底层调用的是ELK,收集上来日志,如上文所说,在企业中,运维不可能天天给开发查询日志,那么我们就可以选择好项目,选择好日志,选择查询方式。

在这里查询方式有两种,tailf
,history
很显然,tailf 主要是实现了运维在服务器中常用的命令,tail -f 或者 tailf可以实时追踪日志。
history主要是实现了运维在服务器中,去查看历史日志,查找关键字,以及关键字的前n行和后n行,还有时间段。


这里,其实只要我们学会Elasticsearch的API即可获取到es中的数据,并展示在页面中。
核心功能5-堡垒机及展示
最后一个页面,也是最常用的一个功能,堡垒机,众所周知,如果没有跳板机,我们运维人员登录一台服务器会很麻烦, 尤其是当公司使用excel来维护资产管理的时候,所有服务器的密码,ip都会记录在表格中,我们需要找到服务器,找到密码,才能登录,这样很浪费时间,而且root密码,在企业中是会定时去修改的。


于是乎我们就有了跳板机的页面
在这里 起初我们底层用的是,jumpserver
但是 老版本的jumpserver不支持windows的连接,我们又将windows的连接功能添加进去。
后来又因为性能的原因,用go重新写了一遍。


在这里我们既可以连接windows又可以连接linux而且你的所有操作,都会被 记录在案
...
也就是日志审计,不管是这条命令 你敲了回车 还是没有敲回车,都会以视频的方式给你回放出来。
进度和播放可以随意调整。


注意:以上平台代码,为个人所有,均不提供源码,想要知道如何写出这套自动化运维平台,赶紧来老男孩报名吧,请联系作者信息在文章开头...