什么是网络性能管理?
据garnter 2018的魔力象限定义为:
network performance monitoring and diagnostics (npmd) tools allow it operations to understand the performance of application, network and infrastructure components via network instrumentation, including insight into the quality of the end-user experience. the goal of npmd products is not only to monitor the network traffic and infrastructure to facilitate outage and degradation resolution, but also to identify performance optimization opportunities. this is conducted via diagnostics, analytics and root cause analysis capabilities to complement monitoring of today's complex it environments.
从网络数据看网络和应用性能不算是个新话题,由于其非入侵的部署方式和对复杂架构的普适特性,npm(network performance management) 网络性能管理解决方案被越来越多的it专业技术人员所熟悉,产品覆盖领域也从金融,运营商,慢慢开始向各行业渗透。笔者从20年前第一次接触抓包软件起,就一直持续观察并亲历这个细分市场的发展和壮大,深有感触,下面来简单谈谈我眼中的npm。
npm发展第一阶:单机版抓包分析
npm发展到现在差不多经历了三个阶段,第一阶段是单机版的抓包分析软件,譬如大家耳熟能详的ethereal, sniffer pro,network monitor等。ethereal是开源的软件,方便易用。sniffer pro是network general公司(后被netscout收购)推出的商用软件功能强大,但是价格昂贵。network monitor是微软windows server自带的组件,功能也挺强大的,但是附属于windows server,基本没有推广。严格上来说,这些软件都还不算是性能管理软件(npm),只是抓包工具。但是那个时候还都是10m的网络,先进一点的企业用的是百兆的网络。这一阶段抓包软件主要比拼的是解码能力,也就是谁支持的well known协议多。抓包软件发展到了今天,则由wireshark一统天下,由于开源的特性,wireshark的解码的协议个数无人能及。wireshark也成了一家独大的数据包离线分析工具。
npm发展第二阶:性能管理时代
随着互联网发展,网络速度从10m到了百兆,然后很快又进入了千兆以太网。那时,单机版的软件已经不能满足“人民群众日益增长的物质需求”,于是network general公司率先推出了具有24*7抓包功能的硬件版本探针,取名为infinistream,其实是infinite stream两个单词的组合。由于数据包能够不间断被实时抓取下来,那么对于这么多有用的数据就能进行各项分析,生成各个维度的kpi,从而真正的进入了性能管理时代,也就是第一代真正的npm诞生了。
npm发展第三阶:性能和功能持续提升
一晃十多年过去了,随着互联网应用爆发,电信运营商沦落为管道提供商,企业的网络交互数据成指数级增长。第一代npm在架构上已经不再具有先进性,逐渐有点跟不上“人民群众日益增长的美好生活需要”。这个最明显的体现就是在通讯对的分析能力和提包速度上。在单台设备需要处理20gbps甚至更高流量的环境中,每一分钟的原始数据包高达150gb,即使设置只保存包头,每一分钟的原始数据包也要20gb到30gb左右。第一代npm在这种情况下数据包的提取将耗时高达数分钟甚至更长,试想用户在分析一个持续5分钟的通讯对,需要等待10分钟以上的时间,是不是很难令用户满意。另外,在一个20gbps的网络中,一分钟的并发量可能高达四、五百万,如何把所有这些通讯对都保存下来并实时计算响应时间等kpi,这也是一个极大的挑战。这个时候具有横向硬件可扩展架构的新型npm就应运而生。
新一代npm具有什么样的特征和能力?
1. 40gbps以上的处理能力和贴近储存的存包能力
在x86的体系架构中,对于有大量数据写入要求的场景,其实瓶颈不在cpu,也不在内存,而是在于磁盘i/o。所以在设计优良的体系架构下,存储是最先到达瓶颈的。由于npm存包作为其基础功能,也是区别于dpi产品的重要基石,所以第二代npm应该能够在存储增强的情况下不断增大处理性能。另外,现代数据中心双活的核心交换的流量跑满的话没有低于20gbps的,如果处理性能达不到,基本就没法进行全流量分析了。
2.快速的数据包提取
对于在1小时的原始数据包里快速提取一个故障通讯对的数据包,要求能在1分钟内完成。网络工程师日常工作离不开数据包的分析,对于npm这种全量捕获数据包的系统,由于无法知道出问题的系统是哪个,所以所有的数据包都必须保存。在千兆网络的时代,npm的处理的流量也就4个gbps。而到了今天,数据中心的局网在向40g,100g的交换迈进时,单台npm的接入流量可能是原来的10倍。在老的架构下,提包速度一下慢了10倍,甚至造成长时间的提包卡死。而新一代npm如果采用了多级索引的技术,完全可以把提包速度做到秒级。
3. 未定义应用的全量kpi生成
老一代npm对于应用的定义有着极高的要求,如果没有事先定义,分析能力就大打折扣。而新的应用系统一般都是集群化,新加一个集群节点或者修改ip是常见的操作,这就造成第一代npm对新的变化无法进行分析,给运维带来极大的不变。而第二代npm需要对未定义的应用也生成全量的kpi,这样即使业务系统出现变化,也能进行事后的kpi的分析。
4. 多维度的流量组合分析
老的一代npm可以对流量按照ip网段,vlan,qos等进行区分,但是随着tap网的广泛部署,第一维度以vlan划分网段,第二维度以ip网段或者国家省份地址进行区分是一个非常典型的场景。所以,第二代npm需要能对各个维度,譬如vlan, 站点, vxlan, qos等进行自由组合分析。
5. 快速定位响应慢的问题
应用架构在变的越来越灵活,负载有f5, nginx,数据传输要进kafka等队列, 热数据要用redis等列式或者内存数据库。传统的通过流量(发送接受的数据包和字节)来发现问题已经变得越来越困难。需要有办法通过应用的回包速度来快速判断出问题的故障点。第一代npm可以把故障时间定位在1分钟的精度。但是别忘了,在万兆时代,1分钟的数据包也是巨大的,通常一个100并发的中等频率的交易业务,一个后端会话在1分钟会产生几千到几万的数据包。试想如果没有一个自动的机制定位到响应慢的那几次交互,人工看包会是一个多么耗时费人工的过程啊。所以,第二代npm应该具备快速定位响应慢的交互数据包的能力。
6. 虚拟化的全面支持
第一层面是能够以虚拟化探针的形式部署在宿主机中,监控宿主机内部虚拟机之间的流量;第二层面是能够全面支持sdn网络,通过sdn控制器创建虚拟镜像端口或者其它方式来获得镜像流量,npm要能够对vxlan或者gre的封装进行解析;第三个层面是要对公有云或者是公有云的私有化部署能够进行流量监控和分析。
7. npm和apm有机的结合
这里的apm是指采用agent(俗称:插码)的方式进行监控。一直以来,npm和apm各说的好,互相攻击或者各自为战。在业务运维从稳态向敏态过度的当今形势下,npm和apm结合的解决方案大有作为。全网大面的监控用npm,做到面上全覆盖;具体到重要业务系统采用apm服务器端的agent打点,深入到代码级别,直击问题的根源。
8. 以全量旁路数据为基础,提供大数据平台需要的数据源
现有的大数据分析平台,大量的分析对象是日志数据和数据库的提取数据。日志数据的实时提取以及精细化日志条目的打开都会对应用系统造成性能上的影响,数据库的数据获取也是如此。而网络的旁路数据先天的优势就是数据本来就在那里,只需要通过探针设备去获取,并且按照需要进行分析提取。譬如,如果要做访问关系的可视化,可以基于网络的tcp/udp通讯对的输出;如果要做业务的性能和业务精分,也可以通过探针对7层协议的拆解吐出业务字段到大数据平台来实现;此外,旁路全量的访问数据也可以为大数据安全分析提供重要的数据支撑。总之,随着大数据分析的不断普及和深入,全量旁路数据的价值越来越大。这就要求新一代的npm具备高精度的数据外吐能力,可以对接kafka,redis等各个大数据平台。
9. 拥抱人工智能和机器学习
前面说过,npm作为旁路数据源,实际上拿到了非常有价值的数据,如何对这些数据进行提炼和分析,自动发现网络中的隐患和异常,并能及时告知,理想情况还能自动提供修正建议。新一代的npm产品在解决好性能问题之后,就会在自动故障发现和诊断领域进行激烈的竞争。在前期没有大量训练模型让机器学习的情况下,自动故障发现还是比较依赖于npm厂商的设计者的经验,通过kpi的组合分析,是可以发现一些常见问题的(譬如:单向流量,应用可用性问题)。但是随着技术的发展,建立异常标注机制,收集异常数据,通过神经网络算法让机器进行自动训练学习,一定是未来的趋势。
10. 虚拟化和容器化带来的挑战
虚拟化的时代已经到来,npm通过把探针也虚拟化的方式,寻找到了一条自己的出路。目前对于虚拟化的环境支持,新一代npm在技术上还是有比较好的解决方案。但是,现在扑面而来的容器化的大浪,就有可能会把传统的npm打翻在地。虽然可以通过在容器里插入轻量级软探针的方式来获取到流量,但这种方式实际在流量识别上会有很大的问题,因为容器对外不再是一个拥有独立ip地址的实体。面对眼前的挑战,目前看到一个比较好的解决方案是npm轻量级软探针和apm插码探针进行深度集成,npm还是获取网络流量,但是通过apm取获得业务调用关系,两者有机地进行数据缝合。
注:笔者所在的神州灵云正是致力于新一代npm的产品研发,并且可以与自有apm产品进行无缝对接。神州灵云致力于为客户提供真正360°全方位的网络应用及业务性能管理解决方案集,助力企业从用户体验、效率和效益三个方面提升业务运营能力。如果有任何问题,可私信,随时联系交流。