在日常IT运维工作中存在大量重复的日常工作任务,这些任务有的复杂繁琐数量大,有的严重依赖执行次序,有的需要等待各种条件具备之后方可执行。尽管IT运维管理的技术在不断进步,但实际上IT运维人员并未真正解放,目前许多企业的系统开启和关闭、系统更新升级、应急操作等绝大多数工作都是手工操作的。即便简单的系统变更或软件复制粘贴式的升级更新,往往都需要运维人员逐一登录每台设备进行手工变更。尤其是在云平台、大数据和海量设备的情况下,工作量之大可想而知。而这样的变更和检查操作在IT运维中往往每天都在发生,占用了大量的运维资源。如何通过智能化、自动化的作业工具,将运维人员从简单重复的工作中解放出来值得思考。我认为,IT运维的自动化、智能化实践可以从以下几个方面开展。
一、日常巡检自动化
日常巡检工作是IT部门日常运维工作中每天都要定时执行的工作,巡检工作内容简单但是需要重复执行。占用了IT运维人员的大量工作时间。通过自动化巡检可以将硬件状态,设备负载,系统时间,磁盘空间,线路流量,数据库表空间使用率、网络设备的端口状态、流量等进行自动巡检,并形成符合用户要求的巡检报告。目前我们已经针对基础架构、核心应用作了部分巡检工具,但因监控工具和手段尚不够全面覆盖日常巡检的所有内容,还需要继续完善,尤其是业务层面的自动化巡检。
二、故障修复自动化
日常监控是传统IT运维软件的基本功能。当告警明确后,人员就需要进行故障处理。故障处理可以分为四个阶段:源头发现、告警确诊、修复授权和故障维修。在这四个阶段中,源头发现和告警确诊主要将大量的告警进行收敛,将真正需要处理的告警进行明确化,并找到故障的原因(如一个业务进程僵死或者进程宕机)。在沟通授权阶段,当不能真正做到无需知会直接处理的时候,就必须进行人工干预和确认:故障维修将已经明确的故障根据原因进行自动修复(例如重启服务进程),需要人工确认的故障则需要人员参与半自动化修复。
三、容灾切换操作自动化
灾备中心切换是运维工作的一个重要组成部分,以容灾作业流程的方式实现容灾切换流程批量自动执行;目前我方已经搭建了双活数据中心,部分核心业务系统如网站、网上交易、订单系统等均已实现双活,但尚有部分核心业务系统因应用无法支持双活模式,需要借助第三方工具实现集群部署,也可以结合监控和脚本的逻辑判断实现智能化切换,尽可能减少宕机时间。
四、软件分发配置自动化
多应用系统Bug修复与厂商对产品的定期升级,会导致频繁的低风险变更,通过Server端发起批作业方式可自动实现大批量的软件配置分发与安装部署。通过向客户端下发备份脚本,备份业务数据、配置信息、环境参数,并停止客户端应用服务,然后批量下发新版本的安装配置文件、DLL文件等,最后启动客户端应用服务对应用的服务状态与相关日志信息进行检查,确认软件分发和配置工作成功完成。
五、配置管理自动化
配置库是记录和管理IT系统运行环境的基础组件,当公司的运行环境越来越庞大时,对这些基础组建的管理变成了配置管理员的一个巨大的工作量,尤其是这些组件还在不停的变化和关联。最好的方式是能自动从生产环境中提取配置库信息,自动更新到配置库中,保持配置库和生产环境的一致性。要实现对配置库的自动更新和同步,需要对应用系统进行标准化改造,比如规范化的安装路径、统一版本等,这将有助于工具能提取到应用程序配置项的基本信息,最终实现配置项和属性的自动更新。
六、资源申请自动化
目前互联网金融发展渐入佳境,一个创新业务的推出,往往我们很难评估业务量的增长速度和规模。如果资源准备不足,可能影响最终用户的用户体验和消费行为,如果一步到位投入过多的资源,有可能导致极大的资源浪费。如何破局?我们可以结合资源监控的手段,对一组或多组资源指标进行有效监控,根据资源使用情况进行动态伸缩。当资源不足时,按约定的规模比例部署节点,并加入到当前的运行环境。当资源利用率很低时,又可以回收资源,避免资源的浪费。目前我们在数据库扩容、私有云的动态伸缩方面做了一些尝试,类似的需求还包括文件系统、内存、CPU等动态添加或减少等,这方面还需要做更多的尝试。
七、任务分发智能化
信息技术部每天都会处理很多事件或服务请求,由于种类繁多,对于业务部门来讲,他们由于不熟悉信息技术部的人员分工,无法一步到位的选择相应的技术人员进行处理。以往在处理这类服务时,信息技术部会指定专门的人员对各种服务进行任务分发,占用了大量的处理时间、增加了人员需求。实际上,我们可以通过技术的手段,通过配置文件建立业务系统和技术人员的对应关系,这样在用户提交明确的服务请求时,就不需要专门的人员进行任务分发。我们还可以从历史处理事件中自动建立这种系统和人员的对应关系,这样我们连维护对应关系都不用了,系统将自动根据最近处理的对应规则智能选择待办人员,这对于用户不明确该任务属于哪类服务类别时将会更加方便、快捷。
八、服务请求接口化、自动化
用户习惯于在OA中提交申请或工作协作,但服务的内容需要技术人员在多个平台进行处理,比如资源申请类服务请求,需要打通OA、IT服务管理平台、虚拟化平台等多个系统的接口,这样对于一些常用的服务请求,我们可以实现在一个地方集中处理。同时打通接口可以实现任务自动完成,只要我们定义好接口规则,这样一方面可以减少技术人员的工作量,另一方面可以减少出错概率。举例说明,一个新员工入职,人力资源部只要在OA中提交一个入职流程,这个服务请求到达信息技术部后,系统能自动在后台调用OA接口自动创建一个OA帐号、调用邮件接口自动创建一个个人邮箱、调用虚拟化平台接口自动分配一个虚拟桌面、调用南方通接口自动开通即时通信帐号、调用IP电话系统接口生成一个IP电话等、同时这些资源的领用,通过配置接口自动在配置库中进行登记。通过多系统的集成接口,一个新员工的入职将变得更加简洁而高效,一个入职任务需要几天的工作,可能在几分钟内完成。类似的应用场景还有很多,如各类资源申请、防火墙策略、网络端口调整、文件摆渡需求等、这类服务请求在信息技术部每年的运维工作中大量存在,占用了技术人员大量的处理时间,完全可以通过定义好接口自动完成。
综上所述,实现运维智能化是运维工作未来的方向,也是业界目前研究的课题,部分物联网行业已经做了有限的尝试,并且取得了非常好的效果和用户体验。要实现运维智能化,前提是先要实现运维工作的流程化、标准化、自动化,由于历史的原因,我公司在这方面还不能一步到位的改造完成,但我们可以合理规划,前瞻性的布局,通过一段时间的积累和优化,逐步把我公司的信息系统改造成标准化、自动化的模式上,为最终的智能化打好基础。
以上提及的场景,是目前自动化、智能化运维比较适合的场景,自动化、智能化运维目前在业界也只是在起步阶段,我们需要在日常运维工作中,不断总结和发现适合自动化、智能化运维的场景,通过技术的手段进行处理、实现我们对IT资源的高效利用和快速交付。