用于应用性能监视和管理的流簇解析的制作方法

文档序号:19286302发布日期:2019-11-29 23:35阅读:190来源:国知局
用于应用性能监视和管理的流簇解析的制作方法

本公开的主题通常涉及计算机网络的领域,并且更具体地涉及应用性能监视和管理。



背景技术:

应用性能管理或应用性能监视(apm)系统是企业可使用来评估在企业的数据中心中操作的应用的状态(诸如对于应用来说可能出现的可用性、负载、延迟和其他性能问题)的工具。一些常规网络依靠应用的内置监视实用程序,但是并非每一应用都包括这些实用程序。此外,对于具有数百或数千个应用的典型企业网络来说,采取这样的自组织方法以进行应用监视可能是站不住脚的。某些常规apm平台可能需要将代码注入到应用中以将应用与这些平台集成在一起。这是可能需要开发团队与被分派此后管理应用任务的团队之间的仔细协调的非平凡任务。这也会影响应用的性能,因为在应用的执行路径中直接地发生日志记录和其他监视特征。此方法也不适于企业不能修改的第三方应用和/或部署在外部的应用(例如,经由软件即服务(saas)或公用云提供商)。一些常规apm系统使用托管应用的服务器上的测量硬件和/或软件,然而其他apm系统可能依靠网络设备上的类似的工具。两种方法可负面地影响托管硬件和/或软件的性能。

此外,这些技术是不完整的,因为它们优于应用性能而忽视网络性能,或者反之亦然。

附图说明

图1图示依照实施例的用于提供应用性能监视(apm)的应用和网络分析平台的示例;

图2图示依照实施例的网络设备的专用集成电路(asic)的转发流水线的示例;

图3图示依照实施例的apm引擎的示例;

图4图示依照实施例的网络环境的示例;

图5图示依照实施例的请求和响应序列的示例;

图6图示依照实施例的用于将流解析成流簇以进行应用性能监视和管理的示例方法;以及

图7a和图7b图示依照一些实施例的系统的示例。

具体实施方式

概要

应用和网络分析平台可从在网络内操作的服务器(例如,物理和/或虚拟服务器)(有时也称为主机、端点、计算设备、机器等)和网络设备(例如,交换机、路由器、集线器等)捕获遥测(例如,流数据、服务器数据、进程数据、用户数据、策略数据等)。应用和网络分析平台可针对在网络中执行的一个或多个应用确定应用依赖图(adm)。使用adm,应用和网络分析平台可将流解析成不同粒度的流簇(flowlet),并且针对这些流簇确定基线度量。基线度量可包括用于流簇的传输时间、处理时间和/或数据大小(以分组和/或字节数为单位)。应用和网络分析平台可对照基线来比较新流簇以针对一个或多个应用评估可用性、负载、延迟和其他性能度量。在一些实施例中,应用和网络分析平台可使不可用性、负载、延迟和其他应用性能问题的修复自动化或者基本上使不可用性、负载、延迟和其他应用性能问题的修复自动化。

描述

图1图示依照实施例的应用和网络分析平台100的示例。由加利福尼亚州圣何塞的cisco公司提供的tetrationanalyticstm是应用和网络分析平台100的一个示例实施方式。然而,除非另外陈述,否则本领域的技术人员应理解的是,图1(以及通常在本公开中讨论的任何系统)只是应用和网络分析平台的一个可能的实施例,并且其他实施例可包括以类似的或替代次序或者并行布置的附加的、更少的或替代组件。在图1的示例中,应用和网络分析平台100包括数据收集层110、分析引擎120和呈现层140。

数据收集层110可以包括软件传感器112、硬件传感器114和客户/第三方数据源116。软件传感器112可在网络的服务器内运行,所述服务器诸如物理或裸机(baremetal)服务器;管理程序、虚拟机监视器、容器编排器或其他虚拟实体管理器;虚拟机、容器或其他虚拟实体。硬件传感器114可驻留在交换机、路由器或其他网络设备(例如,诸如独立分组监视器这样的分组捕获(pcap)器具、连接到网络设备的监视端口的设备、沿着数据中心的主干线串联连接的设备或类似的设备)的应用专用集成电路(asic)上。软件传感器112可从服务器捕获遥测(例如,流数据、服务器数据、进程数据、用户数据、策略数据等),而硬件传感器114可从网络设备捕获网络遥测(例如,流数据),并且将遥测发送到分析引擎120以用于进一步处理。例如,软件传感器112可嗅探通过其主机的物理或虚拟网络接口卡(nic)发送的分组,或者每个服务器上的单独的进程可将遥测报告给软件传感器112。硬件传感器114可以线路速率从托管硬件传感器的网络设备的所有端口捕获网络遥测。

图2图示用于网络设备的asic的单播转发流水线200的示例,所述网络设备可以线路速率在对cpu有最小影响的情况下捕获网络遥测。在一些实施例中,一个或多个网络设备可以并入用于实现转发流水线200的ase2或ase3asic。例如,某些实施例包括由cisco提供的利用ase2或ase3asic或等效asic的一个或多个cisco9000系列交换机。asic可以具有多个分片(例如,ase2和ase3分别具有六个分片和两个分片),其中每个分片表示具有入口转发流水线210和出口转发流水线220两者的交换子系统。入口转发流水线210可包括输入/输出(i/o)组件、入口mac212;输入转发控制器214;以及输入数据路径控制器216。出口转发流水线220可包括输出数据路径控制器222、输出转发控制器224和i/o组件、出口mac226。这些分片可以连接到广播网络230,所述广播网络230可以提供来自每个分片的点对多点连接和各片之间的全部连接。广播网络230可提供足够的带宽以同时支持所有分片之间的全线路速率转发。当分组进入网络设备时,分组通过入口mac212的端口驻留在上面的分片的入口转发流水线210,遍历广播网络230以进入出口分片,然后通过出口分片的出口转发流水线220。输入转发控制器214可从入口mac212的端口接收分组,解析分组报头,并且执行一系列查找以确定是否转发分组以及如何将分组转发到其预定目的地。输入转发控制器214还可生成用于输入数据路径控制器216存储和排队分组的指令。在一些实施例中,网络设备可以是直通式交换机,使得网络设备在将分组存储在输入数据路径控制器216的暂停缓冲器块(未示出)中的同时执行输入转发。

如所讨论的,输入转发控制器214可以对传入分组执行若干操作,包括解析分组报头、执行l2查找、执行l3查找、处理入口访问控制列表(acl)、对入口业务进行分类以及聚合转发结果。尽管以此顺序描述由输入转发控制器214执行的任务,然而普通技术人员应理解的是,除非另外陈述,否则在各种实施例的范围内,对于本文讨论的任何进程,可以存在以类似的或替代次序或并行执行的附加的、更少的或替代步骤。

在一些实施例中,当单播分组通过前面板端口(例如,入口mac212的端口)进入时,输入转发控制器214可以首先执行分组报头解析。例如,输入转发控制器214可以解析分组的前128个字节以提取并保存诸如l2报头、ethertype、l3报头和tcpip协议这样的信息。

随着分组通过入口转发流水线210,分组可以经历l2切换和l3路由查找。输入转发控制器214可以首先检查分组的目的地mac地址以确定是交换分组(即,l2查找)还是路由分组(即,l3查找)。例如,如果目的地mac地址与网络设备自己的mac地址匹配,则输入转发控制器214可执行l3路由查找。如果目的地mac地址与网络设备的mac地址不匹配,则输入转发控制器214可以基于目的地mac地址来执行l2交换查找以确定虚拟lan(vlan)标识符。如果输入转发控制器214在mac地址表中找到匹配,则输入转发控制器214可将分组发送到出口端口。如果对目的地mac地址和vlan标识符来说不存在匹配,则输入转发控制器214可将分组转发到相同vlan中的所有端口。

