关键词:自动化运维;基于卡方检验的节点故障分析;时间窗口;故障恢复调度;动态自愈脚本
0 引言
随着“十二五”规划建设完成,国内中大型企业信息化建设的发展由普遍建设逐渐转变为普遍运维及改造,企业的基础设施建设从集中计算架构全面转型为大规模资源分布式计算架构。国务院在“十三五”规划中指出,对于大规模资源管理与调度、运行监控与安全保障等关键技术的创新方面,仍有待增强。这种转型对企业信息系统运维及建设人员所提出的技能要求将极大地区别于传统系统运维和日常管理工作要求。例如,在中小型规模的基础设施维护模式下,仅需投入少量具备基本工具使用及开发技能的运维及建设人员,即可满足运维及管理工作需要。而面对大规模分布式云计算资源互联网化的应用场景,需投入更多的人力资源,才能满足企业在互联网应用模式下的精细化管理需求[1,2]。然而许多中大型企业的运维部门仍采用被动式和半自动式的运维方式,即在用户终端使用过程中发现故障后,运维人员才介入故障处理过程。同时,运维与应用建设过程存在脱节[3],导致运维及建设部门工作孤立,间接造成运维及管理效率的低下,例如,这类企业的运维人员经常疲于上报故障分析报告和运维例会,浪费了大量的时间。综上所述,目前互联网应用建设及运维的人力及时间成本高主要表现在以下几个方面:
1、运维人员重复性操作多,系统例行日常检查、运行数据采集等大部分工作离不开手工操作;
2、缺乏高效运维工具。中大型企业对系统的应用级监控需求迫切,各业务系统直接协同数据流向复杂,导致传统运维工具配置复杂,缺乏易用性,需通过投入大量人员培训的方式来扩展运维工具的应用范围及监控场景。运维人员疲于应对各类网络设备、服务器的配置及应用场景使用培训等工作,运维服务质量提升空间小。
相对于国内人工运维模式,国外大型互联网公司针对自动化运维模式提出了基于数据中心运维模式的理论,针对设备监控、巡检、部署、分析及自恢复等主要运维工作研究并开发了高效、易用、生命周期长的运维管理工具,目的在于减少运维过程中的人工干预,例如微软公司的自动化数据中心管理工具Autopilot[4]。国内研究机构也陆续开展了基于配置管理的自动化运维工具在企业的研究及应用[5]。通过建设运维配置管理数据库,一些企业对未来大规模集群自动化运维的前景进行了展望[6]。由此可见,自动化运维工具是未来企业摆脱对密集型人力技术服务的依赖和限制的必然结果。
为提高企业级信息系统的可用性,本文研究设计并实现了基于卡方检验的节点故障分析模型,研究实现了采用动态自愈策略的故障自恢复方案,解决了传统监控系统误报率高及故障自恢复成功率低的问题,适用于针对多企业级系统之间协同交互的数据、服务监控场景。
1 故障分析及自动恢复
节点故障分析模型应通过读取实时有效的运维基础信息来提供高级运维支撑,以实现基础资源、信息指标、事件管理。传统故障分析模型对于每台服务器都维护一个端口故障集,将检测到的端口故障信息添加进对应的服务器故障集中,在每个监控周期内比较故障数目和业务流属性,比较完成后根据匹配率,执行最接近的恢复模式。传统监控模式[7]将分布式、零散的故障信息呈现在信息控管中心中,同时辅助监控平台也向系统管理员推送异常信息。上述故障信息推送方式所带来的结果是,系统管理员必须及时查看并选择影响现场机器工作的故障并提交至上级管理部门,如若未及时提交故障信息将影响其工作效率。而在实际中,企业级信息系统的70%的运维工作由内部技术人员群体担任,无法针对短时间内爆发式的故障信息作及时反馈,因此,系统管理员的工作考核指标将受到影响。协助系统管理员对大量突发的零散故障信息进行及时有效的分析,是故障分析模型减少分析时间成本的重要指标,即减少零散故障信息的发送,辅助监控平台通过故障分析模型分析后,再向系统管理员推送有价值的故障原因信息。
1.1 基于卡方检验的故障分析模型
根据信息的时效性原则,对管理员有价值的故障原因信息来自于网络层、硬件层、虚拟机层、操作系统层、中间件层、应用软件层等监控对象,分布在不同节点,研究[8]证明,监控对象间动作关联度与置信度有密切关系。复杂的交互动作使得监控对象间相互影响,故障在对象间快速传播,某个对象的故障往往会造成多个模块报出异常。面向对象交互动作的故障检测,重点监测单个对象与其他对象的交互动作,当交互动作发生了改变,则表明该对象的状态发生了变化。将对象间调用频率作为检验的参考分布,当对象实际交互动作与参考分布不符,则表明对象发生故障。此处引入基于卡方检验的交互动作建模数学公式:
分布,利用其检验当前动作与参考模型的偏差。A是对象当前动作与期望动作符合相同潜在分布的程度,A值越高则监测状态与正常状态分布的偏差也就越大。通过计算置信度为a的阈值,将A与阈值进行比较,以此来判别监控对象是否出现故障。
1.2 应用节点服务动态自愈算法
应用节点服务报警处理通过两个层面实现自动化运维:监测层面,以平台为依托,提供准确故障定位信息;控制层面,通过编辑和传递脚本参数,实现动态执行脚本。
研究[9]证明,实现应用节点服务自恢复的思路,关键是处理动作关联。当监控模块检测到应用节点服务异常时,立即调度节点主服务器的脚本程序来执行远程命令,在第一时间内重启服务进程,通过该流程实现应用服务无人职守故障处理。但故障处理效果可能因实际故障发生原因而产生与预期不同的结果,例如节点服务自行恢复后,应用节点的服务性能无法达到发生故障前的指标;或在脚本程序执行后,应用节点的服务仍无法持续性地提供正常服务。一般后者发生的情况较为常见,例如因系统资源问题导致的服务进程受阻,或因服务进程相关联服务异常导致服务进程调用异常等,此处归结为第三方因素。研究[10]证明,解决第三方因素,本质上是排除动作关联的片面性。例如在应用节点服务进程卡死的情况下,当运行日志或数据占满系统存储资源时,单方面执行服务进程重启脚本无法清理系统存储资源,重启后的服务进程也就无法继续执行日志写入操作,导致服务持续性问题。同样地,服务相关联进程也是影响持续性问题的因素之一,例如,在该应用节点服务关联进程资源溢出时,可导致该服务在执行重启脚本后呈现假恢复状态,监控模块无法判断该状态是否正常。因此,需完善动作关联脚本及脚本运行条件,在脚本执行之前,应由故障恢复调度脚本动态地筛选出可执行脚本,并指定脚本执行顺序,算法思路如下图所示:
从表1对比看出,直接自愈模式直接执行故障恢复脚本,在恢复时间、成功率、数据一致性、对用户及性能的影响程度上均劣于动态自愈脚本的模式,但在应用节点数量递增,且应用系统之间的协同接口规模大的情况下,动态自愈模式资源消耗比直接自愈模式的适应性和安全性稍差。
2 实验与分析
测试场景1:应用节点异常后,监控模块在触发告警信息发送过程中,由于应用节点存在自动释放资源及负载均衡策略,其运行状态在正常与异常之间重复交替,可能造成告警触发条件重复执行。监控分为基于卡方检验的节点分析异常序列监控(模式1),以及功耗模块化监控[11](模式2)两种。
测试目的:测试由于网络抖动使得监控器与应用节点之间连接失败的情况下所带来的高误报率问题。
测试效果:触发告警条件后,告警进程并不执行发送告警信息的代码块,而是通过告警子线程进入异常状态监听期,在此期间,监听线程所侦测到的应用节点异常信息将按顺序写入异常序列;异常序列与现有异常模式匹配数据库进行异常信息比对。当异常序列比对成功,监听期将根据告警模型旧匹配算法计算得出的时间窗口值T,决定发送告警信息代码块的开始执行时间T1,异常状态监听期在执行时间T1后结束;当异常序列匹配失败且监听期超过最大时间窗口值TMAX,则发送告警信息代码块的开始执行时间T1为异常发生初始时间T0与TMAX之和,同时该异常序列写入异常模式匹配库,其时间窗口值T置为常数0。当再次侦测到相同异常序列时,告警进程将立即执行发送告警信息的代码块,以达到监控器及时告警的目的,除非人工干预或机器通过自主训练而更新异常模式匹配库中对应的T值,否则告警信息不会延迟。
测试分析:两种监控模式在同一网络环境中同时测试,抖动时长随机,从表2可看出,造成误报率高的原因是原始告警触发条件单一,监控器只能通过异常表象对短时间内的不同异常信息分别触发告警,监控模式2不仅增加了告警量,也难以保证告警的准确性。而模式1由于不增加告警量,减少运维人员分析异常信息的工作量,所以保证了告警信息的准确度。
测试场景2:告警信息发送后,自愈模块在执行脚本过程中,由于自愈脚本部分命令无法调配所需系统资源,可能造成自愈脚本非正常性地阻塞或中断。自愈模块分为基于动态检测的自愈模块(自愈1),以及基于puppet的自愈模块[12](自愈2)两种。
测试目的:测试由于自愈脚本执行异常导致应用节点服务可用率低的问题;
测试效果:当告警信息发送后,自愈1并不立即执行,监控模块此时触发异常诊断脚本,该脚本仅对异常节点所在的服务器进行数据收集,例如检测该机器CPU、内存、存储空间、进程占用资源情况、服务日志等重要数据信息。当执行自愈脚本每一行命令前,自愈1先判断上一行命令的执行结果,当执行结果为异常时,不执行本行命令,将上一行命令序号、执行异常信息记录并发送给运维人员,同时,中断当前自愈脚本的执行状态,直接执行备用环境切换脚本,增加异常节点恢复的几率;相反地,若上一行命令成功执行,则自愈1将根据重要数据信息动态地修改本行命令及命令参数,生成最优的执行命令,如下表所示,以达到提高自愈脚本命令行可执行率的目的。
测试分析:根据表3,自愈2造成应用节点服务可用率低的原因是自愈脚本恢复时间长,由耗时数据可以看出自愈2的响应速度比自愈1要慢5倍左右,同时节点自动恢复可执行率低,直接导致应用节点可用率低。而自愈1由于缩减了维修时间成本,因此提高了应用节点服务的可用率。
3 结论
信息系统运维的自动化不仅是减少人力成本的有效途径,更是一个提升中大型企业运维管理水平的过程,是信息化发展的新方向。在日常运维中合理有效地利用自动化运维工具,将有效减少运维人员的监控压力,提高故障告警准确率,不仅有利于运维管理员及时有效地掌控系统与设备的运行状态,也使维护人员从大量的重复项工作中解脱出来。在应用系统之间协同性不高的运维情况下,通过固化运维操作流程,动态生成恢复脚本的模式,可达到缩短系统异常恢复时间的目的。
参考文献:
[1] .Andreas Fürst,Thai Son Hoang,David Basin,Naoto Sato,Kunihiko Miyazaki. Large-scale system development using Abstract Data Types and refinement[J]. Science of Computer Programming,2016,131(12):59-75.
[2] .Jiang Xu. Research on Application of BIM 5D Tech-nology in Central Grand Project[J]. Procedia Engineer-ing,2017,174:600-610.
[3] .José Braga de Vasconcelos,Chris Kimble,Paulo Car-reteiro,Álvaro Rocha. The application of knowledge management to software evolution[J]. International Journal of Information Management,2016,37(1):1499-1506.
[4] .Michael Isard. Autopilot[J]. ACM SIGOPS Operating Systems Review,2007,41(2):60-67.
[5] .陈林,崔喆,袁德砦. 基于Web的运维流程管理系统的设计与实现[J]. 计算机应用,2015,35(S1):189-191.
[6] .徐培兴,陈伟,吴国全,高楚舒,魏峻. 一种面向软件配置管理制品的层次分类方法[J]. 软件学报,2017,28(06):1389-1404.
[7] .Rima Oudjedi Damerdji,Myriam Noureddine. Effect of Maintenance on Computer Network Reliability[J]. Inter-national Journal of Computer Network and Information Security(IJCNIS),2014,6(9):12-19.
[8] .Cheng He,Jiaming Li,George Vachtsevanos,Uchechukwu E. Vincent. Prognostics and Health Management of an Automated Machining Process[J]. Mathematical Problems in Engineering,2015,2015(12):1-10.
[9] .Orçun Yildiz,Shadi Ibrahim,Gabriel Antoniu. Enabling fast failure recovery in shared Hadoop clusters: Towards failure-aware scheduling[J]. Future Generation Computer Systems,2017,74(9):208-219.
[10] .Wenqian Shang,Di Liu,Ligu Zhu,Dongyu Feng. An Im-proved Dynamic Load-Balancing Model[J]. International Journal of Software Innovation (IJSI),2017,5(3):33-48.
[11] .Peter Bartalos,Yi Wei,M. Brian Blake,Haluk Dam-gacioglu,Iman Saleh,Nurcin Celik. Modeling energy-aware web services and application[J]. Journal of Network and Computer Applications,2016,67(5):86-98.
[12] .Peggy Wu,Jacquelyn Morie,Pete Wall,Tammy Ott,Kim Binsted. ANSIBLE: Virtual Reality for Behavioral Health[J]. Procedia Engineering,2016,159:108-111.
论文作者:雷向宇
论文发表刊物:《科技中国》2018年3期
论文发表时间:2018/8/6
标签:节点论文; 异常论文; 故障论文; 脚本论文; 信息论文; 模式论文; 对象论文; 《科技中国》2018年3期论文;