自动化运维这个主题已经讨论了很久,从实践层面,也有很多案例,确实对应用系统的运维工作起到了推动作用,技术社群的这篇文章《金融企业自动化运维六大应用场景建设实践经验分享》给我们讲解了一些引用场景,值得学习。
自动化运维是一种将信息技术运维任务自动化的做法,通过自动化的手段执行一系列原先需要人工执行的动作,目的是提高运维效率、可预测性和减少人为错误,在实际工作中能通过自动化手段进行的操作,一般不建议采用人工方式进行。根据笔者多年金融工作经验,自动化运维涉及6大应用场景进行实践经验总结分享,但不限于以下应用场景方向,希望可以给大家提供经验参考。
一、是资源配置信息的自动化采集
众所周知,企业CMDB的成功运营对于提升企业的IT服务质量、运维管理水平和支持企业的持续发展具有重要意义。但是对于CMDB而言,最重要的就是数据的准确性和及时更新能力,维护CMDB数据准确性需要从两个方面入手,一方面是人工维护,此部分所占比重较低,主要是解决一些初始关系数据的录入问题;另一方面是尽可能利用各种自动化技术手段对资源配置信息进行采集,常用的技术手段包括,
(1)通过从操作系统获取的网络链接信息,计算出计算节点之间的访问关系,同时结合CMDB中的计算节点与服务之间的关系,计算出服务与服务之间的调用关系,继而计算出应用与应用之间、子系统与子系统之间、系统与系统之间的调用关系;
(2)通过从APM中获取的接口间的调用信息,并结合CMDB中接口与应用间的关系,从而计算出应用与应用之间接口的调用关系,同时基于APM的特性还可以计算出每一个业务请求在系统架构中的运行路径;
(3)通过OS中采集到的计算节点与数据库或者存储服务的链接关系,并结合CMDB中计算节点与服务的关系,从而计算出应用与数据库或者存储服务间存在的调用关系;
(4)通过消息中间件提供的服务查询接口,并结合CMDB中记录的中间件与应用以及消费者的关联关系,从而计算出通过消息中间件交互的应用之间的访问关系;
(5)通过OS中采集到的文件挂载点服务信息,并结合CMDB中计算节点与应用的关系,从而计算出若干个通过文件挂载服务进行交互的应用间的访问关系;
(6)通过对接数据服务平台或者组件,获取到哪些计算节点通过数据服务进行数据交互,并结合CMDB中记录的计算节点与应用的关系,计算出通过数据服务平台进行交互的应用;
(7)通过对接CDC等数据同步工具,获取到哪些数据库之间有数据同步任务,并结合CMDB中记录的数据库与应用间的关系,从而计算出基于数据库数据同步任务而发生的应用间访问关系;
(8)对接三方平台获取配置信息的,可以通过编写自动化脚本,通过API调用或者命令的方式进行采集。
二、是基础设施对象的自动化运维
业务系统正常运行离不开对其承载的基础设施资源。常见的基础设施资源有云主机、应用中间件、数据库、对象存储以及网络等,具体如下,
(1)云主机的自动化创建,自动化运维平台一方面设计一个云主机创建的需求清单,清单中能够需要包括但不限于CPU、内存、磁盘需求、资源负责人信息、所属应用、主机名以及用途说明。基于需求清单作为输入,自动化运维平台通过调用云平台的API接口创建云主机,并且在云主机创建后,将信息回填到CMDB中,将原来孤立的三部分数据通过自动化的方式串联起来,大大提升了云主机资源交付效率。同时,如果根据业务发展情况需要对云主机资源进行扩容,同样可以通过自动化运维平台进行;
(2)应用中间件的自动化创建,目前笔者维护的自动化运维平台,能够提供Kafka、Redis、Nginx、Tomcat、Resin、东方通rds(xc版)、东方通ths(xc版)、金蝶alb(xc版)、金蝶amdc(xc版)的自动化创建与后期自动升级,并自动回写CMDB。基于经验,这里的一些注意点如下:<1>集群类的中间件创建,例如kafka、redis,在创建完成后需要通过自动化的方式验证集群状态是否正常;<2>xc类中间件在创建过程中需要将授权证书放到正确的路径下,以防止启动失败;<3>在缓存类和消息类中间件运行过程中可以通过自动化运维平台实现对此类中间件的模拟访问,从而实现对此类中间件的可用性监控效果与中间件指标监控形成互补的关系;
(3)数据库自动化创建,目前笔者维护的自动化运维平台能够提供MySQL和Oracle单实例加用户以及OB数据库的租户、用户、权限自动化创建,并自动回写CMDB。为了提高数据库实例的交付速度,可以预先创建一些标准规格的云主机,进行池化管理,在需要时直接进行数据库部署,从而进一步提升数据库资源交付效率,但是为了防止资源浪费,池化的资源不宜过多,同时需要基于历史数据确定哪些资源需要提前池化;
(4)对象存储资源自动化创建,目前笔者维护的自动化运维平台通过与对象存储平台的API进行对接,同时基于类似云主机资源创建时的输入清单,自动化运维平台在对象存储上创建用户和桶,并将此信息和所属应用回写CMDB,实现闭环管理;
(5)网络权限开通自动化,通过设计标准化输入清单和输入格式,明确源端IP、目标端IP、端口以及协议信息,自动化运维平台调用网络设备提供的API接口或者命令,从而实现网络权限的自动化创建。同时,基于自动化方式创建的网络权限都会以台账的方式进行记录,方便后续的审计工作开展;
(6)中间件自动化升级,凡是基于自动化运维平台创建的中间件,都有配套的自动化升级流程,在由于功能或者安全需求需要进行升级时,平台可以自动化完成,提升了中间件升级的效率和可靠性;
(7)性能与容量监控,通过对各种中间件的性能与容量监控,可以发现潜在的问题,当发现此类问题时,自动化运维平台会调用ITSM生产中间件扩容工单。
三、是针对不同的角色提供丰富的工具箱
众所周知,开发、运维和测试人员对自动化运维能力都有各自的诉求与痛点。因此,如果能够收集这些痛点进行归类,并通过自动化运维平台实现,提供针对不同角色的工具箱,将大大提升相关工作人员的工作效率。截止目前,笔者维护的自动化运维平台提供了一些工具,具体如下,
(1)网络连通性测试,这个工具实现起来难度较低,但是在实际工作中用途很大,根据统计是所有工具中使用次数最多的。对于以下场景,相关人员使用该工具能大大提升工作效率:<1>确认网络权限申请完毕后,是否存在遗漏未开通的网络权限;<2>排查系统问题时,确认是否为网络不通导致的。
(2)VIP查询工具,自动化运维平台通过对接负载均衡设备获取VIP后端的真实云主机IP,并结合CMDB中的信息,定位到属于哪个应用,以及相关的负责人信息。使用场景如下:<1>处理安全问题时,需要确认某个公网IP对应的后端业务系统及负责人;<2>开发人员在排查系统问题时,有时要确认某个内部VIP对应的后端业务系统及负责人。
(3)对象存储key信息查询,在日常工作中,有时使用对象存储的系统需要确认某个key对应的文件是否存在,自动化运维平台通过对接对象存储平台,根据用户输入的key值进行查询,使用该自助的方式可以开发同事在不用单独写代码和不直接接触对象存储情况下可以满足需求;
(4)日志或者过程文件自动化清理,自动化运维平台通过自定义脚本的方式定期清理应用系统产生的日志,也可以根据某些业务系统的个性化需求,按照文件名称或者保留文件数等进行清理工作;
(5)文件同步,笔者维护的自动化运维平台可以借助制品库的空间进行中转,从而实现文件同步的效果,对比于专业的文件同步工具,可以根据用户的需求,按照文件名称的格式进行精细化管控,并且在文件同步后可以针对文件进行其他操作,但是相比于专业的文件同步工具,这种方式也存在缺点主要体现在无法实现文件的实时同步;
(6)其他,笔者维护的自动化运维平台工具箱中还有很多其他工具,例如文件系统自动扩容、ftp服务自动化配置、nfs/cifs文件共享自动化配置、kafka topic相关信息查询、配置文件字符串批量提换、文件备份、密码管理等。
四、是利用自动化运维平台能力构建相应专项工作台
对于某些场景,可以利用自动化运维平台的能力构建相应的专项工作台。笔者根据自身实际经验,列举几个场景供参考,
(1)安全工作台,近些年国家对于信息安全的要求越来越高,各个企业也开始对信息安全的投入越来越大,一般而言在发生安全事件时,应该有一系列的标准操作流程和相应的工具或者操作手段,通过对标准操作流程和应对手段的详细梳理,可以基于自动化运维平台将这些操作流程和手段全部自动化,构建符合自身企业特点的安全工作台,大幅提升安全相关工作的效率和降低操作难度,例如IP自动化封禁、VPN添加白名单、资产紧急关停、日志快速查询、上网访问控制黑名单、终端互联网一键断网、webshell一键隔离等;
(2)业务系统运维管理工作台,对于某些重要的业务系统,可以将该业务系统下所有应用的服务的启动和停止、相关中间件服务的启动和停止、相关中间件指标的自动化查询服务等进行汇总,构建专项服务某个业务系统的运维管理工作台,实现常规运维操作的一站式管理,提升工作效率;
(3)灾备云工作台,通过结合CMDB中的数据,用户可以在自动化运维平台上自助选择需要在灾备云上恢复的云主机以及应用版本,平台会生成恢复该云主机所需的元数据配置信息(灾备云平台不提供API接口,只能按照其规定的格式填写元数据配置信息清单,若没有配置信息清单的自动化生成,编写元数据配置信息将是一件非常消耗人力的工作),用户只需直接复制该配置信息到灾备云平台上进行粘贴,即可快速按需恢复相应的云主机和应用版本;
(4)SQL自动化执行(开发测试环境)工作台,自动化运维平台基于开发和测试同事的需求,一方面需要满足用户原本的SQL存放习惯,同时又不能类似生产环境SQL自动化变更对于操作步骤和约束管理的太严格,另一方面用户又希望能够利用自动化的方式帮助提升工作效率。因此,笔者结合用户两方面的需求提供的SQL自动化执行工作台,支持用户根据自己的习惯配置SQL源文件的路径,支持按需从多个文件路径中选择多个SQL文件,支持在开始执行前自由设置当出现一个SQL文件执行错误后的后续处理方式(跳过错误或者中止)。总体来说,SQL自动化执行工作台在符合开发和测试人员操作习惯的基础上大幅提升了工作效率和安全性。
五、是自动化运维与ITSM的结合
在实际工作中,对于有一定规模的企业,往往都会有ITSM系统,根据笔者的经验,自动化运维平台与ITSM结合存在以下优点,
(1)服务自助化,可以将常用的自动化运维需求通过服务菜单的方式在ITSM上提供,一方面基于ITSM提供输入清单,录入完成某项工作所需的信息,另外一方面ITSM系统与自动化运维平台进行对接,调用自动化运维平台执行具体操作,并且将结果回写到ITSM流程工单中。同时,ITSM系统也会和CMDB进行对接,使得每个服务单都可以与CMDB中的应用进行关联;
(2)流程可跟踪,某些任务的完成需要多个自动化任务的组合才能实现,每个自动化任务执行前和执行后需要相关人员的同意或者处理,基于ITSM流程工单,就可以将多个自动化任务串联起来,并且设置所需的审批节点,实现对流程的跟踪和闭环管理;
(3)流程执行记录可审计,根据管理要求,如果某些自动化运维流程不允许绕过ITSM流程工单执行,那么就可以将ITSM工单上执行记录与自动化运维流程自身的执行记录进行对比,从而审计是否存在违规操作的行为。
六、是权限与安全管理
在笔者看来,除了以上五个方面的自动化运维实践外,自动化运维平台由于可以批量对生产环境造成影响,其自身的权限和安全管理也非常重要,具体如下,
(1)平台的访问控制,自动化运维平台需要设置单独的访问入口,部署在安全级别较高的网络环境,且对于能够访问自动化运维平台的用户实行白名单管理;
(2)自动化运维工具在操作系统或者三方平台对接上的执行用户建议无特殊情况不要使用root或者admin等管理员权限;
(3)自动化运维工具自身的执行权限要有严格管控,建议通过白名单方式进行管理;
(4)通过自动化运维工具进行软件安装时,一定要校验目标路径是否存在,如果目标路径存在则退出并发送通知,只有在目标路径为空时才可以继续进行安装部署;
(5)所有自动化运维工具或者流程的执行记录都必须能够实现留痕,方便后续审计查询;
(6)对于按照一定频率重复执行的工具或者流程,应该配置相应监控,当工具或者流程执行失败的时候通过邮件、微信和电话等方式通知相应的负责人;
(7)凭证和密钥管理,自动化运维中使用的凭证和密钥需安全存储和管理,防止泄露;
(8)供应链管理,确保所有集成的第三方工具和服务都来自可信供应商且具备请求交互的审计功能。
七、总结与展望
自动化运维的服务对象包括开发、测试、架构、运维、安全等众多角色,本文基于笔者在自动化运维方面的实际工作经验,没有单纯从零散的自动化功能方面展开,而是结合实际工作中的场景,从数据的自动化采集、运维基础设施自动化运维、面向不同角色的自动化运维工具箱、面向特定场景的自动化运维工作台、自动化运维与ITSM的结合以及权限与安全管理等角度入手,分享如何将自动化能力在各个实际工作场景中发挥出其应有的价值。
自动化运维平台负责人,一方面应该收集各个不同角色的自动化运维需求,另一方面应该主动联系各个角色主动挖掘其潜在的自动化运维需求,目的是为了通过自动化运维在提升工作效率的同时保证操作安全可靠。
同时,随着AI技术发展,自动化运维平台与AI技术的融合,创新出更多的场景。例如以下场景,
一是AI智能故障定位与分析。结合大模型技术和推理训练的自动化运维平台,能够帮助系统运维人员快速定位到根因,并且能够根据自身知识库与推理训练给出问题的解决方案。例如一个java程序发生了OOM(内存溢出),导致相关业务系统异常,平台不但能定位到异常的java程序,并且更够直接给出代码级的修复建议,大大提升系统维护的效率;
二是AI智能架构拓扑发现,在实际工作中,复杂业务系统的技术栈往往相对复杂,如果没有从最初就设计好架构,再加上系统间调用模式的多样性(API、配置文件、数据库、消息队列、数据同步等),那么在系统运行一段时间后,往往很难准确的梳理出系统间的访问架构,基于大模型技术与推理训练的自动化运维平台,能够通过对系统间调用的自动化采集,并模仿人工补充梳理调用关系的思路,完善系统的真实访问架构,为基于系统架构的关联影响分析、安全防护、架构迭代提供参考;
三是AI自动生成符合本地特色的自动化运维工作台。目前AI已经能够生成一些通用的代码,但是每个公司由于管理要求的不同,其自动化运维工作台一般是会具备一些本地化特色(页面功能布局、色调、操作习惯等),若能够基于大模型技术学习本地化特色,再结合自动化生成的代码,就可以快速创建出符合企业本地化特色的自动化运维工作台,大大降低人力成本。
除了以上三个示例,AI与自动化运维一定还有更多的落地场景,实现对企业更好的降本增效。
如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"