新一代NPM之我见

从网络数据看网络和应用性能不算是个新话题,由于其非入侵的部署方式和对复杂架构的普适特性,在被越来越多的IT专业技术人员所接纳。NPM(NetworkPerformance Management)产品覆盖的领域也逐渐从金融和运营商慢慢开始向各行各行业进行渗透。笔者从20年前第一次接触抓包软件起,就一直观察并亲历这个细分市场的发展和壮大,特别有感触,所以这一期就来简单谈谈NPM的发展史以及对新一代NPM的看法。

NPM发展到现在差不多经历了三个阶段。

(一)第一阶段是单机版的抓包分析软件,譬如大家耳熟能详的Ethereal, SnifferPro,Network Monitor等。严格来说,这些软件都还不算是性能管理软件,只是抓包工具。但是那个时候还都是10M的网络,先进一点的企业用的是百兆的网络,抓包工具能够hold住这种规模系统的排障需求;

(二)随着互联网的大发展,网络速度也从十兆上升到了百兆,然后很快又进入了千兆以太网。单机版的软件已经不能满足需求,于是业内推出了具有24*7抓包功能的硬件版本探针。由于数据包能够不间断地被实时抓取下来,那么对于众多且有价值的数据就能进行各项分析,生成各个维度的KPI,从而真正的进入了性能管理时代,也就是第一代NPM,算是发展的第二个阶段。

(三)一晃又是十多年的时间。随着各种应用的大爆发,企业的网络交互数据成指数级增长。第一代NPM在架构上已经不再具有先进性,逐渐有点跟不上“人民群众日益增长的美好生活需要”。

最明显的体现就是在通讯对的分析能力和提包速度上。在单台设备需要处理20Gbps甚至更高流量的环境中,每一分钟的原始数据包高达150GB,即使设置只保存包头,每一分钟的原始数据包也要20GB到30GB左右。第一代的NPM在这种情况下数据包的提取将耗时高达数分钟甚至更长,例如用户在分析一个持续5分钟的通讯对,就需要等待10分钟以上的时间,这很难令用户满意。

其次,针对虚拟化的监控要求。在虚拟化环境中,网络的流量在物理交换机设备上不能够被全部导出。很多业务组件的交互流量直接在虚拟机内部的虚拟交换机上都交换掉了。NPM如果缺失了虚拟化监控能力的话,就会造成监控盲点无法最终定位问题。

再次,对于应用的快速变化的适应。面向互联网的应用系统架构一般采用以集群堆集来提高处理能力,快速增加集群节点,动态调整资源分配会变得非常频繁,NPM需要能够记录所有的通讯对。在一个20Gbps的网络中,一分钟的并发量可能高达四五百万,如何把所有这些通讯对都保存下来并实时计算响应时间等KPI,而且还能进行关联分析,这也是一个极大的挑战。

这个时候具有横向硬件可扩展架构的新型NPM就应运而生。笔者认为,新一代的NPM(即第二代NPM)需要具备以下这些能力:

1. 高性能–40Gbps以上的处理能力和贴近储存的存包能力。在X86的体系架构中,对于有大量数据写入要求的场景,其实瓶颈不在CPU,也不再内存,而是在于磁盘I/O。所以在设计优良的体系架构下,存储是最先到达瓶颈的。由于NPM存包作为其基础功能,也是区别于DPI产品的重要基石,所以第二代PM应该能够在存储增强的情况下不断增大处理性能。另外,现代数据中心双活的核心交换的流量跑满活没有低于20Gbps的,如果处理性能达不到,基本就没法进行全流量分析了。

2. 快速的数据包提取。对于1小时的原始数据包里快速提取一个故障通讯对的数据包,要求能在1分钟内完成。网络工程师日常工作离不开数据包的分析,对于NPM这种全量捕获数据包的系统,由于无法知道出问题的系统,所以所有的数据包都必须保存。在千兆网络的时代,NPM的处理的流量也就4个Gbps。而到了今天,数据中心的局网在向40G,100G的交换迈进时,单台NPM的接入的流量可能就是原来的10倍。在老的架构下,提包速度一下慢了10倍,甚至造成长时间的提包卡死。而新一代NPM如果采用了多级索引的技术,完全可以把提包速度做到秒级。

3. 快速定位响应慢的问题。应用架构变得越来越灵活,负载有F5,反向代理nginx,数据传输要进kafka等队列,热数据要用redis等列式或者内存数据库。传统的通过流量(发送接受的数据包和字节)来发现问题已经变得越来越困难。需要有办法通过应用的回包速度来快速判断出问题的故障点。第一代NPM可以把故障时间定位在1分钟的精度。但是别忘了,在万兆时代,1分钟的数据包也是巨大的,通常一个100并发的中等频率的交易业务,一个后端会话在1分钟会产生几千到几万的数据包。试想如果没有一个自动的机制定位到响应慢的那几次交互,人工看包会是一个耗时费人工的过程。所以,第二代PM应该具备快速定位响应慢的交互数据包的能力。

4. 未定义应用的全量KPI生成。老的一代NPM对于应用的定义有着极高的要求,如果没有事先定义,分析能力就大打折扣。而新的应用系统一般都是集群化,新加一个集群节点或者修改IP是常见的操作,这就造成第一代NPM对新的变化无法进行分析,给运维带来极大的不便。而第二代NPM需要对未定义的应用也生成全量的KPI,这样即使业务系统出现变化,也能进行事后的KPI的分析。

5. 多维度的流量组合分析。老的一代NPM可以对流量按照IP网段,VLAN,QoS等进行区分,但是随着TAP网的广泛部署,第一维度以VLAN划分网段,第二维度以IP网段或者国家省份地址进行区分是一个非常典型的场景。所以,第二代PM需要能对各个维度,譬如vlan,站点,vxlan, QoS等进行自由组合分析。

6. 虚拟化的全面支持。第一层面是能够以虚拟化探针的形式部署在宿主机中,监控宿主机内部虚拟机之间的流量;第二层面是能够全面支持SDN网络,通过SDN控制器创建虚拟镜像端口或者其它方式来获得镜像流量,NPM要能够对VXLAN或者GRE的封装进行解析;第三个层面是要能够对公有云或者是公有云的私有化部署进行流量监控和分析。

7. NPM和APM有机的结合。这里的APM是指采用agent(俗称:插码)的方式进行监控。一直以来,NPM和APM各说各好互相攻击或者各自为战。在业务运维从稳态向敏态过度的当今形势下,NPM和APM结合的解决方案大有作为。全网大面的监控用NPM,做到面上全覆盖;具体到重要业务系统采用APM服务器端的Agent打点,深入到代码级别,直击问题的根源。

8. 拥抱人工智能和大数据。NPM作为旁路数据源,实际上拿到了非常有价值的数据,如何对这些数据进行提炼和分析,其实是各家厂商一直以来试图解决的问题。笔者认为NPM厂商应该更多关注网络层面的异常,从自己的强项出发,建立网络数据的知识图谱,采用模型算法解决好网络异常的自动发现,并应用于网络故障自动诊断。此外,也可以采用基于时间序列的数学预测模型,来解决网络流量和交易量的预测问题。

文章转载自公众号 神州灵云,作者 斯尼福老中医

发表评论