在l3路由查找期间,输入转发控制器214可将目的地ip地址用于l3主机表中的搜索。此表可存储用于直连附连的主机和学习的/32主机路由的转发条目。如果目的地ip地址与主机表中的条目匹配,则该条目将提供目的地端口、下一跳mac地址和出口vlan。如果输入转发控制器214对于目的地ip地址在主机表中未找到匹配,则输入转发控制器214可在lpm路由表中执行最长前缀匹配(lpm)查找。

除了转发查找之外,输入转发控制器214还可以对分组执行入口acl处理。例如,输入转发控制器214可以检查acl三元内容可寻址存储器(tcam)是否有入口acl匹配。在一些实施例中,每个asic可以具有每分片4000个条目的入口acltcam表以支持系统内部acl和用户定义的入口acl。这些acl可包括端口acl、路由acl和vlanacl等。在一些实施例中,输入转发控制器214可按照分片定位acl条目并且仅在需要的情况下对它们进行编程。

在一些实施例中,输入转发控制器214还可以支持入口业务分类。例如,从入口接口,输入转发控制器214可以基于分组报头中的地址字段、ieee802.1q服务类(cos)和ip优先或差异化服务代码点对业务进行分类。在一些实施例中,输入转发控制器214可将业务指派给八个服务质量(qos)组中的一个。随着分组遍历系统,qos组可以在内部标识用于后续qos进程的业务类。

在一些实施例中,输入转发控制器214可以收集在流水线中早期(例如,在分组报头解析、l2查找、l3查找、入口acl处理、入口业务分类、转发结果生成等期间)生成的转发元数据并且通过输入数据路径控制器216将它向下游传递。例如,输入转发控制器214可将64字节内部报头连同分组一起存储在缓冲器中。此内部报头可包括16字节的ieth(内部通信协议)报头信息,当通过广播网络230将分组转移到输出数据路径控制器222时,输入转发控制器214可将所述16字节的ieth(内部通信协议)报头信息追加到分组。当分组退出出口mac226的前面板端口时,网络设备可剥离16字节ieth报头。网络设备可以使用剩余的内部报头空间(例如,48个字节)来将元数据从输入转发队列传递到输出转发队列以供由输出转发引擎消费。

在一些实施例中,输入数据路径控制器216可执行入口计数功能、接纳功能以及用于无丢弃服务类的流控制。入口接纳控制机制可基于可用的缓冲存储器的量以及已经由入口端口使用的缓冲空间的量和业务类来确定是否接纳分组进入存储器。输入数据路径控制器216可通过广播网络230将分组转发到输出数据路径控制器222。

如所讨论的,在一些实施例中,广播网络230可包括提供asic的所有分片之间的连接的一组点对多点线。输入数据路径控制器216可以在网络设备的所有分片(包括它自己的分片)上具有到输出数据路径控制器222的点对多点连接。

在一些实施例中,输出数据路径控制器222可执行出口缓冲器计数、分组排队、调度和多播复制。在一些实施例中,所有端口可动态地共享出口缓冲器资源。在一些实施例中,输出数据路径控制器222还可执行分组整形。在一些实施例中,网络设备可实现简单出口排队架构。例如,在出口端口拥塞的情况下,输出数据路径控制器222可直接将分组排队在出口分片的缓冲器中。在一些实施例中,在入口分片上可以没有虚拟输出队列(voq)。此方法可简化系统缓冲器管理和排队。

如所讨论的,在一些实施例中,一个或多个网络设备可支持出口上多达10个业务类、通过qos组标识符标识的8个用户定义类、cpu控制业务类和交换端口分析器(span)业务类。每个用户定义类可每出口端口具有单播队列和多播队列。此方法可帮助确保单个端口将不消耗超过其缓冲存储器的公平份额并且对于其他端口引起缓冲器饥饿。

在一些实施例中,多播分组可以作为单播分组通过类似的入口和出口转发流水线,但是替代地使用多播表用于多播转发。另外,组播分组可以通过多级复制进程以便转发到多个目的地端口。在一些实施例中,asic可包括通过非阻塞内部广播网络互连的多个分片。当多播分组到达前面板端口时,asic可执行转发查找。此查找可解析与入口端口相同的分片上的本地接收端口并且提供在目的地多播组中具有接收端口的预定接收分片的列表。转发引擎可以在本地端口上复制分组,并且将分组的一个副本发送到内部广播网络,同时内部报头中的位向量被设置为指示预定接收分片。以这种方式,仅预定接收分片可以从广播网络的线接受分组。对于此组没有接收端口的分片可丢弃分组。接收分片然后可执行本地l3复制或l2扇出查找和复制以将分组的副本转发到其本地接收端口中的每一个。

在图2中,转发流水线200还包括流高速缓存240,其当与从asic收集的遥测的直接导出(即,数据硬件流)组合时,可使得能够以线路速率收集分组和流元数据,同时避免cpu瓶颈或开销。流高速缓存240可提供由网络设备发送和接收的分组和流的完整视图。流高速缓存240可在每分组基础上收集信息,而无需采样并且而不会增加延迟或者使网络设备的性能降级。为了实现这个,流高速缓存240可从转发流水线200中拉出信息,而不用在业务路径(即,入口转发流水线210和出口转发流水线220)中。

除了传统转发信息之外,流高速缓存240还可收集其他元数据,诸如详细的ip和tcp标志以及隧道端点标识符。在一些实施例中,流高速缓存240还可检测分组流中的反常,诸如不一致的tcp标记。流高速缓存240还可以跟踪流性能信息,诸如流的突发和延迟。通过提供这种级别的信息,流高速缓存240可产生流的健康状况的更好视图。此外,因为流高速缓存240不执行采样,所以流高速缓存240可提供对流的完全可见性。

在一些实施例中,流高速缓存240可包括用于补充反常检测的事件机制。这种可配置的机制可定义表示感兴趣分组的一组参数。当分组与这些参数匹配时,事件机制可触发关于触发了事件的元数据(而不只是累积流信息)的事件。这种能力可给予流高速缓存240对累积流信息的洞察以及对特定感兴趣事件的可见性。以这种方式,网络(诸如实现应用和网络分析平台100的网络)可更全面地捕获遥测并且不影响应用和网络性能。

返回到图1,由软件传感器112和硬件传感器114捕获的遥测可包括与单独的分组有关的元数据(例如,分组大小、源地址、源端口、目的地地址、目的地端口等);流(例如,在没有不活动的情况下在一定时间(例如,15秒)内发送/接收的或者在一定持续时间(例如,30分钟)内发送/接收的具有相同的源地址/端口、目的地地址/端口、l3协议类型、服务类、路由器/交换机接口等的分组的数量和分组的聚合大小);流簇(例如,作为原始请求或响应流的一部分而生成的子请求和子响应的流以及这些流的子流);双向流(例如,具有对应的源地址/端口、目的地地址/端口等的流的请求/响应对的流数据);流组(例如,用于与某个进程或应用、服务器、用户等相关联的流的流数据)、会话(例如,用于tcp会话的流数据);或指定粒度的其他类型的网络通信。也就是说,网络遥测通常可包括描述开放系统互连(osi)模型的所有层上的通信的任何信息。在一些实施例中,由传感器112和114收集的网络遥测还可包括其他网络业务数据,诸如跳延迟、分组丢弃计数、端口利用率、缓冲器信息(例如,瞬时队列长度、平均队列长度、拥塞状态等)和其他网络统计。

