APP下载

一种基于网络旁路的应用系统通用监控与预警系统的设计和实现

2018-12-08臧其事谢立帆李思宇

网络安全技术与应用 2018年12期
关键词:旁路队列报文

◆臧其事 谢立帆 李思宇

一种基于网络旁路的应用系统通用监控与预警系统的设计和实现

◆臧其事 谢立帆 李思宇

(中国农业银行上海市分行科技与产品管理部 上海 200233)

随着银行IT建设的不断深入与发展,商业银行建立了大量的应用系统来提供各类服务,这些系统对性能有较为苛刻的要求,同时要求较高的报警响应。这些系统的监控与预警是一个通用的需求,需要一个集中与通用的监控应用系统来负责集中处理,同时不能损害原应用系统的性能,农行上海分行采用网络旁路技术作为基础,将现有链路上的网络包数据通过网络旁路设备导出,作为生产者将数据投放入Kafka集群进行分发,下游消费者通过Spark-Streaming流处理进行分析并告警,使用MLlib进行机器学习与预警。

网络旁路;Spark-Streaming;通用监控

0 引言

随着银行IT建设的不断深入与发展,商业银行建立了大量的应用系统来提供各类服务,例如柜面系统,ATM系统,叫号机系统等,这些系统无一例外的对性能有较为苛刻的要求,同时要求较高的报警响应。这些系统的监控与预警是一个通用的需求,需要一个集中与通用的监控应用系统来负责集中处理,同时不能损害原应用系统的性能,在最优情况下,不需要对旧有系统进行改造,避免增加额外的开发、测试与发布工作。基于上述需求,农行上海分行考虑采用网络旁路技术作为基础,将现有链路上的网络包数据通过网络旁路设备导出,通过大数据分析技术进行数据处理,从而解决这一通用需求。

本系统的基础是网络旁路技术,考虑到网络旁路产生的巨大的数据量,以及其源源不断产生流量的特性,本文是一个典型的大数据流处理应用场景,系统使用kafka作为消息队列,Spark-Streaming作为处理技术,hdfs作为网络数据存储。下文中,将首先介绍网络旁路技术,其次介绍本系统设计的基本框架与主要技术,最后进行应用总结。

1 网络旁路监控技术概述

传统系统监控有几种形式:一种是在系统中自行完成监控部分的功能,一种是通过硬编码的方式将自身的一些性能数据通过约定的数据结构提交至集中的监控中心,以上两种形式均需要大量的定制开发工作,故而基于网络的监控日益成为主流方式。而在基于网络的系统监控中,通常采用两种方式:一种是经由代理之类的串联方式,一种是经由旁路技术进行监控和采集。

网络旁路监控一般是指通过交换机等网络设备的“端口镜像”功能来实现监控,在此模式下,监控设备只需要连接到交换机的指定镜像端口,所以形象的称之为“旁路监控”。

相对于在网络上设置代理进行抓取和分析的串行监控而言,旁路监控具有非常大的灵活性,通常使用智能Hub或是智能交换机的端口镜像实现,对原有网络拓扑结构毫无影响。同时,通过旁路模式抓取镜像端口拷贝过来的数据,不会影响原有端口的转发效率,对于业务性能不会有任何影响。最后,即使旁路设备宕机或出现故障,现有业务依然继续进行,只会影响监控与分析系统,不会影响生产业务的正常进行。

2 系统设计与关键技术

本系统的设计目标是,在不改动原有业务系统的代码的情况下,通过网络监控技术抓取各个应用的网络包,监测各个应用系统的交易情况以获得性能参数,从而完成一种较为通用的监控系统。

2.1 总体设计

为了实现上述需求,本系统设计和构建了一个基于消息队列的、异步的生产与消费者模型的系统架构,采用生产-消费者这一经典架构,可以通过调节生产和消费者的数量使系统效率达到最大化,例如我行的ATM数量较多,从而可以通过部署多个消费者的形式处理大量的ATM性能数据,整体架构如图1所示。

图 1 系统结构模型图

系统包括如下几个部分:

原业务系统。原业务系统部署于生产服务器上,包括柜面系统,ATM系统,手机银行,网银,电话银行,叫号机等业务系统,这些系统是监控系统的监控对象。这些系统将产生大量的网络包,这些网络包就是需要抓取的内容。

网络旁路设备。网络旁路设备需要以通过交换机端口镜像的方式抓取,同时抓取规则被定义在了这里,通常是按IP进行抓取,以混杂模式抓取某一个IP对应网卡的所有包。网络旁路设备作为系统的生产者存在。

消息队列。由于采集产生了海量数据,而且这些数据的分布并不均匀,一次处理需要耗时从毫秒级到分钟级不等,所以必须采用异步架构处理,消息队列在此处负责海量吞吐,并负责连接生产与消费者。

