跳转至

刚开始初衷是做个故障自愈的系统,后来这加加,那边加加就变成了运维系统。

前言

22年10月份的时候,我们线上系统频繁出现故障,报警不断,时不时的就需要人工处理。

  • 公司对于运维方面不是很重视,加上拥抱阿里云和腾讯云,云平台只会报警,报完警就只能人工去处理问题,或者自己写个脚本处理这个问题,将脚本都分发到每台机器上去。

  • 自定义的报警都是处理的特定的问题,不能很好的统一规范管理,很多报警脚本都是散落在各个机器上,很多时候都找不到脚本丢在哪里。

为了更好的统一处理云平台、prometheus触发的报警,我决定自己开发一个故障自愈的系统。云平台可以触发一个告警回调,根据每个资源的不同的回调传递参数进行区分,不同的告警项触发不同的处理方式。

1、系统的前端

1、simpleUi + django-simpleui-captcha

之前有一个系统使用的是vue-admin-template,用起来确实很方便,但是一旦自己增加一点东西就会很丑,所以这个我就使用的是simpleUi + django-simpleui-captcha 作为后台的界面和登录验证码。

登录
登录首页

2、增加了一些echarts,进入系统就可以看到最近的报警情况。

首页
系统首页

2、模块

1、系统管理

这个模块里面主要包含了用户的管理、角色管理、菜单管理、字典管理、登录日志、操作日志、告警通知记录、ip白名单等。

1、用户、角色、菜单之间的关系

  • 我重写了用户的模型,新增了菜单模型,没有重写权限的模型,做个简单的rbac我觉得就够了。

  • 用户和原来的group都是控制用户权限,我这里面用户一般不单独设置权限,所有权限都是在group里面配置的,将group理解为角色。

  • 菜单是在中间件中进行控制,通过simpleUi的自定义菜单,控制用户对应权限对应的菜单。

首页
菜单管理

2、字典管理

参考github上很多后台管理系统,发现很多都有个字典管理系统,起初没用上,随着系统的使用增多,发现有的数据新建一张表没必要,用字典却是很方便,并且管理和修改也比较方便。

首页
字典管理

2、资产

平台的数据基本上都是来自于资产,这个资产相当于一个小型的cmdb,而资产中的数据则是同步于云平台的数据。 这个模块主要有服务器信息、服务器组、镜像、云实例、程序详情、实例应用等。

1、实例镜像

根据服务器信息,自动生成实例镜像,便于云实例快速创建云上服务器实例。

首页
实例镜像

2、程序详情

是指每台机器上的应用的配置,配置是否进程检查、端口检查、异常自动重启

首页
程序监控

3、实例应用

每个实例上绑定程序详情,检查应用状态。包括通过自定义的agent上传应用程序的监控数据。

首页
实例应用

3、故障自愈

这个模块就是这个系统的初衷,将云平台发出的告警故障,结合告警数据,通过一个系统来统一的汇总,处理故障。 这个模块主要包含,cvm告警、es告警、prometheus告警、告警分析、接入自、自动分析上传结果、自定义套餐包、自愈执行结果等。

1、接入自愈

监控项可以是云平台的,也可以是自定义的,执行方式可以远程或者本地,异步或者同步。

首页
接入自愈

2、自定义套餐包

自定义套餐包在接入自愈时可以选择怎么处理这个告警。

首页
接入自愈

4、cronjob

这个就是依赖于ansible,将服务器上的所有脚本都统一管理,发布,查看执行日志。

首页
cronjob

5、日志告警

里面包含es和cls告警日志的捕获,分析。

首页
cls告警

6、批量任务

包含线上配置文件的发布,ansible playbook的执行,文件的上传等。

7、celery 任务

这个就是需要定时执行的计算任务的管理。

8、多云管理

包含线上域名等管理。

3、总结

文档也没啥好写的,主要提供给有这个需求的朋友一些思路,这个算是我在生产环境中用的比较多的一个系统了。



觉得有用的老铁们可以"微信"赞助一杯82年的雪碧呦。
txtddd
本文阅读量  次

评论