在一些实施例中,应用和网络分析平台100可将流解析成各种粒度的流簇(即,较大请求和响应的请求和响应的序列)。例如,对到企业应用的请求的响应可以对各种后端服务(例如,认证、静态内容、数据、搜索、同步等)产生多个子请求和子响应。应用和网络分析平台100可将流入分解成其组成分量以提供对应用和网络性能的更深入洞察。应用和网络分析平台100可实时地或基本上实时地(例如,在检测到流之后不超过几分钟)执行此解析。

应用和网络分析平台100可使流与发送或者接收该流的服务器、触发该流的应用或进程、应用或进程的所有者以及适用于该流的一个或多个策略和其他遥测相关联。由软件传感器112捕获的遥测因此可包括服务器数据、进程数据、用户数据、策略数据和其他数据(例如,虚拟化信息、租户信息、传感器信息等)。服务器遥测可包括服务器名称、网络地址、cpu使用率、网络使用率、磁盘空间、端口、登录用户、调度作业、打开文件和类似的信息。在一些实施例中,服务器遥测还可包括关于服务器的文件系统的信息,诸如存储在文件系统内的文件(例如,日志文件、配置文件、设备特殊文件等)和/或目录的列表以及用于文件和目录的元数据(例如,文件和/或目录的存在、不存在或修改)。在一些实施例中,服务器遥测还可包括物理或虚拟配置信息(例如,处理器类型、随机存取存储器(ram)的量、磁盘或存储装置的量、存储装置的类型、系统类型(例如,32位或64位)、操作系统、公用云提供商、虚拟化平台等)。

进程遥测可包括进程名称(例如,bash、httpd、netstat等)、进程标识符、父进程标识符、进程的路径(例如,/usr2/username/bin/、/usr/local/bin、/usr/bin等)、cpu利用率、存储器利用率、存储器地址、调度信息、nice值、标志、优先级、状态、开始时间、终端类型、由进程花费的cpu时间和发起了进程的命令字符串(例如,“/opt/tetration/collector/tet-collector--config_file/etc/tetration/collector/collector.config--timestamp_flow_info--logtostderr--utc_time_in_file_nametrue--max_num_ssl_sw_sensors63000--enable_client_certificatetrue”)。用户遥测可包括有关进程所有者的信息,诸如用户名字、用户标识符、用户的真实名字、电子邮件地址、用户的组、终端信息、登录时间、登录的到期日期、空闲时间以及有关用户的文件和/或目录的信息。

客户/第三方数据源116可包括带外数据,诸如功率水平、温度和物理定位(例如,房间、行、机架、笼门位置等)。客户/第三方数据源116还可包括有关服务器的第三方数据,诸如服务器是否在ip监视列表或安全报告(例如,由马萨诸塞州伯灵顿的加利福尼亚州桑尼维尔的公司、英国阿宾登的集团股份有限公司、华盛顿州西雅图的公司、纽约州纽约的通信公司及其他公司提供)上、地理定位数据和whois数据以及来自外部来源的其他数据。

在一些实施例中,客户/第三方数据源116可包括来自作为服务的配置管理数据库(cmdb)或配置管理系统(cms)的数据。cmdb/cms可以以适合的格式(例如,对象表示法(json)、可扩展标记语言(xml)、又一种标记语言(yaml)等))发送配置数据。

分析引擎120的处理流水线122可收集并处理遥测。在一些实施例中,处理流水线122可每100ms或更快地从软件传感器112和硬件传感器114中取回遥测。因此,应用和网络分析平台100可能不会错过或者比常规系统(其通常每60秒收集遥测)更不太可能错过“鼠标”流。另外,因为遥测表刷新如此频繁,所以软件传感器112和硬件传感器114确实不会或者比常规系统更不太可能由于存储器的溢出/缺少而丢弃遥测。此方法的附加优点是应用和网络分析平台代替网络设备负责流状态跟踪。因此,各种实施方式的网络设备的asic可以是更简单的或者可并入其他特征。

在一些实施例中,处理流水线122可滤出无关或重复数据或者它可创建遥测的摘要。在一些实施例中,处理流水线122可以处理(并且/或者软件传感器112和硬件传感器114可以捕获)仅某些类型的遥测并且忽略其余部分。例如,处理流水线122可以处理(并且/或者传感器可以监视)仅高优先级遥测、与特定子网(例如,财务部门、人力资源部门等)相关联的遥测、与特定应用(例如,业务关键应用、合规软件、医疗保健应用等)相关联的遥测、来自面向外部的服务器的遥测等。作为另一示例,处理流水线122可以仅处理(并且/或者传感器可以捕获)仅遥测的代表性样本(例如,每第1,000个分组或其他适合的采样速率)。

从网络的多个服务器(包括在虚拟化主机的多个分区内)并且从在服务器之间操作的多个网络设备收集和/或处理遥测可提供网络行为的全面视图。从多个视角而不是仅仅在位于数据路径中(或者与数据路径中的组件通信)的单个设备捕获和/或处理遥测可允许数据从各种数据源相关联,所述各种数据源可以被分析引擎120用作附加数据点。

另外,从多个视点收集和/或处理遥测可使得能够捕获更准确的数据。例如,常规网络可以由面向外部的网络设备(例如,路由器、交换机、网络器具等)构成,使得常规网络可能无法监视东西业务,包括针对同一主机上的vm到vm或容器到容器通信的遥测。作为另一示例,常规网络可以在那些分组遍历并入传感器的网络设备之前丢弃一些分组。处理流水线122可通过从多个潜在故障点捕获并处理遥测来基本上减轻或者消除这些问题。此外,处理流水线122可对照彼此来针对流(例如,来自源(物理服务器、管理程序、容器编排器、其他虚拟实体管理器、vm、容器和/或其他虚拟实体)、一个或多个网络设备和目的地的遥测)验证数据的多个实例。

在一些实施例中,处理流水线122可针对由多个传感器捕获的单个流来评估遥测的准确度并且利用来自单个传感器的被确定为最准确和/或完整的遥测。准确度可基于诸如网络拓扑这样的因素(例如,更靠近源的传感器可能更可能比更靠近目的地的传感器更准确)、传感器或托管该传感器的服务器的状态(例如,受损的传感器/服务器与未受损的传感器/服务器相比可以具有不太准确的遥测)或遥测量(例如,捕获较大量遥测的传感器可能比捕获较小量遥测的传感器更准确)。

在一些实施例中,处理流水线122可组装来自多个传感器的最准确的遥测。例如,沿着数据路径的第一传感器可以捕获流的第一分组的数据但是可以遗漏流的第二分组的数据,然而沿着数据路径的第二传感器可以发生相反情形。处理流水线122可组装来自由第一传感器捕获的第一分组和由第二传感器捕获的第二分组的流的数据。

在一些实施例中,处理流水线122还可将流拆开或者分解成各种粒度的请求和响应流簇的序列(例如,较大请求或响应的请求和响应的序列)。例如,对企业应用的请求的响应可以对各种后端服务(例如,认证、静态内容、数据、搜索、同步等)产生多个子请求和子响应。处理流水线122可将流分解成其组成分量以提供对应用和网络性能的更深入洞察。处理流水线122可实时地或基本上实时地(例如,在检测到流之后不超过几分钟)执行此解析。

处理流水线122可将遥测存储在数据湖(未示出)中,所述数据湖是通过用于各种类型的数据的大容量存储、巨大处理能力以及处理几乎无限的并发任务或作业的能力来表征的大规模储存库。在一些实施例中,分析引擎120可以使用来自马里兰州森林山的软件基金会的分布式文件系统(hdfstm)来部署数据湖的至少一部分。hdfstm是可缩放到数千个集群节点、数百万个文件和数千兆字节数据的高度可扩展和分布式文件系统。hdfstm的特征是其针对批处理的优化,诸如通过协调对数据所位于的地方的数据计算。hdfstm的另一特征是其对用于整个集群在一次写入、多次读取访问模型中实现数据一致性的单个命名空间的利用。典型的hdfstm实施方式将文件分成块,所述块的大小通常是64mb并且在多个数据节点中被复制。客户端可直接地从数据节点访问数据。

