曾老湿带你了解运维需求-实现自动化运维平台

2019-05-19 分类:DevOps, Linux 阅读(1318) 评论(0)

-曾老湿, 江湖人称曾老大。
-笔者QQ:133411023、253097001
-笔者交流群:198571640
-笔者微信:z133411023


-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。
-擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。
-devops项目经理兼DBA。
-开发过一套自动化运维平台(功能如下):

1)整合了各个公有云API,自主创建云主机。
2)ELK自动化收集日志功能。
3)Saltstack自动化运维统一配置管理工具。
4)Git、Jenkins自动化代码上线及自动化测试平台。
5)堡垒机,连接Linux、Windows平台及日志审计。
6)SQL执行及审批流程。
7)慢查询日志分析web界面。


自动化运维平台功能大纲

核心功能1-Dashboard及展示

自动化运维平台链接:http://devops.driverzeng.com

Dashboard页面中有以下三个标签:


分析页

作用:分析网站崩溃率以及网站的响应时间

功能实现:

1)崩溃率:通过分析日志(底层Logstash将日志导入到数据库中),实时获取日志的状态码,计算出4xx,5xx的状态,和当前日志总量相比,得出结果,通过获取数据库中的数据,以画图的形式展示在页面中。

2)响应时间:根据nginx日志中的response_timeupstream_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服务器。


数据库

第三个标签页,就是针对咱们生产中数据库的管理,这里可以管理SQLserverMySQL

这些库表的信息,也都是自动获取到的,而不是我们手动创建的。我们只需要在新建那里填写数据库的主机的以下信息即可获取到里面的库和表。

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

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

核心功能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而且你的所有操作,都会被 记录在案...

也就是日志审计,不管是这条命令 你敲了回车 还是没有敲回车,都会以视频的方式给你回放出来。

进度和播放可以随意调整。

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

关于 曾老湿
我只是一个躲在角落里瑟瑟发抖的小运维,随时准备给大佬端茶递水。
WeChat:z133411023
QQ:133411023
标签:
欢迎新朋友你的到来!
还没有人抢沙发呢~
昵称
邮箱
网站
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册