基于网络流量的应用运维监控技术研究
2017-07-24乐振浒
◆林 诰 乐振浒
(中国银联股份有限公司 上海 200135)
基于网络流量的应用运维监控技术研究
◆林 诰 乐振浒
(中国银联股份有限公司 上海 200135)
随着互联网应用的快速发展,基于云架构的应用系统逐渐增多;经调查了解,业内常用的应用监控手段有四类,第一类是通过商用或开源软件对相关系统指标进行监控,第二类是对应用记录在数据库中的调用信息进行一次或二次的统计监控,第三类是在现有应用中嵌入监控代码进行应用的性能监控,第四类是通过日志归集及日志分析的方式来对应用进行监控和分析。以上的监控手段都需要应用进行配合实施,属于主动监控范畴,具有一定的应用侵入性。本文提出了一种基于网络流量的监控手段,将用户与应用之间调用所产生的流量进行旁路镜像,并对流量进行调用还原,通过一些设定的监控指标,更加客观的来监控应用的健康情况,提供了应用运维监控的新思路。
应用运维;系统监控;日志归集;网络流量;旁路镜像
0 引言
随着互联网应用的快速发展,基于云架构的应用系统逐渐增多;经调查了解,业内常用的应用监控手段有四类,第一类是通过商用或开源软件对相关系统指标进行监控,第二类是对应用记录在数据库中的调用信息进行一次或二次的统计监控,第三类是在现有应用中嵌入监控代码进行应用的性能监控,第四类是通过日志归集及日志分析的方式来对应用进行监控和分析。
以上的监控手段都需要应用进行配合实施,属于主动监控范畴,具有一定的应用侵入性。本文提出了一种基于网络流量的监控手段,将用户与应用之间调用所产生的流量进行旁路镜像(如SPAN),并对流量进行调用还原,通过一些设定的监控指标,更加客观的来监控应用的健康情况,提供了应用运维监控的新思路。
1 相关技术
最常见的四类监控方案的实现方式主要有:
1.1 系统监控
通过商用软件(如Patrol)或开源软件(如 Zabbix)进行监控,需要在应用端部署代理(agent),将应用的进程、线程或者中间件中的指标信息进行采集和展示。
1.2 应用监控
应用将调用的详细信息或者统计量信息记录在数据库中,监控程序采集数据库信息进行一次或二次统计后,再以图表的方式进行展示。
1.3 嵌入式监控
提供专门的用于监控的公共包,应用在编码时,调用公共包中的方式,进而完成对于应用自身性能的监控,可以了解到内部方法执行的具体信息。
1.4 日志监控
通过日志归集工具(如ELK),对云环境下的多应用主机的应用日志进行汇总归集,并监控关键字或相关的指标的统计监控。
2 基于网络流量监控技术的研究
以上的监控手段中,都需要应用配合进行实施,有可能会影响到应用自身的性能,并且监控的结果直接受应用本身吞吐数据正确性的影响。本文引入了基于网络流量的旁路监控技术,更客观真实的去体现应用的健康状态,下面分别介绍旁路监控、真实还原和指标统计的设计思想。
2.1 旁路监控的设计思想
可以使用多种流量复制的技术(例如包括SPAN、TCPCopy、SDN网络分发、分光等),将实际交易过程所产生的网络流量数据进行旁路复制,该监控技术不会对被管理应用产生任何影响,避免了传统监控方式所带来的性能风险。
2.2 真实还原的设计思想
可以通过对复制出来的网络流量进行实时分析,根据网络协议规范(例如包括 TCP、UDP等)及应用协议规范(例如包括HTTP,银联POS 8583规范等),将二进制网络流数据转化为运维人员可以直接看懂的交易报文。
2.3 指标统计的设计思想
对还原出来的报文数据,进行一次或二次分析,通过简单配置即可纳入监控,并以业务为导向,提供请求数量、成功率、响应时间、响应率、应答码、以及业务处理内部状态码等关键性指标,结合展示界面,实现应用可用性、性能的全面可视化。
3 基于网络流量监控技术的系统设计
旁路监控系统处理交易系统调用过程中所产生的流量数据(也就是请求和应答)。通过对流量数据的解析,可以获得调用的真实交互报文,并结合监控规则和统计规则,完成对应用系统的监控和告警。
3.1 网络流量监控系统架构设计
本架构主要分成三部分,分别是抓包单元,解析单元,以及监控展示单元。
抓包单元:主要负责将应用系统主机的所有进出流量进行复制,并引至流量接收服务器的网卡上。在流量接收服务器上使用网络抓包软件(如netsniff-ng,tcpdump),将镜像流量以pcap的格式保存至本地硬盘。
解析单元:主要负责对 pcap文件按序进行处理,根据 OSI七层模型,对下四层进行基础网络解析,对上三层参考国际或行业规范(HTTP rfc2616或者银联POS 8583规范)对数据进行深度解析,将明细数据记录,并同时发送至监控展示单元。
监控展示单元:该对解析单元发送过来的数据,按照设定的规则,进行流式计算、指标统计,并通过UI进行界面展示。
系统的架构设计如图1所示。
3.2 网络流量监控系统主要模块介绍
网络流量监控系统的主要模块的功能及实现介绍如下:(1)流量镜像模块
流量镜像模块主要将实际交易过程所产生的网络流量数据进行旁路复制(包括SPAN、TCPCopy、SDN网络分发、分光等),并引至流量接收服务器的网卡,作为整套系统的数据源。
(2)流量采集模块
流量采集模块主要负责将流量接收服务器网卡上接收到的镜像流量以 pcap的格式保存至本地磁盘(包括 Netsniff-ng、tcpdump等)。
图1 系统架构
(3)基础网络协议解析模块
基础网络协议解析模块主要负责对PCAP文件网络数据的链路层、IP层等底层协议进行数据解析,得到底层通用的主要字段信息。
(4)应用协议解析模块
应用协议解析模块根据行业规范(HTTP rfc2616或者银联POS 8583规范)对数据进行深度解析并得到协议所定义的字段。
(5)请求应答关联模块
请求应答关联模块根据应用协议标准规范对网络流量中的每一笔请求及应答进行关联撮合,并计算应用的请求处理时间。
(6)流式计算模块
流式计算模块主要通过SparkStreaming流式计算引擎来对大数据量的明细数据进行实时计算处理,并且具备良好的扩展性。
(7)指标统计模块
指标统计模块主要负责统计应用的TPS、成功率、响应率、平均处理时间、响应时间达标率、连续失败次数、无调用时间等等。
(8)UI展示模块
UI展示模块主要负责对各项指标进行以曲线形式、分布图、饼图等各种形式的前端直观展现,方便运维人员监控迅速发现以及分析定位问题。
3.3 网络流量监控系统依赖组件介绍
网络流量监控系统主要所依赖的组件介绍如下:
(1)消息中间件
消息中间件作为应用模块之间解耦的关键性组件,可以缓冲基础网络协议解析模块和应用协议解析模块之间可能会出现的处理速度及吞吐量不对等的问题,并且通过中间件的使用,则可以方便的使用分布式消息处理提高整体系统的处理速度。
(2)参数数据库
参数数据库主要负责配置和管理应用系统所对应的 IP地址的集合。这样可以在应用系统扩容或者缩容的时候,配合快速进行应用对应的IP的增减。
(3)明细数据库
明细数据库主要负责落地存储监控系统所解析出来的应用请求和应答数据,并按照切分好的字段来进行存放,可以用来进行分析及统计使用。
(4)指标结果库
指标结果库主要负责根据系统的监控规则,对明细数据进行一次或者二次的统计,方式可以是内存统计或明细结果的再统计等,得出的结果存储在数据库中,可以是TPS、应答码分布、响应时间分布等,供UI展示模块进行读取展示。
(5)流式计算引擎
流式计算引擎主要负责利用分布式计算的新技术应对大数据量的明细数据,进行实时计算处理,以满足大规模应用场景下的实时监控分析的需求。
4 结语
本文在研究现有应用监控技术的基础上,指出传统监控技术所存在的应用侵入性、不够真实客观、影响性能等问题;并从应用间交互的网络流量数据作为切入点,提出了旁路监控、真实还原、指标统计的设计思想,设计了一套基于网络流量数据的应用运维监控模型系统,完善和优化了应用的用户端监控体系。
[1]Marina del Rey,RFC 793:Transmission Control Protocol,IETF,1981.
[2]R.Fielding,RFC 2616: Hypertext Transfer Protocol --HTTP/1.1,IETF,1999.
[3]T.Berners-Lee,RFC 1945:Hypertext Transfer Protocol -- HTTP/1.0,IETF,1996.