消费者应用组。由于各个应用系统报文的差异性,例如有的是XML报文,有的是定长,有的是json。而是否压缩,是否经由加密机加密等情况将各个报文的处理变得更加复杂。所以下游消费者需要进行定制化配置与开发,以决定是否解密,是否解压,最终如何处理这些报文。

监控与预警服务。消费者根据配置的告警规则或学习到的异常模式,将符合规则的数据进行告警。告警分为被动监控与主动推送两种形式。被动监控由值班业务员进行24小时监控,主动推送则是将告警推送至一、二线支持与开发手中。

2.2 功能设计

(1)数据采集

数据采集处于系统生产者的位置,通过网络旁路的方式同步复制来自交换机的网络数据,并将采集得到的数据结果按不同的topic放入kafka队列。该功能是整个系统的基础部分,通过配置抓取规则,如指定的IP和端口,以及该规则与topic的对应关系,将抓取到的数据包放入消息队列供下游消费。

(2)数据分析

数据分析作为系统的消费者,主要接收来自网络旁路功能采集的网络报文数据,包括MAC地址、IP 信息、TCP包信息、以及报文内容等数据。通常以一分钟为一个观测单位,结合报文内容的具体特征,如返回码是否正确,是否超时等信息,得到一分钟内交易笔数,成功率,失败率,超时率等性能指标,根据历史数据得出baseline以及正常浮动范围,对于超出浮动范围的部分编制告警信息,并推送至报警服务。经过一段时间的历史积累后,使用MLlib对异常告警进行学习,识别异常模式并进行预警。

(3)展示与告警

数据展示主要是以图表方式呈现被监测设备性能历史数据,其图表如图2所示。

图 2 性能数据展示

对于超过浮动阈值的性能数据,以及接收到报文中的错误信息,将主动通过告警消息,短信,微信以及语音电话等方式通知运维人员。首先将报错信息推送至监控室的监控屏幕上,由运维值班人员进行24小时轮值处理。其次将报错投递给系统一、二线支持运维人员,必要时主动推送给开发。

2.3 关键技术

(1)网络旁路技术

网络旁路技术是本系统的基础,其基本概述与实现方式已经在上文中加以论述,此处需要重点指出的是,旁路数据量较大的时候,需要将整个网络划分为几个链路,在不同的链路上部署不同的旁路设备以提高性能。

(2)kafka

kafka是一种高吞吐量的分布式发布订阅消息系统,通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能,即使是非常普通的硬件Kafka也可以支持每秒数百万的消息,支持通过Kafka服务器和消费机集群来分区消息和Hadoop并行数据加载。本系统中,kakfa担任了消息队列的角色,需要特别指出的是,在本系统中,我们允许kafka存在一部分数据丢失的可能性,以提升性能。因为在我们看来,少量数据丢失不会对亿万级的样本空间产生什么影响,但是性能是这个系统的核心要求。

(3)Spark Streaming

Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的、具备容错机制的实时流数据的处理。支持从多种数据源获取数据,从数据源获取数据之后,可以使用诸如map、reduce、join和window等高级函数进行复杂算法的处理。最后还可以将处理结果存储到文件系统。本系统中,所有的数据消费者采用Spark Streaming对接Kafka消息队列,对数据进行流处理,将结果推送至告警服务,同时将解析后的报文明细存放至hdfs。

3 结语

农行上海分行的应用监控系统以网络旁路为基准协议,实现了对数据中心设备资源的实时监控,并将监测到的性能数据以图形方式直观显示出来,提高了设备管理的工作效率,为设备管理提供了一种安全高效的方式。同时完成了对于失效事件的主动告警,将错误信息及时推送给运维人员,将反应时间由分钟缩短到了秒级。由于使用了高安全性的SNMPv3协议,系统的安全性也得到了较为完善的保障,达到了性能与安全性的平衡,在类似系统的设计中具有一定的借鉴意义。

[1]施胜强.浅析计算机网络管理[J].计算机光盘软件与应用,2012.

[2]石贵民.基于旁路模式的流量监控及防护系统[D].福州: 福州大学,2009.

[3]周旭晨.网络流量监控系统的搭建应用与数据分析[D].武汉:武汉科技大学,2012.

[4]李涛,张亚群,刘岱平.面向服务的校园网流量监控系统设计与实现[J].现代计算机,2009.

猜你喜欢

旁路队列报文
基于J1939 协议多包报文的时序研究及应用
旁路放风效果理论计算
不停跳冠状动脉旁路移植术治疗非ST段抬高型心肌梗死效果分析
CTCS-2级报文数据管理需求分析和实现
队列里的小秘密
基于多队列切换的SDN拥塞控制*
浅析反驳类报文要点
冠状动脉旁路移植术后早期心脏康复对预后的影响
在队列里
丰田加速驶入自动驾驶队列