李杰 张攀翔
摘 要 伴随当今通信技术的日益发展与完备,通信市场领域开始出现日渐激烈的竞争,对移動运营商网络性能要求也越来越高,而在整个移动网络系统中,为用户提供接入服务的基站系统占据着重要地位。而基站的保障和高效运行,关键在于如何高效处理基站告警。
【关键词】基站告警准实时统一监控 基站告警预处理决策树
随着业务的发展,基站的运维管理越来越自动化,在各种的自动化监控告警设备的加入,针对基站的告警信息越来越多,如何高效的管理这些告警信息,避免日常的运维陷入海量告警的汪洋之中,是本文要讨论的要点 。
1 告警信息的压缩
越来越多的自动化设备产生的监控告警,在大量告警风暴来临的情况下,要解决以下2个重要问题:
(1)如何在告警风暴时压缩告警;
(2)如何快速从大量告警中找到故障根源。
压缩告警风暴,可采用按照告警重要程度进行压缩,基站故障告警信息按照重要紧急程度可分为一般不紧急告警、一般紧急告警、重要不紧急告警、重要紧急告警四大类,首先从告警的重要紧急程度收敛告警信息。
其次,告警信息是分层次的, 每一层的告警又可分为原子告警,衍生性告警。因此,故障告警的报告,以重要性从最高层往最低层报,每层中重要性从原子告警到衍生性告警报,从而减少告警风暴。如图1所示。
2 告警故障树自动化分析
如何快速从大量告警中找到故障根源,采用故障树分析方法,从告警源头按照安全手册,利用运维经验和故障案例,设定每个推理节点的判决条件,当告警信息出现时,利用故障树自动化分析平台,实现故障告警的预处理,协助运维人员快速找到故障根源。
故障树分析(Fault Tree Analysis,简称FTA)又称事故树分析,是安全系统工程中最重要的分析方法。事故树分析从一个可能的事故开始,自上而下、一层层的寻找顶事件的直接原因和间接原因事件,直到基本原因事件,并用逻辑图把这些事件之间的逻辑关系表达出来。
构建基站故障树分析的原则有以下:
原则一:告警从高层向底层,在逻辑层次上面,越根源性的告警越先判断。
原则二:从原子到衍生告警。
原则三:推理树的建立根据告警来定。
原则四:验证规则,根据经验和知识库来定。
以IP相关的告警为例(如图2所示)。
当创建的故障树越全面的时候,对故障信息的预处理则越准确,为了准实时的自动化处理告警信息,使用spark streaming+hadoop处理告警和存储告警,整个基站告警信息预处理的框架如图3所示。
3 引入了消息队列机制,确保故障信息不丢失
为何要引入消息队列?因为基站的告警信息太多的时候,可能会因为后端处理能力不足,造成告警信息遗落,为了不丢失告警信息,这里我们采用kafka进行告警的缓存,避免还没来得及被消费的告警信息丢失。如图4所示。
Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。
kafka即使消息被消费,消息仍然不会被立即删除,日志文件将会根据broker中的配置要求,保留一定的时间之后删除,从根本上保障了告警信息的安全。
Kafka主要特点:
同时为发布和订阅提供高吞吐量。据了解,Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110 MB)。
可进行持久化操作。将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。通过将数据持久化到硬盘以及replication防止数据丢失。
分布式系统,易于向外扩展。所有的producer、broker和consumer都会有多个,均为分布式的。无需停机即可扩展机器。
消息被处理的状态是在consumer端维护,而不是由server端维护。当失败时能自动平衡。
支持online和offline的场景。
4 使用spark streaming+hadoop处理告警信息
如图5所示,使用Spark流处理告警信息,包括对告、消除告警等操作,这里使用spark的好处在于吞吐量高,容易维护。
Spark是一个类似于MapReduce的分布式计算框架,其核心是弹性分布式数据集,提供了比MapReduce更丰富的模型,可以在快速在内存中对数据集进行多次迭代,以支持复杂的数据挖掘算法和图形计算算法。Spark Streaming是一种构建在Spark上的实时计算框架,它扩展了Spark处理大规模流式数据的能力。如图6所示。
Spark Streaming的优势在于:
(1)能运行在100+的结点上,并达到秒级延迟。
(2)使用基于内存的Spark作为执行引擎,具有高效和容错的特性。
(3)能集成Spark的批处理和交互查询。
(4)为实现复杂的算法提供和批处理类似的简单接口。
5 总结
综上所述,搭建一个自动化基站告警预处理平台,将告警按照重要紧急程度进行压缩,尽量减少衍生性告警,突出原子性告警,使用运维经验和故障手册创建丰富的故障分析树模型,在spark当中自动化分析查找告警的根源。利用kafka保障告警信息的高可用性,结合spark在流处理实现基站告警的自动化分析,每一条告警推送到运维人员之前,就已经通过机器算法寻找到故障根源,减少运维人员重复机械的劳动,协助运维人员快速寻找基站故障的根源和解除基站故障告警。
参考文献
[1]甄云恒.基站告警监控系统的设计与实现[D].大连理工大学,2013.
[2]姚仁捷.Kafka在唯品会的应用实践[D].云计算,2014.
作者单位
中国移动通信集团广东有限公司 广东省广州市 510623