基于Ansible自动化运维的信息系统故障预测技术
2020-06-11刘威
文/刘威
(深圳供电局有限公司 广东省深圳市 518000)
1 引言
改革开放四十多年来,我国经济飞速发展,各行各业的信息化水平不断提升。各类服务器集群业已成为工业企业主流发展趋势。传统的服务器,依靠运维工程师手工或者脚本的方式进行运维,难以适应当前阶段我国大规模服务器集群的各项需求。因此,我国企业已开始研发非手动服务器运维工具,使得服务器可以自动运维与自主运维,以推进各企业信息化进程,助推各企业数字化转型。以电网企业为例,我国电网企业大多仍然使用传统的Windows 与Linux 服务系统。电网企业的服务器越来越大,种类越来越多,结构越来越复杂,涉及面越来越广。这个时候,仅仅依靠运维工程师的传统手动运维模式是难以维护运营电网企业日益增长的服务需求。服务器运维的需求往往是批量化的需求,比如批量命令的运行、批量系统配置、批量部署程序等。这些批量化的需求,如果使用运维工程师进行操作,将耗费大量的人力与时间。Ansible 是新出现的基于Python 开发的自动化运维工具,尤其擅长批量系统配置、批量程序部署、批量运行命令,速度快且准确率高,可以有效满足当前阶段以及未来几年内我国电网企业服务器运维的需求。本文以此为逻辑起点,研究Ansible 框架与Ansible 工作流程等专业技术,构建基于Ansible 的自动化运维系统,详解运维系统的设计与实现过程,并对基于Ansible 自动化运维的信息系统故障预测技术进行研究,以期帮助我国电网企业提高运维效率,降低运维成本。
2 Ansible技术概要
2.1 基本框架
Ansible 是一种由各种模块而组成的框架,其本身并没有执行能力与部署能力。Ansible 的各个模块的执行能力与部署能力成就了面向服务器集群的Ansible 的批量系统配置、批量程序部署、批量运行命令等操作功能。Ansible 是一种设计极其简单的自动化运维工具,其开源性可不断迭代,支持多节点发布任务并可以远程执行。Ansible 工具可以跨平台的自动化运维,包括软件的自动化部署,自动化配置,自动化管理以及系统热升级等。Ansible 的常见模块主要包括command, shell, cron, yum, service。以上模块仅仅为Ansible 的常见模块,事实上,Ansible 的模块不断增加中。随着Ansible 的迭代升级,部分新模块将成为Ansible 的常用模块,已有常用模块可能被取代或者被整合。
Ansible 主要框架一般可以包括以下几个方面:
(1)连接插件connection plugins:负责和被监控端实现通信;
(2)主机目录host inventory:指定操作的主机,是在配置文件里面定义需要监控的主机;
(3)各种功能模块,例如service 模块、cron 模块等功能模块;
(4)借助于插件完成日志记录等功能;
(5)剧本playbook:playbook 在执行多个任务时,不是一定要让节点一次性运行多个任务。
2.2 工作流程
Ansible 或Ansible-playbooks 的工作流程如图1 所示。当用户启动Ansible 或Ansible-playbooks 时,用户可以在服务器的显示终端输入Ansible 的Ad-Hoc 命令集。比如-v,--verbose 表示需要输出更详细的执行过程信息。-m NAME,--module-name=NAME 的含义是指定执行使用的模块。而private-key=PRIVATE_KEY_FILE 则指代指定密钥文件。常见的Ad-Hoc 命令集有十几条,需要使用者灵活掌握。此时,Ansible 会遵循预先编排的规则将Playbooks 逐条拆解为Play,再根据命令集将paly 组织成Ansible 可识别的任务,这种任务成为Task。Task 的完成有赖于Ansible 的模块与插件。不同的模块与插件在任务完成的过程中发挥不同的作用。我们根据Inventory 中定义的主机列表通过SSH 将任务集以临时文件或命令的形式传输到远程客户端执行并返回执行结果。当结果可以被永久储存时,则结果自动保存;如果是临时性文件,系统将在任务完成后对临时性文件进行自动删除。
3 基于Ansible自动化运维的信息系统的构建
Ansible 拥有大量的命令,对于初学者来说,要想无障碍的使用Ansible 是具有相当的难度的。部分新入职的运维工程师在使用Ansible 工作效率很低。为了提升工作效率,运维工程师对于Ansible 进行二次开发,根据需求开发新的基于Ansible 的web 形式自动化运维系统,有效满足初学者的需求,简单易操作,界面友好,系统运行稳定。
Hosts 是一个没有扩展名的系统文件。我们可以对Hosts 进行管理,对Hosts 的内容进行分组,合适的情况下进行配置。Hosts的状态可以反映Ansible 服务器的种类、数量、系统、协议、端口等多种信息。
我们在使用Ansible 时,可以同时操作属于一个分组的多Hosts机,组和主机之间的关系通过文件配置。为了实现对Hosts 机批量运行命令的操作,需要在Hosts 机安装通讯软件,Hosts 机的系统为LINUX 时,安装SSH 即可。Hosts 机的系统为Windows 时,安装Winrm 即可。在批量运行页面中可以选择脚本,选择Hosts 机的分类,并选择目标Hosts 机。在确认运行后,系统可以先将脚本发送至Hosts 机的指定目录,再对脚本进行运行。我们通过系统测试,可以观测Host 是否运行脚本,脚本运行是否成功。当脚本成功运行时,系统返回Success,系统通过测试。
在Hosts 分组管理时,我们可以对Hosts 的类别进行添加或者删除。当Ansible 运行时,其脚本反映了Hosts 的数量与质量情况。在必要的时候,我们可以手动添加或者自动添加Hosts 机。Hosts配置是Hosts 管理的重要内容,它关联了主机的配置文件。
4 基于Ansible自动化运维的信息系统故障预测技术
4.1 基础数据
图1:Ansible 的工作流程
电力企业的设备,如变压器、发动机、压缩机等,其品牌、参数使用年限、使用时间、等数据称为基础数据。这些数据需要电力单位结合自身的数据规划进行相应的管理,而且还需要利用数据服务器使所有的数据实现同步,将这些数据统一存储到调度中心,然后再开展专门的整理和计算。以上电力设备在运行过程中产生了大量过程数据。这些数据十分庞杂,不断更新,对存储空间要求非常高。基于Ansible 自动化运维的信息系统产生的数据同样是过程数据的一部分,可以展示批量操作的时间、频率、类别与产生效果。这些数据的实用价值也相对较高,可以为电力系统的故障预测提供决策支撑。我国在电力系统的实时数据方面比较成熟,一般收集到的数据只需要建立比较稳定的接口就可以提高其准确性。电网企业各部门日常管理中产生的数据也应当在特定的范围之内进行共享和同步。日常管理的数据的分布与共享需要建设同步的共享平台,以便于不同部门员工获取与分析。以上数据,包括基于Ansible 自动化运维的信息系统产生的数据,仅局限于某个电网企业产生的数据。事实上,电力系统在运行中所得到的相关数据对于电力单位的发展产生十分重要的影响。市场经济类数据也可以为城市建设中电力行业的整体规划制定提供比较完整全面的参考依据。
4.2 系统结构
想要更加全面地分析电力故障,让于Ansible 自动化运维的信息系统能够更为高效、有序地开展工作,需要设计专门的系统结构。
系统结构包括主站和子站,其功能有着明显的不同。子站负责初次采集数据,将采集的数据交给主站。主站获得数据后,经过清洗、筛选、分列、排序等操作后,分析挖掘,得出相应的结论,输送给Ansible 自动化运维的信息系统。
SCADA/EMS 系统就是电网调度自动化系统,它可以调度海量的电网实时信息。基于SCADA/EMS 系统,电网系统运行有序,电网调度安全合理,电网质量和经济性均得到保障。
在SCADA/EMS 系统内,我们设计了防火墙系统保护系统的安全性。子系统已处于安全区域内,对系统数据可以做到实时传输。系统内部,拒绝一切监控与组网操作。我们采用Windows 作为操作系统与子系统的运行环境。相同的运行环境可以降低病毒入侵的风险。
4.3 预测过程
本文的电力系统包括一个主站与多个子站。子站现场对数据进行采集并进行初步分析,通过查询与流通等机制将分析后的数据传递给主站。主站和子站之间的通信可以采用TCP/IP 协议,也可以采用电话拨号的方式进行。主站接收了多个子站初步分析后的数据,对数据进行二次分析与处理,清洗无关的垃圾数据。这一目标的实现需要对传输的数据开展预处理工作,将过时、重复的垃圾数据清除干净。数据在预处理的过程中通过抽取、转换、清洗和监控,实现数据的处理。在数据抽取与清洗的工作完成后,我们开始进行基于Ansible 自动化运维的信息系统故障预测。当自动化运维系统的数据发送异常变化时,我们需要严查异常变化原因,并进行及时处理。同时,我们应发挥数据的监视功能,需要开展新一轮的数据预处理工作。对于经常发送故障的模块,电网企业应当在发生故障情况的原因清楚记录下来,形成特定稳定,并转化成作业脚本。当电网企业将每个脚本增加进入Ansible 自动化运维的信息系统时,信息系统不断完善,故障出错率将会不断降低。我们所要做的工作不是事后处理,而是事前预判。通过故障分析与预测,降低故障处理时间,使得运维工作人员明细电网企业运维工作常见的困难,了解故障发生的原因,积累经验。我们通过脚本不断优化Ansible 自动化运维的信息系统,为以后的应急处置提供更为全面的工具手段。
5 结束语
为了满足电网企业海量服务器与复杂服务器运维的多重需求,本文基于Ansible 设计开发了自动化运维的信息系统。该系统具备Hosts 管理与业务管理等多项功能。系统经过测试,可满足电网企业业务需求。基于Ansible 自动化运维的信息系统故障预测技术可以有效预测故障,避免故障发生。我们应加强定性预测与定量预测相结合,提高预测精度,降低预测成本。