处理流水线122可将经处理的数据传播到分析引擎120的一个或多个引擎、监视器和其他组件(并且/或者这些组件可从数据湖中取回数据),诸如应用依赖映射(adm)引擎124、清单监视器126、流监视器128和应用性能监视(apm)引擎130。

adm引擎124可确定在网络中运行的应用的依赖性,即,不同服务器上的进程如何彼此交互以执行应用的功能。业务的特定模式可以与特定应用相关。adm引擎124可评估由处理流水线122处理的遥测以确定应用的互连性或依赖性以生成应用的图形(即,应用依赖映射)。例如,在用于web应用的常规三层架构中,web层的第一服务器、应用层的第二服务器和数据层的第三服务器组成web应用。根据流数据,adm引擎124可以确定存在与超文本转移协议(http)请求和响应相对应的在第一服务器的端口80上在外部服务器之间流动的第一业务。流数据还可以指示与应用服务器请求和响应相对应的第一服务器的第一端口与第二服务器的第二端口之间的第二业务以及与数据库请求和响应相对应的在第二服务器的第三端口与第三服务器的第四端口之间流动的第三业务。adm引擎124可以将此应用的应用依赖映射或图形定义为包括含有第一服务器的第一端点组(epg)(即,用于实现转发和策略逻辑的应用层或集群、应用和/或应用组件的分组)、含有第二服务器的第二epg和含有第三服务器的第三epg的三层应用。

清单监视器126可基于由处理流水线122处理的遥测来连续地跟踪网络的资产(例如,服务器、网络设备、应用等)。在一些实施例中,清单监视器126可以指定间隔(例如,每1分钟)评估网络的状态。也就是说,清单监视器126可周期性地拍摄网络的应用、服务器、网络设备和/或其他元件的状态的快照。在其他实施例中,清单监视器126可在发生感兴趣事件时捕获快照,所述感兴趣事件诸如应用经历超过应用延迟阈值的延迟;网络经历超过网络延迟阈值的延迟;服务器、网络设备或其他网络元件的故障;以及类似的情况。快照可包括与网络元件相关联的各种遥测。例如,服务器的快照可表示在捕获时在服务器上执行的进程、由每个进程利用的cpu的量(例如,作为时间的量和/或相对百分比)、由每个进程利用的存储器的量(例如,以字节为单位和/或作为相对百分比)、由每个进程利用的磁盘的量(例如,以字节为单位或者作为相对百分比)以及离一个或多个其他网络元件的距离(物理的和/或逻辑的、相对的和/或绝对的)。

在一些实施例中,在网络的变化(例如,服务器更新其操作系统或者运行新进程;服务器在新端口上通信;vm、容器或其他虚拟化实体迁移到不同的主机和/或子网、vlan、vxlan或其他网段;等)时,清单监视器126可向apm引擎130报警以确保应用和网络鉴于数据中心的变化保持像预期那样执行。

流监视器128可分析流以检测它们是否与反常或恶意业务相关联。在一些实施例中,流监视器128可以接收被确定为按预期表现(即,流到达网络设备或目的地的时间长度在阈值时间长度内)或者表现低于预期(即,流到达网络设备和/或目的地的时间长度超过阈值时间长度)的过去流的示例。流监视器128可利用机器学习来分析由处理流水线122处理的遥测并且基于与过去流的相似性来对每个当前流进行分类。在检测到反常流(诸如从源到目的地花费比指定时间范围更短或更长的持续时间的流、大小小于或大于指定量的流或先前被分类为网络攻击的流)时,流监视器128可以向apm引擎130和/或向呈现层140发送警报。在一些实施例中,网络可以在可信环境中操作持续一段时间,使得分析引擎120可建立正常操作的基线。

apm引擎130可负责监视并管理在网络内运行的应用。例如,apm引擎130可以在网络的变化时接收到来自清单监视器126的警报或者在流监视器128检测到反常流时接收到来自流监视器的警报。apm引擎130可评估遥测以精确定位性能降级的根本原因。在一些实施例中,apm引擎130还可执行修复任务,诸如负载平衡、将应用组件迁移得(在物理上和/或在逻辑上)更靠近在一起、使新服务器实例实例化(在专用网络和/或公用云中)以及对于有问题的服务器禁用网络连接及其他操作。

图3图示表示apm引擎130的许多可能的实施方式中的一个的应用性能监视(apm)引擎300的示例。apm引擎300可包括一个或多个性能前端进程(pfe)310、协调器集群320和遥测暂存器330。虽然apm引擎300在此示例中包括具体组件,但是本领域的普通技术人员应理解的是,apm引擎300的配置是一个可能的配置并且具有更多或更少组件的其他配置也是可能的。

图3示出与传感器302通信的pfe310。传感器302表示图1的软件传感器112和/或硬件传感器114的许多可能的实施方式中的一个。在安装在数据中心的服务器和/或网络设备上之后,每个传感器302可经由与pfe310中的一个或多个进行通信来向协调器集群320注册。在成功注册后,传感器302可以开始捕获遥测,包括流数据、主机数据、进程数据、用户数据、策略数据等。传感器302可以不时地接收新配置信息,诸如以捕获用于诊断目的或者用于软件升级的附加遥测。在一些实施例中,apm引擎300可以以高级平台无关格式对配置信息进行编码。在一些实施例中,每个传感器302可确定其服务器的操作环境,将高级配置信息转换成平台特定配置信息,并且基于操作环境来应用某些平台特定优化。在其他实施例中,apm引擎300可以在分发之前从传感器302远程地将高级配置信息转化为平台特定格式。

在一些实施例中,pfe310可负责将平台无关配置信息存储在存储器中、处理传感器302的注册、监视对配置信息的更新、将更新分发到传感器302并且收集由传感器302捕获的遥测。在图3的示例中,pfe310可充当传感器302与协调器集群320之间的媒介。这可在服务器与apm引擎300之间添加一层安全性。例如,传感器302可在信任仅协调器集群320而不信任pfe310的最小特权原则下操作。传感器302和pfe310必须对它们之间的所有事务(包括配置和注册)进行签名和认证。

协调器集群320可作为用于apm引擎300的控制器来操作。在图3的示例中,协调器集群320实现高可用性方案(例如,zookeeper、doozerd和etcd),其中集群选举一个协调器实例主控而剩余协调器实例用作备用实例。协调器集群320可管理传感器302到pfe310的指派。在一些实施例中,每个传感器302可以最初向最靠近(在物理上和/或在逻辑上)传感器的主机的pfe310注册,但是例如为了负载平衡和/或在pfe310中的一个或多个发生故障的情况下,协调器集群320可以将传感器重新指派给不同的pfe。在一些实施例中,协调器集群320可以将分片(sharding)用于负载平衡并且为pfe310提供高可用性。

遥测暂存器330可维护由传感器302捕获的传感器数据。在一些实施例中,apm引擎可在更容易可访问的数据暂存器(例如,固态设备(ssd)、优化的硬盘驱动器(hdd)等)中维护最近捕获和/或访问的遥测并且将较旧的遥测迁移到不太可访问的数据暂存器(例如,商品hdd、磁带等)。在一些实施例中,apm引擎300可以使用或其他关系数据库平台来实现遥测暂存器330。在其他实施例中,apm引擎300可以使用由纽约州纽约的公司提供的软件或其他nosql数据库来实现遥测暂存器330。

在一些实施例中,协调器集群320还可以负责使pfe310负载平衡、确保pfe310对传感器302的高可用性并且在遥测暂存器330中接收和存储遥测。在其他实施例中,apm引擎300可集成pfe和协调器的功能性或者将pfe和协调器的功能性进一步划分成附加组件。

