「自主研发」- EasyComps统一中间件运维工具包
Posted 火炉山蚁群
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「自主研发」- EasyComps统一中间件运维工具包相关的知识,希望对你有一定的参考价值。
「举一反三」
「继开源工具分享之后,本章系列文章将带来团队初尝自研的一些故事和技术分享、几个python模块、几个自动化空白工作领域等....」
1、作者介绍
刘超,移动云系统、中间件及存储产品运维工程师。负责MQ、Redis等中间件及云存储业务的维护及自动化运维工具开发工作。
2、前言
在介绍EasyComps之前,有必要先简单回顾一下移动云的中间件运维标准化工作。
在完成以上标准化工作之后,各个中间件呈现出整齐划一的样式,为后续的中间件自动化维护工作的开展奠定了基础。各个中间件负责人可以根据中间件的标准结构,编写统一的运维工具和脚本,适用于全网部署的标准化中间件,再也不用担心不同环境、不同部署方式对运维工具的执行造成困扰。
3、为什么需要EasyComps?
那么为什么需要EasyComps?它解决的是什么痛点呢?
让我们来看下中间件标准化工作执行一段时间后,中间件维护工作遇到的问题:
纵向来看,各个中间件整个生命周期的日常维护工作基本相同,主要有部署安装、监控管理、日常巡检、故障处理、配置变更、运行分析等,各个中间件负责人都要针对以上功能开发运维工具和脚本。
横向来看,一方面,不同组件的运维工具脚本有很多相似和共通的地方,如进程状态的检查、错误日志的分析、系统资源的查看等,而这些功能的实现都是基本相同的,只是不同的中间件需要传入不同的参数或路径。另一方面,各个中间件的目录结构都符合统一的规约,如日志文件都在/apps/logs目录下,配置文件都在/apps/conf目录下,有效规范了上述运维功能的参数或路径。
实际工作中,我们也发现不同的中间件负责人开发的运维工具和脚本中,有很多功能是相似或重复的,但编程语言、实现原理、实现方法和使用方式等方面各不相同,各个中间件之间的运维工具和脚本相互孤立,缺乏有效的统一和整合,不利于运维工具的管理和维护。
说到这,聪明的你一定明白了,EasyComps就是为了解决这些问题应运而生。
4、什么是EasyComps
EasyComps是Easy Components Operations的缩写,使用Python语言开发,旨在提供一个支撑标准化中间件维护工作的便捷的统一工具包。
范围上,EasyComps支持绝大多数IT应用场景,涵盖数据库、web中间件、高可用、负载均衡、消息队列、缓存数据库等应用领域,支持mysql、Tomcat、Keepaived、Haproxy、Rabbitmq、Redis等中间件。
功能上,EasyComps提供各个组件运行生命周期内的各项日常维护管理工作,如部署安装、日常巡检、监控管理、故障处理、运行分析等。
架构上,EasyComps提供了中间件维护的基础能力平台,作为各个中间件维护工具包的统一入口,封装了各个中间件运维管理工作所需的基础功能,供各中间件调用。
使用上,EasyComps提供了标准的程序包和统一的命令行接口,友好的帮助信息,可以便捷的部署、安装,也可以无缝地对接监控平台、运维平台等系统。
4、EasyComps架构
EasyComps的核心思想是构建一个中间件运维工具的基础框架,其自身实现中间件常见运维工作的基础能力,提供统一的部署、安装、调用和使用方式。各个中间件维护负责人在此框架的基础之上,只需要专注于中间件自身业务逻辑代码的编写,构建一个个的中间件维护包,对外提供统一的中间件维护能力。从而实现了中间件业务逻辑与底层维护能力的解耦合。
EasyComps的架构如下图所示,主要由四个功能模块组成。
底层平台提供工具安装、配置和运行的基本能力。最核心功能的是通过标准的包目录结构和命名规则,提供了调用各个中间件维护包的方法。同时,负责工具部署、安装及运行的各项基础参数设置。
基础功能模块提供了中间件日常维护工作常用的通用功能模块,供各个中间件维护工具包调用。如OS模块实现了对操作系统中文件、进程、端口等常见资源的操作,zabbix模块实现了对接zabbix监控系统的各类操作。
中间件功能模块专注于中间件业务逻辑本身,每一个中间件对应一个独立的中间件维护包,包内实现了对各个中间件常见的运维管理功能和方法。新增的中间件可以按照同样的方式加入到EasyComps体系。
使用接口支撑了EasyComps工具便捷的使用。安装工具后,可以使用命令行的方式执行工具命令,也可以使用import的方式导入python包。此外,工具还提供了友好的帮助手册和api接口查询。EasyComps具体的代码结构如下图所示 :
从代码结构中可见,在components包下面包含着各个中间件的维护工具包,它们都是以一个独立的包的形式存在,专注于自身中间件运维业务逻辑的实现,通过调用平台底层各个功能模块来实现OS、zabbix、巡检等功能。其他各个模块,如cmos包实现了对操作系统常见的操作方法,inspection包实现了常见的巡检功能,zabbix包实现了zabbix常用功能等。
5、EasyComps使用
(1)安装
EasyComps定位于在中间件运行环境上安装和使用,提供中间件维护的各种能力。在客户端安装时需要将EasyComps代码包拷贝至客户机,并执行如下安装命令即可完成安装。
python setup.py install |
安装完成后,会将EasyComps包导入当前python环境,并将EasyComps工具命令行导入当前系统变量。
(2)使用
EasyComps提供了标准命令行接口,并提供了友好的帮助信息。
当然,作为一个标准的Python包,我们也可以通过导入EasyComps包的方式使用,并进行二次开发和扩展。以执行redis工具包中查询redis服务运行PID号的方法为例:
命令行方式使用如下
说明:其中easycomps为工具名,exec为执行方法的命令,redis为redis中间件维护模块包的包名,getRedisPid为redis包中获取Redis程序PID值的方法。
包方式使用如下
from easycomps import Component component = Component() redis = component.getInstance('redis') result = redis.getRedisPid() print result |
(3) 便捷功能
① 命令自动补全
为了方便使用,EasyComps在centos环境中安装时,还会自动提取各个中间件维护工具包中的方法并完成bash_compelete的配置,从而使工具命令行执行时具备自动补全能,力,使用Tab键即可完成合法命令的自动补全。
② 方法模糊查询
工具提供了基于标准的正则表达式方式的方法查询功能,可以根据关键字及正则表达式模糊查询支持的方法。
③ 接口查询
EasyComps工具制定了规范的代码注释规约,在工具每次构建和发布时,都会根据代码生成工具的接口信息,便于使用时进行查询。
6、其他使用场景
除了以上基本功能之外,EasyComps还提供了一系列扩展功能,以更好的支撑中间件运维日常工作。
(1)巡检功能
EasyComps巡检功能可以给定比较值和比较选项(大于、小于等),与执行中间件维护包中的方法获得的值进行比较,并返回比较结果。
还可以在配置文件中配置多想巡检项目,通过载入配置文件进行批量巡检。
(2)zabbix功能
为了方便的对接zabbix监控,EasyComps提供了zabbix客户端操作的相关功能支持,如配置客户端监控,zabbix trapper方法等。在中间件主机上部署EasyComps后,可以方便的接入zabbix server,实现对中间件的监控。
(3)报告功能
EasyComps提供了生成简单报告模板的功能,可以根据巡检等方法执行的结果,便捷的生成巡检、健康检查等报告。
7、心得体会
EasyComps工具是我们中间件自动化运维工作的一个尝试,它封装和整合了中间件日常运维工具的基础和周边功能,使得中间件维护人员可以专注于中间件业务逻辑维护功能的开发,使得我们的中间件自动化维护工作迈上了一个新的台阶。
但同时,我们也看到,EasyComps工具本身并不能提供中间件运维的核心能力,这些还需要各个中间件维护人员结合中间件的架构和原理进行深入的研究和开发,EasyComps工具也需要随着中间件维护工作的发展和需求变化,而不断的改进和优化,从而进一步提升它作为一个工具平台的生命力。
以上是关于「自主研发」- EasyComps统一中间件运维工具包的主要内容,如果未能解决你的问题,请参考以下文章