自动化运维系统通过构建一套完整的自动化架构体系,实现日常运维工作的自动化,涵盖自动化巡检、自动化检修、自动化监控等功能,并基于该架构体系研发了多款定制化自动化运维工具,以满足复杂运维场景下的实际需求。
自动化运维系统架构底座包含了用户管理、权限管理、组织机构管理、数据字典管理、日志管理、配置管理、服务注册与发现等基础功能。同时针对下层设备提供了Agent代理服务功能,实现对目标设备的配置、运行状态的采集,以及指令的下发、执行和反馈功能。
依托基础平台建设,上层微应用的开发与运行得到有效支撑。
项目整体架构分为基础平台层、数据库层、业务层、交互层和展示层。
基础平台层包括Openstack云平台和K8S容器平台,提供系统的基础运行环境
数据库层包括Mysql、influxdb、mongodb、seaweedfs等结构化、非结构化、时序数据库和对象存储系统,提供数据的持久化保存。
业务层包括用户管理、角色管理、组织机构管理、权限控制、日志管理、文件管理等基础通用核心组件,还包括Agent管理、资源配置管理、监控管理、业务门户等基础业务核心组件。根据实际业务运维需求开发各种微应用、微服务,这些服务依赖基础核心组件,专注实现业务逻辑功能,比如标准化检查、端口检查、运维日报、告警管理等。
交互层提供了数据的前后端交互、以及与其他系统对接的数据交互功能,包括http、tcp、websocket、syslog、mq等协议和通讯方式。
展示层提供了交互页面,让用户以直观的方式使用本系统开展日常运维工作。
我主导本系统的全部工作、包括架构设计、功能设计、技术选择、代码研发、测试、上线部署和运维的全流程工作。
其中主要负责的是平台基础核心组件的设计、研发工作,对内提供统一的用户、菜单权限、登录认证、对象文件以及平台所管理的所有资源的台账、监控指标和调用底层设备执行命令等功能接口。
技术选型包括golang作为主要开发语言,python、shell为辅助开发语言。使用redis保存登录认证缓存、台账基础信息和最新监控指标数据; 使用nsq实现服务间的异步通讯、高并发数据缓冲和服务间的广播通知;nginx作为web访问的反向代理,后台负载到k8s的工作节点;mariadb为数据的主要存储方式,保存所有业务数据;使用influxdb保存监控指标数据,为图形化展示提供数据支撑;mongdb保存一些agent执行命令和返回结果的记录;使用seaweedfs主要保存一些页面使用到的一些图标、图片以及附件之类的小文件。
在整体过程中,当时搭建openstack和k8s比较困难,那是虚拟化逐步开始流行起来,之前没接触过这类的技术资料也不多,就只能看日志、查官网、查资料方式一点点推进解决,但最终也成功的搭建起来并投入到实际生产中使用,openstack有20台服务器的规模,k8s有10个节点的规模。
有一个IP五元组的采集服务,采集每台主机上的IP五元组信息,每2秒上报一次,大概有3000台服务器的规模,数据并发高,后台服务接口处理不满足性能要求。最终使用消息队列+分布式架构的方式解决此问题。