返回到图1,呈现层140可包括web图形用户界面(gui)142、api端点144和基于事件的通知系统146。在一些实施例中,应用和网络分析平台100可以使用rubyonrailstm作为web应用框架来实现webgui142。rubyonrailstm是为数据库、web服务和web页面提供默认结构的模型-视图-控制器(mvc)框架。rubyonrailstm依靠诸如用于数据转移的json或xml这样的web标准以及用于显示和用户对接的超文本标记语言(html)、级联样式表(css)和

在一些实施例中,应用和网络分析平台100可暴露应用编程接口(api)端点(例如,诸如基于简单对象访问协议(soap)、面向服务架构(soa)、代表性状态转移(rest)架构、面向资源架构(roa)等的那些)以用于监视在网络中执行的应用和网络它本身的性能。在一些实施例中,应用和网络分析平台100可以使用来自hive用于后端并且使用来自加利福尼亚州红木滩的公司的数据库连接(jdbc)作为api层来实现api端点144。hive是提供数据摘要和自组织查询的数据仓库基础设施。hive提供用于使用称作hiveql的结构化查询语言(sql)的变体来查询数据的机制。jdbc是用于编程语言的应用编程接口(api),其定义客户端如何可以访问数据库。

在一些实施例中,应用和网络分析平台100可以使用kafka来实现基于事件的通知系统。kafka是支持分割和复制的分布式消息传送系统。kafka使用主题的构思。主题是具体类别中的消息的馈源。在一些实施例中,kafka可将原始分组捕获和遥测信息视为输入,并且将消息输出到安全信息和事件管理(siem)平台,所述siem平台给用户提供用于搜索、监视并分析机器生成的数据的能力。

在一些实施例中,网络中的每个服务器可以包括软件传感器并且每个网络设备可以包括硬件传感器114。在其他实施例中,软件传感器112和硬件传感器114可驻留在网络的服务器和网络设备的一部分上。在一些实施例中,软件传感器112和/或硬件传感器114可以在全可见性模式或有限可见性模式下操作,在所述全可见性模式下传感器从每一分组和每一流收集遥测,在所述有限可见性模式下传感器仅提供应用洞察和策略生成所需要的对话视图。

图4图示网络环境400的示例。普通技术人员应领会的是,对于网络环境400和本公开中讨论的任何环境,可在类似的或替代配置中存在附加或更少的节点、设备、链路、网络或组件。其他实施例可以具有不同数量和/或类型的客户端、网络、节点、云组件、服务器、软件组件、设备、虚拟或物理资源、配置、拓扑、服务、器具、部署或网络设备。进一步地,网络环境400可包括可由客户端或租户访问并利用的任何数量或类型的资源。

网络环境400可包括客户端计算设备402、广域网(wan)404和局域网(lan)410。尽管在这里出于简单和简洁的目的未示出,然而典型的数据中心还可以包括位于边缘网络设备406b与web服务器412之间的防火墙、负载平衡器和/或附加边缘路由器。客户端402可以是能够通过网络进行通信的任何种类的计算设备(即,具有不同的类型、能力、操作系统等),诸如服务器(物理的或虚拟的)、台式计算机、膝上型电脑、平板、智能电话或可穿戴设备(例如,手表;眼镜、遮阳板、头戴式显示器或通常穿戴在用户的眼睛上方的其他设备;耳机、耳塞或通常穿戴在用户的耳朵中或上方的其他设备;等等)。客户端402还可以是“信息娱乐系统”(即,与运输工具集成在一起的计算设备)、“智能”家庭设备或物联网(iot)设备(例如,电视、机顶盒、数字视频记录器(dvr)、数字视频盘(dvd)播放器或其他媒体播放器、视频游戏控制台等)或其他电子设备。

wan404可包括一个或多个网络和/或网络设备,诸如网络设备406a和406b,以用于互连客户端402和lan410。wan可通过长距离通信链路连接地理上分散的节点,所述长距离通信链路诸如公共载波电话线、光学光路、同步光网络(sonet)或同步数字体系(sdh)链路。lan和wan可包括l2和/或l3网络和服务器。互联网是连接全世界不同的网络从而提供各种网络上的节点之间的全球通信的wan的示例。节点通常通过根据预定义协议(诸如传输控制协议/网际协议(tcp/ip))交换数据的离散帧或分组来通过网络通信。在此上下文中,协议可指代定义节点如何彼此交互的一组规则。wan404也可以是专用网络,诸如全球企业网络,其使用与公用互联网类似或相同的技术来操作。

lan可通过位于相同的一般物理定位(诸如建筑物或校园)中的专用私密通信链路来连接节点。在图4的示例中,lan410可以是包括单个简单web应用的数据中心。典型的数据中心可包括数百或数千个更简单或更复杂的应用。web应用包括连接到网络设备414(例如,集线器、交换机、路由器等)以便与认证服务器416、内容服务器418和数据服务器420进行通信的web服务器412。数据服务器420可直接地或间接地连接到数据库422。尽管图4可以看起来示出web服务器412、认证服务器416、内容服务器418和数据服务器420作为单独的元件,然而服务器或服务器的各种组合可作为虚拟机、容器或其他虚拟实体驻留在单个物理机器上。类似地,网络设备414可以是一个或多个物理网络设备、虚拟网络设备,或各种配置(例如,叶脊、三层(即,包括核心、聚合和访问级别)、胖树、网格、总线、集中星型等)中的物理和虚拟网络设备的各种组合。

在图4的示例中,web应用可以是与一个或多个用户账户相关联的简单网站。用户可以登录到其账户并访问其个人信息和其他内容。用户可以从客户端设备402(例如,经由独立客户端应用、web浏览器、插件等)访问她的与网站/web应用相关联的账户。客户端设备402可以通过wan404(例如,互联网、企业网络等)与位于lan410中的网站/web应用进行通信以便用户以任何数量的方式与她的账户交互,诸如更新特权信息(例如,名字、电子邮件地址、登录密码等)、查看内容、创建内容等。每个交互可构成对网站/web应用的请求并且该请求的结果可以是响应。然而,每个请求可以包括一个或多个附加子请求和子响应。同样地,每个响应可包括一个或多个子请求和子响应。子请求和子响应的数量可主要取决于应用的复杂性。但是甚至诸如图4中图示的简单web应用/网站也可包括许多子请求和子响应。

图5图示针对与图4的网站/web应用的交互的请求和响应的时间序列500的示例。普通技术人员应理解的是,对于本文讨论的任何序列,除非另外陈述否则在各种实施例的范围内,可能存在以类似的或替代次序或者并行执行的附加的、更少的或替代步骤。用户交互可以是用户登录到网站/web应用中、点击以查看某些内容、在网站/web应用中搜索内容以及任何数量的可能性。在时间序列500中,垂直轴线对应于时间并且水平轴线示出网站/web应用的各个组件之间的通信。

在图5的示例中,客户端402可以发送对网站/web应用的特定页面或其他内容的始发请求(即,在点a处)。在遍历wan404之后,始发请求可以在持续时间ab之后到达web服务器412。如上面所讨论的,始发请求可以包括通过wan404、数据中心的边缘网络设备中的一个或多个、防火墙、负载平衡器以及其他软件和硬件组件的段,但是图5为了简洁和清楚而排除那些段。web服务器412可以花费一些时间bc处理请求以确定请求是对需要认证的个人内容的请求。因此,web服务器412可以向认证服务器416发送认证请求(即,在点c处)以验证用户的登录名字和密码与由网站/web应用存储的用户的信息匹配。为了发送认证请求,web服务器412可以首先将认证请求转发到网络设备414持续持续时间cd。网络设备414可接收认证请求,花费一定量的时间de来处理认证请求的分组并且将请求转发到认证服务器416持续持续时间ef。认证服务器416可以处理认证请求并且准备认证响应(即,在点g处)持续时间fg并且将认证请求转发到网络设备414持续时间gh。网络设备414可花费时间hi来确定在哪里将认证请求转发到web服务器412,这时网络设备414可以在持续时间ij期间将响应转发到web服务器412。

web服务器412可以根据认证响应确认用户的认证并且开始取回内容以提供对始发请求的响应。响应可以是网站/web应用的页面,其包括来自内容服务器418的内容和来自数据服务器420的个人信息。web服务器412可以占去时间jk以准备对内容服务器418的请求并且占去时间ks以准备对数据服务器420的请求。web服务器412可以在时间kl期间向网络设备414发送内容请求,这时网络设备414可以花费时间lm来将转发对内容服务器418的请求持续持续时间mn。内容服务器418可以接收内容请求,花费时间no来处理该请求,并且在时间op期间向网络设备414发送内容响应。网络设备414可处理内容响应持续时间pq并且将内容响应转发到web服务器,此后经过qr时间。

与对内容服务器418的请求/响应并行或在时间上非常接近地,web服务器412可以将数据请求发送到网络设备414持续时间st。网络设备可处理数据请求持续时间tu并且在时间段uv期间转发数据请求。数据服务器420可以具有这样的架构,即它必须从数据库422中取回所请求的数据,并且因此必须执行一些时间vw处理数据请求并且准备数据库请求(即,在点w处)。数据库请求可以花费时间wx到达数据库422。在持续时间xy期间可以发生取出所请求的数据,并且在时间yz期间可以发生将数据(即,在点y处)发送回到数据服务器420。在时间αβ期间将数据响应发送回到网络设备414之前,数据服务器可以在时间zα内处理数据库响应。网络设备可以处理数据响应持续时间βγ并且在时间γδ期间转发数据响应。web服务器412可以在时间εζ期间将对始发请求的响应发送到客户端402之前在时间δε期间组装从内容服务器418取回到的内容和从数据服务器420取回到的数据。

在图5的示例中,从bc开始至εζ的段可表示用于将对始发请求的web服务器响应发送到web服务器的总延迟。总响应延迟因此可包括由于web服务器412而导致的延迟、由于认证服务器416而导致的延迟以及由于内容服务器418而导致的延迟与由于数据服务器420而导致的延迟之间的最大值(假定对内容服务器418和数据服务器420的请求并行或基本上并行)。一些常规数据中心可以能够导出这些延迟中的一些。例如,依靠来自网络设备(例如,网络设备414)的网络遥测的数据中心可以能够经由认证请求流簇和认证响应流簇的时间戳来计算web服务器延迟。同样地,可能的是数据中心可以依靠来自服务器的遥测来根据指示web服务器412何时将认证请求流簇发送到认证服务器416并且web服务器何时从认证服务器416接收到认证响应流簇的web服务器日志来计算web服务器延迟。各种实施例可通过计算更多粒度的延迟来在这些常规方法上改进。例如,应用和网络分析平台100可将用于提供对认证请求的响应的总延迟解析成包括表示从web服务器412到网络设备414的网络延迟的段cd、表示网络设备延迟的段de(但在一些实施例中是可忽略的并被忽视)、表示从网络设备414到认证服务器416的网络延迟的段ef、表示认证服务器延迟的段fg、表示从认证服务器416到网络设备414的网络延迟的段gh、表示网络设备延迟的段hi以及表示从网络设备414到web服务器412的网络延迟的段ij。常规数据中心不能以这种粒度级别确定延迟,但是本技术的各种实施例可通过从web服务器412、网络设备414和认证服务器416获得遥测来以这种粒度级别确定延迟。在一定时间段期间,依照一些实施例的应用和分析框架可以为web服务器412与认证服务器416之间的网络延迟(即,段cd、(有时de)、ef)、认证服务器延迟(即、段fg)以及认证服务器416与web服务器412之间的网络延迟(即,段gh、(有时hi)和ij)建立基线度量。当用户经历延迟时,管理员可以基于将流分解成流簇的这种方式快速地确定问题是由于服务器延迟还是网络延迟而导致的。

如图5中所示,单个用户与简单应用的交互可包括不止十几个请求和响应。典型的企业网络可包括数百或数千个更复杂的应用,其中数百或数千个用户可能每天执行数百万或数十亿个操作。人类用户将不可能处理并分析这种数据量。图5还演示仅依靠来自服务器或网络设备中的一个的遥测的数据中心的不完整性。例如,在仅可从网络设备414获得遥测的第一数据中心中并且在网络设备试图与数据服务器420进行通信异常慢或者失败的情形下,第一apm平台不能诊断问题是由于应用不可用性还是负载而出现的。另外,第一数据中心可能无法提供关于问题存在于数据服务器420、数据库422还是数据服务器与数据库之间的连接中的洞察。例如,在数据请求中,第一数据中心可以仅恢复st和uv,但是可能无法恢复vw、wx、xy、yz和zα,因为第一数据中心可能不知道数据服务器320对数据库322有依赖。

仅依靠来自服务器的遥测的第二数据中心也可能遭受各种缺陷。这样的系统可以能够检测web服务器412与数据服务器420之间的通信中的反常(或无)响应时间,但是可能无法探知延迟或故障是由于web服务器412、网络设备414、数据服务器420、数据库422还是数据服务器与数据库之间的连接而导致的。例如,在数据请求中,第二数据中心可以具有数据请求和数据响应的视图,但是st、tu、uv、vw、wx、xy、yz、zα、αβ、βγ和γδ可以是黑盒子。各种实施例可以通过沿着数据路径的多个点捕获遥测、将流解析成流簇、为流簇建立基线并且对照基线来评估新业务以更精确地诊断应用和网络性能降级的根本原因来克服现有技术的数据中心的这些和其他缺陷。

图6图示用于将一个或多个流解析成流簇以进行应用性能监视和管理的方法600的示例。普通技术人员应理解的是,对于本文讨论的任何方法,除非另外陈述否则在各种实施例的范围内,可以存在以类似的或替代次序或并行执行的附加的、更少的或替代步骤。网络以及特别是应用和网络分析平台(例如,图1的应用和网络分析平台100)、分析引擎(例如,图1的分析引擎120)、apm引擎(例如,图1的apm引擎130)、网络操作系统、虚拟实体管理器或类似的系统可执行方法600。

在图6的示例中,方法600可以在步骤602处开始,在所述步骤620中传感器(例如,图1的软件传感器112和硬件传感器114)在第一时间段期间从网络的服务器和网络设备捕获遥测(例如,流数据、主机数据、进程数据、用户数据、策略数据等)以为应用和网络性能建立基线。在一些实施例中,应用和网络分析平台还可以收集虚拟化信息、网络拓扑信息和应用信息(例如,配置信息、先前生成的应用依赖映射、应用策略等)。另外,应用和网络分析平台还可以收集带外数据(例如,功率水平、温度和物理定位)和客户/第三方数据(例如,cmdb或cms即服务、whois、地理坐标等)。如所讨论的,软件传感器112和硬件传感器114可从多个视角收集所捕获的数据以提供网络行为的全面视图。软件传感器112可以沿着数据路径的多个点(例如,网络设备、物理或裸机服务器)并在物理主机的多个分区(例如,管理程序、容器编排器、虚拟实体管理器、vm、容器、其他虚拟实体等)内包括传感器。

在收集网络遥测和相关数据之后,方法600可以继续到步骤604,其中应用和网络分析平台可为在网络中执行的一个或多个应用生成应用依赖图(adm)。在一些实施例中,adm的节点可表示服务器和进程(或应用层、应用、应用组件或其他实施例中的其他应用粒度)的配对或级联,并且adm图的边缘可表示应用和网络分析框架检测节点之间的流。节点的集群(即,在彼此的相似性阈值内的主机-进程配对)可表示应用组件,并且adm的每个连接图可表示应用。

在一些实施例中,生成adm可涉及通过级联服务器(例如,遥测将服务器标识为分组/流的分组报头元数据中的源或目的地)和应用/应用组件(例如,遥测标识生成分组/流的进程)来确定adm的节点。生成adm还可包括通过检测adm的节点之间的一个或多个流来确定adm的边缘。生成adm还可包括确定节点的特征向量。每个节点的特征向量可以包括服务器特征、进程特征和/或其他特征的级联。服务器特征可包括服务器名字、网络地址、操作系统、cpu使用率、网络使用率、磁盘空间、端口、登录用户、调度作业、打开文件以及有关存储在服务器上的文件和/或目录的信息。进程特征可包括进程名字、进程标识符、父进程标识符、进程路径、cpu利用率、存储器利用率、存储器地址、调度信息、nice值、标志、优先级、状态、开始时间、终端类型、由进程花费的cpu时间、启动了进程的命令字符串和进程所有者(例如,用户名字、用户标识符、用户的真实名字、电子邮件地址,用户的组)、终端信息、登录时间、登录的到期日期、空闲时间以及有关用户的文件和/或目录的信息。在一些实施例中,特征向量还可包括从客户/第三方数据(例如,cmdb或cms即服务、whois、地理坐标等)中提取的特征。

用于检测adm的节点之间的流的遥测可以包括诸如源地址、源端口、目的地地址、目的地端口、协议类型、服务类等这样的分组报头字段和/或诸如流开始时间、流结束时间、流的分组数、流的字节数、流的tcp标志的并集等这样的聚合分组数据。

生成adm还可涉及通过比较其特征向量来确定adm的节点之间的相似性。相似性可以是两个节点相对于其他节点有多相似的量度或两个节点与其他节点相比彼此不太遥远的量度。在一些实施例中,应用和网络分析平台可使用欧几里德距离、曼哈顿距离、闵可夫斯基距离、余弦相似性、杰卡德相似性等中的一个或多个作为相似性/距离量度。在一些实施例中,确定adm还可包括设置相似性阈值以便集群指定关于在网络中执行的应用的视图的粒度级别。例如,将相似性阈值设置为非常粗程度的相似性可导致多个集群将数据中心表示为单片应用。另一方面,将相似性阈值设置为非常细程度的相似性可对于网络中的每个主机-进程配对产生单独集群。设置相似性阈值可能主要取决于在网络中执行的应用的数量和类型以及手头任务所期望的粒度级别。在大多数情形下,相似性阈值可以位于非常粗与非常细之间某处。如所讨论的,集群可表示应用组件,并且连接图可表示应用。

在生成adm之后,方法600可进行到步骤606,其中应用和网络分析平台可将流移交到一个或多个流簇中。也就是说,应用和网络分析平台可通过跟踪从源到目的地的流来将流分解成一系列子请求和子响应。请求流可包括遍及从源到目的地的网络设备的跳以及由网络设备对流的处理。响应流可包括遍及网络设备的跳、由网络设备对流的处理以及被执行来生成对始发请求流的响应的对中间端点的子请求和子响应(包括遍及网络设备的跳和由这些网络设备进行的处理)。例如,在图5中,应用和网络分析平台可以将web服务器412对来自客户端的始发请求的响应分解为包括段bc、cd、de、ef、fg、gh、hi、ij、jk、kl、lm、mn、no、op、pq、qr、st、tu、uv、wx、xy、yz、zα、αβ、βγ、γδ、δε和εζ的序列。

方法600可以继续到步骤608,其中应用和网络分析平台可确定用于流簇的基线度量,诸如用于发送和/或处理每个流簇的时间长度的平均值或范围和/或在每个流簇内发送和/或处理的数据量(例如,以分组和/或字节数为单位)的平均数据量或范围。例如,应用和网络分析平台可使用由服务器的软件传感器捕获的网络遥测和相关数据来检测与在服务器上执行的应用相关联的请求流,诸如通过拍摄在服务器上执行的进程在服务器生成了流时的快照并且使流与进程中的一个相关联。应用和网络分析平台可跟踪从服务器到一个或多个网络设备的请求流(即,网络设备可以对应于流的一个或多个跳)并且确定服务器与网络设备之间的传输时间(以及有时是发送的数据量)以及由网络设备基于由网络设备的硬件传感器捕获的网络遥测来处理流所花费的时间。应用和网络分析平台可基于由这些附加设备的传感器捕获的网络遥测和相关数据来跟踪响应流作为对其他服务器的子请求和子响应的传输和/或处理(以及由网络设备沿着子请求和响应的数据路径进行的传输和/或处理)并且确定与发送和/或处理子请求和子响应相关联的时间量(和/或在一些实施例中为数据量)。应用和网络分析平台可以通过聚合在指定时间段内检测到的流簇的观察结果来确定用于流簇的基线度量。

在步骤610处,应用和网络分析平台可在第二时间段期间通过对照新流簇的对应基线来比较它们来评估网络遥测和相关数据。在一些实施例中,应用和网络分析平台可以使用机器学习和模式识别算法来对每个新流簇进行分类。机器学习可涉及接收“训练的”样本(即,与预定分类相关联的流簇)、确定特定分类的样本可以彼此有共同点并且可能与其他分类没有共同点的特征(有时加权的)并且使用这些(有时加权的)特征来对新流簇进行分类。机器学习和模式识别算法可包括判定树、随机森林、基于规则的分类器、支持向量机(svm)分类器、神经网络分类器、最近邻分类器等。

判定树使用底层数据和不同特征的分层划分。数据的分层划分创建按其类分布偏倚的类分区。对于流簇之间的给定差异集,流簇最可能属于的分区是该流簇的分类。

随机森林依靠判定树的组合,其中每个树取决于独立地采样并且对于森林中的所有树具有相同分布的随机向量的值。实施者可针对许多树t通过在放回的条件下随机对训练数据的n个案例进行采样以创建训练数据的子集来训练随机森林。在每个节点处,分类器可从所有特征的集合中随机选择数量m个特征,并且可最终选择提供最佳分割来在该节点上做二进制分割的特征。在下一个节点处,分类器随机选择另一数量m个特征并且重复该过程。

基于规则的分类器确定定义不同类的模式(例如,正则表达式)。这些类型的分类器定义一组规则,其中左手侧对应于模式,而右手侧对应于类标签。规则确定分类。

svm分类器试图使用不同类之间的线性或非线性描绘来分割底层数据。这些分类器的前提是为了确定不同类之间的最佳边界并且将这些边界用于分类的目的。

神经网络分类器利用使用连接方法来处理信息的一组互连的函数或分类器。神经网络在训练期间改变其结构,诸如通过在一个网络内合并重叠检测并且训练仲裁网络以组合来自不同网络的结果。

最近邻分类器将训练数据中的k-最近邻居确定为流簇之间的特定差异集,并且来自k个邻居的多数类确定分类。

在判定点612处,如果新流簇不偏离其基线,诸如通过在指定时间范围内发生并且/或者在数据大小的指定范围内发送/处理一定量的数据,则应用和网络分析平台可以继续分析新流簇。

然而,如果应用和网络分析平台确定新流簇偏离其基线,则在步骤614处,应用和网络分析平台可执行某些修复任务以解决偏差。在一些实施例中,修复可包括诸如经由基于事件的通知系统(例如,图1的基于事件的通知系统146)生成警报。在一些情况下,网络管理员可以分析反常流簇并且确定应用和网络的性能符合预期或者确定流簇指示应用和网络性能的问题。应用和网络分析平台可将这个作为输入(即,训练样本)接收以改进机器学习。

如所讨论的,在一些实施例中,应用和网络分析平台可确定网络内的服务器的物理和/或逻辑定位(例如,cmdb/cms、地理坐标、ip地址等)。应用和网络分析可使用定位信息来确定依赖于彼此的应用组件的最佳放置和配置,使得组件在物理上和/或在逻辑上更靠近在一起。例如,应用和网络分析平台可以确定反常流对特定应用来说是瓶颈并且可定位用于应用组件的不同定位。作为另一示例,应用和网络分析平台可以具有数据中心中的应用和网络活动的全面视图并且可确定用于应用组件的使带宽和延迟最小化的定位。因此,在一些实施例中,修复可包括自动地将具有应用依赖的虚拟实体迁移得在物理上和/或在逻辑上更靠近在一起以解决应用和网络性能问题。在一些实施例中,修复还可包括生成关于要在物理上和/或在逻辑上更靠近在一起的应用组件的物理放置或配置的推荐以减少延迟和其他性能降级。

图7a和图7b图示依照各种实施例的系统。当实践各种实施例时,更适当的系统对于本领域的普通技术人员而言将是显而易见的。本领域的普通技术人员也将容易地领会的是,其他系统也可能的。

图7a图示用于常规总线计算系统700的示例架构,其中系统的组件使用总线705来彼此电通信。计算系统700可包括处理单元(cpu或处理器)710和系统总线705,所述系统总线705可以将包括系统存储器715(诸如存储设备770中的只读存储器(rom)和随机存取存储器(ram)775)的各种系统组件耦合到处理器710。计算系统700可包括直接地与处理器710连接、与处理器710极为接近或者作为处理器710的一部分集成的高速存储器的高速缓存712。计算系统700可将数据从存储器715和/或存储设备730复制到高速缓存712以供由处理器710快速访问。以这种方式,高速缓存712可提供在等待数据的同时避免处理器延迟的性能提升。这些和其他模块可控制处理器710以执行各种动作。其他系统存储器715也可以用于使用。存储器715可包括具有不同性能特性的多种不同类型的存储器。处理器710可包括被配置为控制处理器710的任何通用处理器和硬件模块或软件模块(诸如存储在存储设备730中的模块1732、模块2734和模块3736)以及专用处理器,其中软件指令被并入到实际的处理器设计中。处理器710可以基本上是完全自备的计算系统,包含多个核心或处理器、总线、存储器控制器、高速缓存等。多核心处理器可以是对称的或不对称的。

为了使得能实现用户与计算系统700的交互,输入设备745可表示任何数量的输入机制,诸如用于语音的麦克风、用于手势或图形输入的触摸保护屏幕、键盘、鼠标、动作输入、语音等。输出设备735也可以是为本领域的技术人员已知的许多输出机制中的一种或多种。在一些情况下,多模态系统可使得用户能够提供多种类型的输入来与计算系统700进行通信。通信接口740可支配并管理用户输入和系统输出。可能对在任何特定硬件布置上操作没有限制,并且各种其他实施例可以在这里取代基本特征以得到改进的硬件或固件布置。

存储设备730可以是非易失性存储器并且可以是可存储可由计算机访问的数据的硬盘或其他类型的计算机可读介质,诸如磁带盒、闪速存储器卡、固态存储器设备、数字通用盘、磁盒、随机存取存储器(ram)725、只读存储器(rom)720及其混合物。

存储设备730可包括用于控制处理器710的软件模块732、734、736。各种实施例可以利用其他硬件或软件模块。存储设备730可连接到系统总线705。在一个方面中,执行特定功能的硬件模块可连同必要的硬件组件(诸如处理器710、总线705、输出设备735等)一起包括存储在计算机可读介质中的软件组件,以执行该功能。

图7b图示依照实施例的可被使用的用于常规芯片组计算系统750的示例架构。计算系统750可包括表示能够执行被配置为执行标识的计算的软件、固件和硬件的任何数量的在物理上和/或在逻辑上根本不同的资源的处理器755。处理器755可与芯片组760进行通信,所述芯片组760可控制到处理器755的输入和来自处理器755的输出。在此示例中,芯片组760可将信息输出到输出设备765,诸如显示器,并且可以读取信息并将信息写入到存储设备770,所述存储设备770可包括例如磁介质和固态介质。芯片组760还可从ram775读取数据并且将数据写入到ram775。用于连接各种用户接口组件785的桥接器780可与芯片组760对接。用户接口组件785可包括键盘、麦克风、触摸检测和处理电路、指点设备(诸如鼠标)等。对计算系统750的输入可来自各种源(机器生成的和/或人类生成的)中的任一个。

芯片组760还可与可具有不同物理接口的一个或多个通信接口790对接。通信接口790可包括用于有线和无线lan、用于宽带无线网络以及个人区域网络的接口。本文公开的用于生成、显示并使用gui的方法的一些应用可包括通过物理接口接收有序数据集或者由机器它本身通过处理器755分析存储在存储设备770或ram775中的数据来生成。进一步地,计算系统700可经由用户接口组件785从用户接收输入并且通过使用处理器755来解释这些输入而执行适当的功能,诸如浏览功能。

应领会的是,计算系统700和750分别可具有多于一个处理器710和755,或者是联网在一起以提供更大处理能力的计算设备的组或集群的一部分。

为了说明的清楚,在一些情况下各种实施例可以被呈现为包括单独的功能块,包括含有设备、设备组件、用软件或硬件和软件的组合加以具体实现的方法中的步骤或例行程序的功能块。

在一些实施例中,计算机可读存储设备、介质和存储器可包括包含比特流等的电缆或无线信号。然而,当被提及时,非暂态计算机可读存储介质明确地排除诸如能量、载波信号、电磁波和信号本身这样的介质。

可使用被存储或者可其他方式从计算机可读介质获得的计算机可执行指令来实现根据上述示例的方法。这样的指令可包括例如使或者以其他方式将通用计算机、专用计算机或专用处理设备配置成执行某个功能或一组功能的指令和数据。可通过网络访问使用的计算机资源的各部分。计算机可执行指令可以是例如二进制文件、诸如汇编语言这样的中间格式指令、固件或源代码。可以用于存储指令、使用的信息和/或在根据描述的示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、闪速存储器、设置有非易失性存储器的usb设备、联网存储设备等。

实现根据这些公开的方法的设备可包括硬件、固件和/或软件,并且可采取各种形状因数中的任一种。这样的形状因数的典型示例包括膝上型电脑、智能电话、小形状因数个人计算机、个人数字助理、机架安装设备、独立设备等。其他实施例可以在外围设备或附加卡中实现本公开中描述的功能性。作为另一示例,各种实施例还可以在不同芯片当中的电路板或在单个设备中执行的不同进程上实现此功能性。

指令、用于输送这样的指令的介质、用于执行它们的计算资源以及用于支持这样的计算资源的其他结构是用于提供这些公开中描述的功能的手段。

尽管本公开使用各种示例和其他信息来说明所附权利要求的范围内的各方面,但是本领域的普通技术人员应理解不应将权利要求限于这样的示例中的特定特征或布置,因为普通技术人员可使用这些示例来导出各式各样的实施方式。进一步地,尽管本公开用特定于结构特征和/或方法步骤的示例的语言来描述某个主题,然而普通技术人员应理解的是,所附权利要求中限定的主题不一定限于这些描述的特征或行为。例如,这样的功能性可不同地分布或者在除本文标识的那些以外的组件中被执行。相反,本公开将描述的特征和步骤作为所附权利要求的范围内的系统和方法的组件的示例来提供。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1