用于计算机网络的方法、网络设备及存储介质转让专利

申请号 : CN202011016009.3

文献号 : CN113890826B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 艾维·K·帕特尔哈什特·纳雷什·基塔利亚尼伦·什里帕德·帕特基

申请人 : 瞻博网络公司

摘要 :

本公开涉及用于计算机网络的方法、网络设备及存储介质。描述了显示计算机网络拓扑结构的图形表示的技术。在一个示例中,网络设备被配置为生成包括计算机网络的拓扑结构的图形表示的输出,计算机网络包括通过由一组网络设备提供的基于分组的通信网络而互连的计算节点,其中,策略控制器被进一步配置为:识别计算节点或网络设备中具有指示受关注的操作状态的状态信息的网络元件;修改耦接至已识别网络元件的一种或多种资源的状态信息;并且基于网络拓扑结构信息是否指示已识别网络元件的视觉图形符号,输出与视觉图形符号对应或与通信地耦接至已识别网络元件的可见资源对应的视觉指示符。

权利要求 :

1.一种用于计算机网络的方法,所述方法包括:

由策略控制器,生成包括计算机网络的拓扑结构的图形表示的至少一个最顶层的输出,所述计算机网络包括通过基于分组的通信网络而互连的计算节点,所述基于分组的通信网络由一组网络设备提供,其中,网络拓扑结构信息存储所述一组网络设备与所述计算节点之间的连接以及所述一组网络设备内的连接,其中,在没有所述图形表示的至少一个下层的情况下生成所述输出,其中所述输出的一部分还包括指示所述至少一个下层的至少一个资源的操作状态的信息并且能用作用于所述至少一个资源的至少一个视觉图形符号的空间;

由所述策略控制器,基于指示至少一个计算节点或至少一个网络设备的操作状态的信息,识别网络元件,其中,所述网络元件是所述计算机网络的所述拓扑结构中的所述至少一个计算节点或所述至少一个网络设备的父代,其中所述至少一个资源包括所述至少一个计算节点或所述至少一个网络设备;

由所述策略控制器,使用指示所述至少一个计算节点或所述至少一个网络设备的所述操作状态的所述信息,修改指示已识别的网络元件的操作状态的信息;并且由所述策略控制器,输出指示视觉指示符和图形用户界面GUI元素的数据,所述视觉指示符和所述图形用户界面元素与所述已识别的网络元件或另一网络元件的视觉图形符号对应,所述另一网络元件连接至所述计算机网络的所述拓扑结构中的所述至少一个计算节点或所述至少一个网络设备,所述GUI元素还显示与所述已识别的网络元件的操作状态相关联的信息。

2.根据权利要求1所述的方法,其中,由所述策略控制器输出指示所述视觉指示符和所述GUI元素的所述数据还包括:

基于确定所述网络拓扑结构信息指示所述计算机网络的所述拓扑结构中的所述已识别的网络元件的所述视觉图形符号,由所述策略控制器输出指示与所述视觉图形符号对应的所述视觉指示符以及显示与所述已识别的网络元件的操作状态相关联的信息的所述图形用户界面GUI元素的数据;或者基于确定所述网络拓扑结构信息指示所述计算机网络的所述拓扑结构中的所述另一网络元件的所述视觉图形符号,由所述策略控制器输出指示与所述视觉图形符号对应的所述视觉指示符的数据,其中,所述另一网络元件是所述已识别的网络元件的父代,并且通信地耦接至所述已识别的网络元件,并且由所述策略控制器还输出显示与所述已识别的网络元件的操作状态相关联的信息的图形用户界面GUI元素。

3.根据权利要求1所述的方法,其中,生成所述输出还包括:输出包括所述计算机网络的所述拓扑结构的所述图形表示的界面,所述界面包含表示所述网络设备的多个视觉图形符号。

4.根据权利要求3所述的方法,其中,生成所述输出还包括:在图形用户界面上输出连接至所述已识别的网络元件的一种或多种资源的状态信息的表格视图。

5.根据权利要求3所述的方法,其中,生成所述输出还包括:基于所述已识别的网络元件输出所述计算机网络的所述拓扑结构的已过滤的图形表示。

6.根据权利要求3所述的方法,其中,生成所述输出还包括:由所述策略控制器,修改指示通信地耦接至所述已识别的网络元件的一种或多种资源的操作状态的信息;并且所述策略控制器响应于与所述视觉指示符的交互,输出指示与所述一种或多种资源的连接资源对应的视觉图形符号周围的虚线边界的数据以及指示所述已识别的网络元件的操作状态的数据。

7.根据权利要求6所述的方法,其中,生成所述输出还包括:将所述已识别的网络元件的视觉图形符号输出至靠近所述视觉指示符的位置。

8.根据权利要求1所述的方法,其中,由所述策略控制器输出指示所述视觉指示符和所述GUI元素的所述数据还包括:输出指示所述视觉图形符号的虚线边界的数据和指示不健康状态或风险状态的数据。

9.根据权利要求1所述的方法,还包括:扩展与可见资源相关联的所述拓扑结构的一部分,其中,所述至少一个网络设备或所述至少一个计算节点的视觉图形符号变得显现。

10.根据权利要求1所述的方法,还包括:输出与所述拓扑结构中的可见资源对应的所述视觉指示符和显示信息的图形用户界面GUI元素,所述信息与满足第一组条件的当前操作状态和满足第二组条件的预测未来操作状态中的至少一者相关联。

11.一种网络设备,包括:

处理电路;以及

策略控制器,被配置为生成包括计算机网络的拓扑结构的图形表示的至少一个最顶层的输出,所述计算机网络包括通过基于分组的通信网络而互连的计算节点,所述基于分组的通信网络由一组网络设备提供,其中,网络拓扑结构信息存储所述一组网络设备与所述计算节点之间的连接以及所述一组网络设备内的连接,其中,在没有所述图形表示的至少一个下层的情况下生成所述输出,其中所述输出的一部分还包括指示所述至少一个下层的至少一个资源的操作状态的信息并且能用作用于所述至少一个资源的至少一个视觉图形符号的空间,其中所述策略控制器还被配置为:基于指示至少一个计算节点或至少一个网络设备的操作状态的信息,识别网络元件,其中,所述网络元件是所述计算机网络的所述拓扑结构中的所述至少一个计算节点或所述至少一个网络设备的父代,其中,所述至少一个资源包括所述至少一个计算节点或所述至少一个网络设备;

使用指示所述至少一个计算节点或所述至少一个网络设备的所述操作状态的所述信息,修改指示已识别的网络元件的操作状态的信息;并且输出指示视觉指示符和图形用户界面GUI元素的数据,所述视觉指示符和所述图形用户界面元素与所述已识别的网络元件或另一网络元件的视觉图形符号对应,所述另一网络元件连接至所述计算机网络的所述拓扑结构中的所述至少一个计算节点或所述至少一个网络设备,所述GUI元素还显示与所述已识别的网络元件的操作状态相关联的信息。

12.根据权利要求11所述的网络设备,其中,所述策略控制器被配置为输出包括所述计算机网络的所述拓扑结构的所述图形表示的界面,所述界面包含表示所述网络设备和所述计算节点的多个视觉图形符号。

13.根据权利要求12所述的网络设备,其中,所述策略控制器被配置为在所述图形用户界面上输出连接至所述已识别的网络元件的一种或多种资源的状态信息的表格视图。

14.根据权利要求12所述的网络设备,其中,所述策略控制器被配置为过滤所述计算机网络的所述拓扑结构并且输出所述计算机网络的所述拓扑结构的已过滤的图形表示。

15.根据权利要求12所述的网络设备,其中,所述策略控制器输出指示所述视觉指示符和所述GUI元素的所述数据还包括:输出指示所述视觉图形符号的虚线边界的数据以及指示不健康状态或风险状态的数据。

16.根据权利要求15所述的网络设备,其中,所述策略控制器修改指示通信地耦接至所述已识别的网络元件的一种或多种资源的操作状态的信息;并且所述策略控制器响应于与所述视觉指示符的交互,输出指示与所述一种或多种资源的连接资源对应的视觉图形符号周围的虚线边界的数据以及指示所述已识别的网络元件的操作状态的数据。

17.根据权利要求16所述的网络设备,其中,所述策略控制器被配置为在所述图形用户界面上输出图形用户界面元素,当被激活时,所述图形用户界面元素生成所述一种或多种资源的连接资源的视觉图形符号、标识符、以及描述性文本,其中,所述连接资源被所述已识别的网络元件的不健康状态或风险状态影响。

18.根据权利要求11所述的网络设备,其中,所述策略控制器被配置为将所述已识别的网络元件的视觉图形符号输出至邻近于与可见资源对应的所述视觉指示符的位置。

19.根据权利要求11所述的网络设备,还包括一个或多个策略代理,所述一个或多个策略代理被配置为在一个或多个所述计算节点与一个或多个所述网络设备上运行,以监测与所述计算节点和所述网络设备的资源有关的性能和使用度量。

20.一种非暂时性计算机可读介质,包括有指令,所述指令使可编程处理器:

生成包括计算机网络的拓扑结构的图形表示的至少一个最顶层的输出,所述计算机网络包括通过基于分组的通信网络而互连的计算节点,所述基于分组的通信网络由一组网络设备提供,其中,网络拓扑结构信息存储所述一组网络设备与所述计算节点之间的连接以及所述一组网络设备内的连接,其中,在没有所述图形表示的至少一个下层的情况下生成所述输出,其中所述输出的一部分还包括指示所述至少一个下层的至少一个资源的操作状态的信息并且能用作用于所述至少一个资源的至少一个视觉图形符号的空间;

在所述计算节点或所述网络设备中,基于指示受关注的操作状态的信息,识别网络元件,其中,所述网络元件是所述计算机网络的所述拓扑结构中的至少一个计算节点或至少一个网络设备的父代,其中所述至少一个资源包括所述至少一个计算节点或所述至少一个网络设备;

修改指示一种或多种资源的受关注的操作状态的信息,所述一种或多种资源耦接到已识别的网络元件;并且

输出指示视觉指示符和图形用户界面GUI元素的数据,所述视觉指示符和所述图形用户界面元素与所述已识别的网络元件或另一网络元件的视觉图形符号对应,所述另一网络元件连接至所述计算机网络的所述拓扑结构中的所述至少一个计算节点或所述至少一个网络设备,所述GUI元素还显示与所述已识别的网络元件的操作状态相关联的信息。

说明书 :

用于计算机网络的方法、网络设备及存储介质

技术领域

[0001] 本公开涉及可视化、监测、以及改善云数据中心和计算机网络的性能。

背景技术

[0002] 虚拟化数据中心正在成为现代信息技术(IT)基础设施的核心基础。具体地,现代数据中心已经广泛利用虚拟化环境,其中,在物理计算设备的底层计算平台上部署并且运行虚拟主机(诸如虚拟机或容器)。
[0003] 大规模数据中心内的虚拟化能够提供多种优点。一个优点在于虚拟化能够为效率提供明显的改进。由于随着每个物理CPU具有大量的内核的多核微处理器架构的出现而使得底层物理计算设备(即,服务器)已经变得越来越强大,虚拟化变得更容易并且更高效。第二优点在于虚拟化提供对基础设施的显著控制。由于诸如基于云的计算环境中的物理计算资源变为可互换资源,计算基础设施的定位和管理变得更容易。由此,除虚拟化所提供的效率和更高的投资回报(ROI)之外,企业IT员工通常出于其管理优点而优选数据中心中的虚拟化计算群。

发明内容

[0004] 整体上,本公开描述了用于对诸如数据中心内所部署的虚拟化基础设施的计算环境进行监测、调度、以及性能管理的技术。技术提供对操作性能和基础设施资源的可视化。如本文所描述,技术可以利用对分布式架构的分析来提供接近或看似接近实时的历史监测、性能可视化、以及动态优化,以改善计算环境内的编排、安全性、计费、以及计划。技术可以在例如混合、私有、或公有的企业云环境内提供优点。技术适应诸如容器和虚拟机的各种虚拟化机制,以支持多租户、动态、并且以及不断演进的企业云。
[0005] 本公开的各方面描述了用于呈现关于资源的信息的技术,资源诸如(通信)网络及其网络设备、由计算节点(例如,物理计算机和/或虚拟机)构成的计算机网络、包括任意元件的网络或虚拟化基础设施、集群(例如,多个计算机网络)、或另一计算环境。根据本公开的一个或多个方面的技术涉及用户界面的呈现,该用户界面的呈现能够实现对如何使用诸如基础设施元件和计算节点的计算资源及该使用如何影响计算资源的操作的细致、独特、和/或全面的了解。如一个或多个示例中所述,一些技术可能涉及诸如计算机网络的拓扑结构的配置中的各种资源的呈现,计算机网络包括通过由一组网络设备提供的基于分组的通信网络而互连的一个或多个计算节点。
[0006] 本公开的各方面还描述了用于在计算系统内传送用于创建、更新、和/或修改呈现关于网络、虚拟机基础设施、集群、或其他计算环境的信息的用户界面的信息的技术。根据本公开的一个或多个方面的技术可能涉及使用单独的界面采集用于生成呈现关于网络的信息的用户界面的数据、并且采集用于更新反映用户界面内所表示的基础设施元件的状态的虚拟指示符的数据。根据本公开的一个或多个方面的技术还涉及使用用于创建相对于操作状态对一个或多个基础设施元件进行表征和/或分类的值范围的汇总度量。
[0007] 本公开描述了允许策略控制器输出包括示出计算机网络和耦接在一起作为计算机网络的一部分的物理设备之间的互连的至少一个图形用户界面的控制板的一种或多种技术。物理设备表示底层资源,例如,包括交换机、路由器、以及服务器的交换结构,交换结构提供计算机网络内的主机之间和/或主机与位于计算机网络外部的其他设备和/或计算机网络之间的通信互连。使用本公开中描述的技术生成的图形用户界面的示例,包括提供具体计算机网络的底层资源的网络拓扑结构的图示的图形用户界面。
[0008] 上述策略控制器的示例显示足够数量的底层资源以无障碍地提供充足可见性。出于多种原因,主要是可读性,大量的资源不能被显示。如果所描述的技术允许策略控制器确定是否应将资源分类为具有受关注的操作状态(例如,在健康或风险方面),则策略控制器可以将该信息传播至计算机网络中的一种或多种资源,计算机网络包括连接至具有受关注的操作状态的已识别资源的一种或多种资源。因此,基于使用统计和操作数据,可以将不健康或风险状态分配给已识别资源,并且基于与已识别资源的连接,进一步分配给至少一种连接资源。如果至少一种连接资源是图形用户界面上所显示的大量底层资源中的一种,则该技术可以提供与不健康或风险状态对应的可见指示符,以使得利用可见指示符查看图示的管理员了解哪种显示资源连接至处于不健康或风险状态的资源。在一些示例中,大量的底层资源包括由拓扑结构形成的层级结构中的一个或多个顶级水平。
[0009] 图形用户界面的可替代示例提供具体计算机网络的底层资源与一种或多种覆盖资源(例如,诸如虚拟机实例、虚拟基础设施元件等的虚拟组件)的网络拓扑结构的图示。在一个示例中,覆盖资源可以是具有受关注的操作状态的上述已识别的资源(例如,不健康或风险状态)。根据一些技术,策略控制器生成在被激活时(例如,通过点击)生成已识别资源的适当图形符号的图形用户界面元素和呈现文本的图形用户界面元素,用于输出。该文本的示例包括描述受关注的操作状态的信息(例如,不健康或风险状态)。可以呈现将已识别资源与所显示的连接资源可视化链接的图形。作为选项,可以显示指示链接状态的文本,例如,指示连接已断并且需要恢复。
[0010] 在一个示例中,本公开描述了一种网络设备,包括:处理电路;和策略控制器,被配置为生成包括计算机网络的拓扑结构的图形表示的输出,计算机网络包括通过由一组网络设备提供的基于分组的通信网络而互连的计算节点,其中,网络拓扑结构信息存储该组网络设备与计算节点之间的连接以及该组网络设备内的连接;其中,策略控制器被进一步配置为:基于指示至少一个计算节点或至少一个网络设备的操作状态的信息而识别网络元件,其中,网络元件是计算机网络的拓扑结构中的至少一个计算节点或至少一个网络设备的父代;使用指示至少一个计算节点或至少一个网络设备的操作状态的信息,修改指示已识别网络元件的操作状态的信息;并且输出指示可见指示符和图形用户界面(GUI)元素的数据,可见指示符和图形用户界面(GUI)元素与连接至计算机网络的拓扑结构中的至少一个计算节点或至少一个网络设备的已识别网络元件或另一网络元件的视觉图形符号对应,GUI元素进一步显示与已识别网络元件的操作状态相关联的信息。
[0011] 在另一示例中,本公开涉及一种方法,包括:由策略控制器生成包括计算机网络的拓扑结构的图形表示的输出,计算机网络包括通过由一组网络设备提供的基于分组的通信网络而互连的计算节点,其中,网络拓扑结构信息存储该组网络设备与计算节点之间的连接以及该组网络设备内的连接;由策略控制器基于指示至少一个计算节点或至少一个网络设备的操作状态的信息,识别网络元件,其中,网络元件是计算机网络的拓扑结构中的至少一个计算节点或至少一个网络设备的父代;由策略控制器使用指示至少一个计算节点或至少一个网络设备的操作状态的信息,修改指示已识别网络元件的操作状态的信息;并且由策略控制器输出指示可见指示符和图形用户界面(GUI)元素的数据,可见指示符和图形用户界面(GUI)元素与连接至计算机网络的拓扑结构中的至少一个计算节点或至少一个网络设备的已识别网络元件或另一网络元件的视觉图形符号对应,GUI元素进一步显示与已识别网络元件的操作状态相关联的信息。
[0012] 在另一示例中,一种包括指令的计算机可读介质,指令用于使可编程处理器:生成包括计算机网络的拓扑结构的图形表示的输出,计算机网络包括通过由一组网络设备提供的基于分组的通信网络而互连的计算节点;其中,网络拓扑结构信息存储该组网络设备与计算节点之间的连接以及该组网络设备内的连接;基于指示受关注的操作状态的信息,识别计算节点或网络设备之中的网络元件;修改指示耦接至已识别网络元件的一种或多种资源的受关注的操作状态的信息;并且基于网络拓扑结构信息指示计算机网络的拓扑结构中的已识别网络元件的视觉图形符号的确定,输出与视觉图形符号对应的视觉指示符,并且进一步输出显示与已识别网络元件的受关注的操作状态相关联的信息的图形用户界面(GUI)元素,或基于网络拓扑结构信息指示计算机网络的拓扑结构中的已识别网络元件的视觉图形符号的确定,输出与通信地耦接至已识别网络元件的可见资源对应的视觉指示符,并且进一步输出显示与已识别网络元件的受关注的操作状态相关联的信息的图形用户界面(GUI)元素。
[0013] 在所附附图及下列描述中阐述了一个或多个示例的细节。从描述与附图、并且从权利要求书中,其他特征、目标、以及优点将显而易见。

附图说明

[0014] 图1是示出根据本公开的一个或多个方面的包括示例性数据中心的示例性网络的概念图,在该数据中心中控制板利用计算机网络拓扑结构的可视化提供管理相应的计算节点和网络元件的策略控制器。
[0015] 图2是进一步详细示出根据本公开的一个或多个方面的图1中的示例性数据中心的一部分的框图,并且其中,监测与通过示例性服务器上运行的多个进程而共享的资源有关的内部处理器度量。
[0016] 图3A和图3B是示出根据本公开的一个或多个方面的通过示例性用户接口设备呈现的示例性用户界面的概念图。
[0017] 图4是示出根据本公开的一个或多个方面的通过示例性服务器执行的操作的流程图。
[0018] 图5A和图5B是示出根据本公开的技术的多个元件的示例性配置文件层次以及多种类型的组的组配置文件的框图。
[0019] 图6是示出根据本公开的技术的多个元件的示例性配置文件层次以及多种类型的组的组配置文件的框图。
[0020] 图7A和图7B描述了根据本公开的技术的通过用户接口设备显示的示例性用户界面输出。
[0021] 图8是示出根据本公开的技术的计算系统的操作的示例性模式的流程图。
[0022] 图9A是根据本公开的一个或多个方面的示例性网络的框图,在该网络中控制器管理服务器或计算节点并且通过控制板提供计算机网络拓扑结构的可视化。
[0023] 图9B是根据本公开的一个或多个方面的通过控制板显示的计算机网络拓扑结构的概念图。
[0024] 图9C示出了根据本公开的一个或多个方面的计算机网络拓扑结构的示例性表示。
[0025] 图9D是示出根据本公开中所描述的技术的用于生成并且显示包括计算机网络拓扑结构的图形描述的用户界面的示例性方法的流程图。
[0026] 图10示出了根据本公开的一个或多个方面的通过网络的控制板的计算设备而输出的第一示例性用户界面。
[0027] 图11示出了根据本公开的一个或多个方面的通过网络的控制板的计算设备而输出的第二示例性用户界面。

具体实施方式

[0028] 本公开中所描述的图形用户界面包括被布置在布置中(例如,垂直拓扑结构或径向布置)的图形符号,以为实际或所提议的计算机网络提供至少一部分物理设备以及这些物理设备之间的互连的视觉图示。图形表示可以是图形符号的布置,可以包括表示物理设备(诸如相对于彼此以一种或多种布置而布置的计算机网络的交换机设备、路由器、以及服务器)的多个图形符号。通过跨由一种或多种布置圈起的一个或多个内部区域延伸并且在表示物理设备的图形符号之间延伸的多个单独电路,可以示出图形符号之间的互连。计算机网络的物理设备与其他设备之间的互连的图示可以包括在表示物理设备的一个或多个图形符号与表示主机的一种或多种图形表示之间延伸的额外电路,主机耦接至通过图形用户界面建模的计算机网络或构成通过图形用户界面建模的计算机网络的一部分。
[0029] 在一个示例中,策略控制器生成由父代和子代基础设施元件组织的计算机网络的层级拓扑结构的图形表示,作为输出。图形表示可以涉及利用视觉指示符(诸如色彩和/或动画)呈现物理和虚拟元件,视觉指示符视觉地相对于一组条件传送关于一个或多个基础设施元件的信息。技术可以进一步实现通过一种或多种方式进行过滤或分类的资源。
[0030] 技术可以提供一个或多个优点。例如,通过分别根据第一组条件或第二组条件有效地呈现关于网络和/或虚拟化基础设施、计算节点、和/或包括关于具体资源的当前状态或预测未来状态的信息的另一资源的信息,这些技术可以促进(快速)识别不健康状态和/或风险行为。本公开可以将资源的操作状态称为该资源的示例性当前“状态”/预测未来“状态”。例如,关于资源的当前或预测操作状态的信息可以识别有问题的使用模式或其他隐藏的利用效率低下。通过识别有问题的使用模式或其他隐藏的利用效率低下,可以解决和/或化解这种模式与效率低下。因此,如本文所描述,有效地呈现信息可能导致出现较少有问题的使用模式和/或效率低下,由此产生更好地执行并且更为有效的网络和/或虚拟化基础设施。此外,通过识别可能表现出不健康状况/风险行为(例如,受关注的操作状态)的资源,本文描述的技术可以经由部署解决方案、预防措施、和/或补救措施而使得这些资源安全。
[0031] 作为另一示例,本文描述的技术引导关于资源的当前或预测操作状态的信息的传播。这些技术可以通过包括受一种资源的当前/预测未来操作状态影响的任意连接资源的一种或多种连接资源,而引导一种资源的状态信息的传播。如果诸如物理设备或虚拟机的示例性资源被归属于(当前或所预测的)受关注的操作状态,则技术指示通过显示设备对示例性资源进行可视化并且此外还对示例性资源的连接资源进行可视化。示例性可视化可以包括显示状态信息的图形符号和文本数据。因此,所描述的技术涉及技术改进的实际应用,其中,改进解决了技术问题并且从结构上与该解决方案和一些机器的功能相关。
[0032] 图1是示出根据本公开的一个或多个方面的包括示例性数据中心110的示例性网络105的概念图,在数据中心110中控制板利用计算机网络拓扑结构的可视化而提供管理各个计算节点和网络元件的策略控制器。图1示出了托管一个或多个基于云的计算网络、计算域或项目(在本文通常被称为云计算集群)的网络105和数据中心110的一个示例性实现方式。基于云的计算集群可以同位于共同的整个计算环境(诸如单一数据中心)中或跨环境分布(诸如跨不同的数据中心)。例如,基于云的计算集群可以是诸如OpenStack云环境、Kubernetes云环境、或其他计算集群、域、网络等的各种组合的不同的云环境。在其他实例中,网络105和数据中心110的其他实现方式可能是适合的。该实现方式可以包括图1的示例中所包括的组件的子集和/或可以包括图1中未示出的额外组件。
[0033] 在图1的示例中,数据中心110通过服务供应商网络106为耦接至数据中心110的客户104提供应用程序和服务的操作环境。尽管可以将结合图1中的网络105描述的功能和操作示出为跨图1中的多个设备而分布,然而,在其他示例中,归属于图1中的一个或多个设备的特征和技术可以通过一个或多个该设备的本地组件从内部执行。同样,一个或多个该设备可以包括特定的组件并且执行可能另外归属于本文描述的一个或多个其他设备的各种技术。此外,可以结合图1描述或另外通过指定组件、设备、和/或模块执行特定操作、技术、特征、和/或功能。在其他示例中,通过其他组件、设备、或模块可以执行该操作、技术、特征、和/或功能。相应地,即使本文未通过该方式进行具体描述,归属于一个或多个组件、设备、或模块的一些操作、技术、特征、和/或功能可以归属于其他组件、设备、和/或模块。
[0034] 数据中心110托管基础设施装备,诸如联网和存储系统、冗余电源、以及环境控件。服务供应商网络106可以耦接至由其他供应商管理的一个或多个网络、并且由此可以构成大规模公共网络基础设施(例如,互联网)的一部分。
[0035] 在一些示例中,数据中心110可以表示许多地理上分布的网络数据中心中的一个。如图1的示例所示,数据中心110是为客户104提供网络服务的设施。客户104可以是诸如企业和政府或个体的集体实体。例如,网络数据中心可以托管多个企业和终端用户的网络服务。其他示例性的服务可以包括数据存储、虚拟私有网络、流量工程、文件服务、数据挖掘、科学或超级计算等。在一些示例中,数据中心110是单独的网络服务器、网络对等体、或其他。
[0036] 在图1的示例中,数据中心110包括一组存储系统和应用程序服务器,包括经由通过一层或多层物理网络交换机和路由器提供的高速交换结构121而互连的服务器126A至服务器126N(统称“服务器126”)。服务器126用作数据中心的物理计算节点。例如,每个服务器126可以为一个或多个客户指定的虚拟机148(图1中的“VM”)或诸如容器的其他虚拟化实例的运行提供操作环境。可替代地,可以将各个服务器126称为主机计算设备或更简单地称为主机。服务器126可以运行一个或多个虚拟化实例(诸如虚拟机、容器)、或用于运行诸如虚拟网络功能(VNF)的一个或多个服务的其他虚拟运行环境。
[0037] 交换结构121可以包括耦接至机箱交换机122A至122N的分布层的机架顶端(TOR)交换机123A至123N,并且数据中心110可以包括一个或多个非边缘交换机、路由器、集线器、网关、安全设备(诸如防火墙、入侵检测、和/或入侵预防设备)、服务器、计算机终端、膝上型电脑、打印机、数据库、诸如蜂窝电话或个人数字助理的无线移动设备、无线接入点、网桥、电缆调制解调器、应用加速器、或其他网络设备等。数据中心110包括经由通过一层或多层物理网络交换机和路由器提供的高速交换结构121而互连的服务器126A至126N。通过耦接至机箱交换机122A至122N(统称为“机箱交换机122”)的分布层的一组互连的机架顶端(TOR)交换机122A至122N(统称为“TOR交换机123”)而提供交换结构121。尽管未示出,然而,例如,数据中心110还可以包括一个或多个非边缘交换机、路由器、集线器、网关、安全性设备(诸如防火墙、入侵检测、和/或入侵预防设备)、服务器、计算机终端、膝上型电脑、打印机、数据库、诸如蜂窝电话或个人数字助理的无线移动设备、无线接入点、网桥、电缆调制解调器、应用加速器、或其他网络设备。
[0038] 在本示例中,TOR交换机123和机箱交换机122向服务器126提供具有到网关108和服务供应商网络106的冗余(多宿主)连接。机箱交换机122聚合业务流并且提供TOR交换机123之间的高速连接。TOR交换机123可以是提供第2层(MAC)和/或第3层(例如,IP)路由和/或交换功能的网络设备。TOR交换机123与机箱交换机122各自可以包括能够运行一个或多个软件进程的一个或多个处理器及存储器。机箱交换机122耦接至网关108,网关108执行第
3层路由以通过服务供应商网络106而在数据中心110与客户104之间路由网络业务。
[0039] 交换结构121可以执行第3层路由,以通过服务供应商网络106而在数据中心110与客户104之间路由网络业务。网关108用于在交换结构121与服务供应商网络106之间转发并且接收分组。数据中心110包括将交换结构121从物理交换机122、123扩展至软件或“虚拟”交换机的覆盖网络。例如,分别位于服务器126A至126N中的虚拟路由器142A至142N可以通过通信地耦接到位于交换结构121内的一个或多个物理交换机而扩展交换结构121。虚拟交换机可以动态地创建并且管理用于在应用程序实例之间通信的一个或多个虚拟网络。在一个示例中,虚拟路由器142A至142N将虚拟网络作为覆盖网络运行,以提供使应用程序的虚拟地址与其上运行应用程序的服务器126A至126N中的一个的物理地址(例如,IP地址)解耦的能力。每个虚拟网络可以使用其自身的寻址和安全方案并且可以被视为与物理网络及其寻址方案正交。可以使用各种技术通过物理网络在虚拟网络内并且跨虚拟网络传输分组。
[0040] 根据本公开的一个或多个示例,软件定义联网(“SDN”)控制器132提供便于一个或多个虚拟网络在数据中心110内操作的逻辑上并且在一些情况下物理上集中的控制器。贯穿本公开,可以互换使用术语“SDN”控制器与虚拟网络控制器(“VNC”)。在一些示例中,SDN控制器132响应经由北向API 131从编排引擎130接收的配置输入而操作,编排引擎130进而响应从操作用户接口设备129的管理员128接收的配置输入而操作。于2013年6月5日提交并且题为PHYSICAL PATH DETERMINATION FOR VIRTUAL NETWORK PACKET FLOWS的国际申请号PCT/US 2013/044378中找到关于结合数据中心110或其他软件定义网络的其他设备操作的SDN控制器132的额外信息,如同本文全面阐述的,其通过引用结合在此。
[0041] 用户接口设备129可以实现为任意合适的计算系统,诸如由用户和/或管理员128操作的移动或非移动计算设备。例如,根据本公开的一个或多个方面,用户接口设备129可以表示工作站、膝上型电脑或笔记本电脑、桌面型电脑、平板电脑、或由用户操作和/或呈现用户界面的任意其他计算设备。
[0042] 在一些示例中,编排引擎130管理数据中心110的功能,诸如计算、存储、联网、以及应用程序资源。例如,编排引擎130可以在数据中心110内或跨数据中心为租户创建虚拟网络。编排引擎130可以将虚拟机(VM)附接至租户的虚拟网络。编排引擎130可以将租户的虚拟网络连接至外部网络,例如,互联网或VPN。编排引擎130可以实现跨一组VM或租户网络的边界的安全策略。编排引擎130可以在租户的虚拟网络中部署网络服务(例如,负载平衡器)。
[0043] 在一些示例中,SDN控制器132管理网络和联网服务(诸如负载平衡、安全性),并且经由南向API 133将资源从服务器126分配给各种应用程序。即,南向API 133表示由SDN控制器132利用的一组通信协议,以使得网络的实际状态与由编排引擎130指定的期望状态等同。例如,SDN控制器132通过配置物理交换机(例如,TOR交换机123、机箱交换机122、以及交换结构121;物理路由器;诸如防火墙和负载平衡器的物理服务节点;以及诸如VM中的虚拟防火墙的虚拟服务)实现来自编排引擎130的高级请求。SDN控制器132维护状态数据库内的路由、联网、以及配置信息。
[0044] 通常,例如,诸如交换结构121内的网络设备(未示出)之间或服务器126与客户104之间或服务器126之间的任意两个网络设备之间的业务,能够使用多个不同的路径对物理网络进行遍历。例如,两个网络设备之间可以存在相等成本的若干不同路径。在一些情况下,在各个网络交换机节点使用被称为多路径路由的路由策略,可以在各个可能的路径之间分布属于从一个网络设备至另一网络设备的网络业务的分组。例如,互联网工程任务组(IETF)RFC 2992,“Analysis of an Equal‑Cost Multi‑Path Algorithm”描述了用于沿着相等成本的多个路径对分组进行路由的路由技术。RFC 2992的技术通过对经由单一确定性路径从具体网络流发送所有分组的分组报头字段进行散列,而对涉及分配流到箱(bins,仓)的一个具体多路径路由策略进行分析。
[0045] 例如,通过分组报头中使用的5个值或“5元组”能够对“流”进行定义,即,用于通过物理网络对分组进行路由的协议、源IP地址、目的地IP地址、源端口、以及目的地端口。例如,协议指定了诸如TCP或UDP的通信协议,并且源端口和目的地端口指连接的源端口和目的地端口。与具体的流入口匹配的一组一个或多个分组数据单元(PDU)表示流。使用PDU的任意参数可以对流进行广泛地分类,任意参数诸如源和目的地数据链路(例如,MAC)和网络(例如,IP)地址、虚拟局域网(VLAN)标签、传输层信息、多协议标签交换(MPLS)或通用MPLS(GMPLS)标签、以及接收流的网络设备的入口端口。例如,流可以是在传输控制协议(TCP)连接中传输的所有PDU、源自具体的MAC地址或IP地址的所有PDU、具有相同的VLAN标签的所有PDU、或在相同交换机端口处接收的所有PDU。
[0046] 虚拟路由器142(虚拟路由器142A至虚拟路由器142N,图1中统称“虚拟路由器142”)执行数据中心110内的对应虚拟网络的多个路由实例并且将分组路由至在由服务器
126提供的操作环境内运行的适当虚拟机。每个服务器126可以包括虚拟路由器。例如,由服务器126A的虚拟路由器142A从底层物理网络结构接收的分组可以包括外部报头,以允许物理网络结构将有效载荷或“内部分组”隧道传送至服务器126A的网络接口的物理网络地址。
外部报头不仅可以包括服务器的网络接口的物理网络地址,而且还可以包括诸如识别一个虚拟网络以及由虚拟路由器执行的对应路由实例的VxLAN标签或多协议标签交换(MPLS)标签的虚拟网络标识符。内部分组包括内部报头,内部报头具有与通过虚拟网络标识符识别的虚拟网络的虚拟网络寻址空间相符合的目的地网络地址。
[0047] 在一些方面,在分组被传递至适当路由实例之前,虚拟路由器对从底层物理网络结构接收的多个隧道化分组进行缓冲和聚合。即,在一个服务器126上运行的虚拟路由器可以从交换结构121内的一个或多个TOR交换机123接收分组流的入站隧道分组,并且在将隧道分组路由到本地运行的虚拟机之前,虚拟路由器对隧道分组进行处理来构建用于转发至虚拟机的单个聚合隧道分组。即,虚拟路由器可以对多个入站隧道分组进行缓冲并且构建单个隧道分组,在该单个隧道分组中,将多个隧道分组的有效载荷组合成单个有效载荷并且移除隧道分组上的外部/覆盖报头并且以单个报头虚拟网络标识符代替隧道分组上的外部/覆盖报头。以这种方式,如同从虚拟网络接收单个入站隧道分组,聚合隧道分组能够通过虚拟路由器转发至虚拟机。此外,为了执行聚合操作,虚拟路由器可以利用无缝并且自动引导隧道分组聚合的基于内核的卸载引擎。在题为“PACKET SEGMENTATION OFFLOAD FOR VIRTUAL NETWORKS”的美国专利申请14/228,844中描述了虚拟路由器将业务转发至在服务器126上运行的客户指定虚拟机的其他示例性的技术,其通过引用结合在此。
[0048] 在一些示例性实现方式中,当对路由至一个或多个虚拟和/或物理机的分组进行处理时,在服务器126上运行的虚拟路由器142在多个处理器内核之间引导所接收的入站隧道分组,以便于内核之间的分组处理负载平衡。作为一个示例,服务器126A包括多个网络接口卡和运行虚拟路由器142A的多个处理器内核,并且在多个处理器内核之间引导所接收的分组以便于内核之间的分组处理负载平衡。例如,服务器126A的具体网络接口卡可以与网络接口卡将所有接收的分组导向的指定处理器内核相关联。除了对各个接收的分组进行处理,各个处理器内核根据应用于内部和外部分组报头中的至少一个的散列函数,将流卸载至一个或多个其他处理器内核以进行处理以利用其他处理器内核的可用工作周期的优势。
[0049] 在图1的示例中,数据中心110还包括为数据中心110提供监测、调度、以及执行管理的策略控制器201。策略控制器201与监测代理205交互,监测代理205部署在至少一些相应的物理服务器216内以监测物理计算节点的资源使用以及物理主机上运行的诸如VM 148的任意虚拟主机。以这种方式,监测代理205提供用于采集广泛的各种使用度量以及通过策略控制器201安装的策略的本地实施的分布式机制。在示例性实现方式中,监测代理205在提供运行应用程序工作负荷的计算资源的数据中心110的基础设施的最低级“计算节点”上运行。例如,计算节点可以是服务器126的裸金属主机、虚拟机148、容器等。
[0050] 此外,服务器126A至126N中的一个内的每个代理可以通信地耦接至位于相同服务器或不同服务器中的其他代理。代理可以被配置为将通信“ping”(也被称为通信探针或简称为探针)发出至一个或多个不同的代理。图1中的线206示出性地示出了代理之间的通信链路。发出探针的代理可以将探针导向至另一代理,例如,不同服务器中的代理。探针可以被配置为通过用于服务器之间的常规通信的交换结构121内的相同设备而被路由,例如,交换结构的TOR交换机123与机箱交换机122之间。发出一个或多个探针的代理可以监测并且采集与答复所发出的探针而接收的响应或响应的缺失有关的结果。然后,可以将所采集的结果转发至策略控制器201进行进一步的处理,包括例如用于生成图形用户界面,图形用户界面描述与数据中心110内的各个代理之间可能存在的通信链路的当前状态有关的各种度量和/或确定的状态。
[0051] 策略控制器201从监测代理205获得使用度量和与代理之间的通信链路有关的度量,并且构建控制板(dashboard,仪表板)203(例如,一组用户界面)以提供对数据中心110的操作性能和基础设施资源的可见性。例如,策略控制器201可以将控制板203通信至UI设备129用于显示给管理员128。此外,策略控制器201可以对所采集的度量应用分析和机器学习,以提供实时和历史监测、性能可见性、以及动态优化,以改善数据中心110内的编排、安全性、计费、以及计划。
[0052] 如图1的示例所示,策略控制器201可以基于一组策略202定义并维护规则。策略控制器201可以基于策略控制器201的该组策略202而管理每个服务器126的控制。可以响应于管理员128的输入或响应于由策略控制器201执行的操作而创建或导出策略202。例如,策略控制器201可以随时观察数据中心110的操作并且应用机器学习技术以生成一个或多个策略202。根据对关于数据中心110的进一步观察,策略控制器201可以周期性地、偶然、或持续地对策略202进行细化。
[0053] 策略控制器201(例如,策略控制器201内的分析引擎)可以确定如何在一个或多个服务器126处部署、实施、和/或触发策略。例如,策略控制器201可以被配置为将一个或多个策略202推送至在服务器126上运行的一个或多个策略代理205。策略控制器201可以从一个或多个策略代理205接收关于内部处理器度量的信息并且确定是否满足一个或多个度量的规则的条件。策略控制器201可以对从策略代理205接收的内部处理器度量进行分析,并且基于分析指示或致使一个或多个策略代理205执行一个或多个动作以修改与策略代理相关联的服务器的操作。例如,策略控制器201可以结合在代理之间发出通信探针的代理,推送包括所使用的协议、间隔、待监测的度量的配置的一个或多个策略。可以使用从与这些通信探针的发出和监测有关的代理采集的信息,生成直观地描述与所采集的信息相关联和/或从所采集的信息导出的度量有关的一种或多种状态的图形用户界面。在另一示例中,策略控制器201可以被配置为收集关于包括在交换结构121内的设备及设备的任意布置的信息,并且基于一组预定义和/或用户可选择的规则生成直观描述这些设备及这些设备之间的互连的一组用户界面。
[0054] 在一些示例中,策略控制器201可以被配置为通过虚拟机、容器、服务、和/或各个服务器126上运行的应用程序的形式而确定和/或识别元件。如本文使用的,资源通常指虚拟基础设施的消耗性组件,即,诸如CPU、存储器、磁盘、磁盘I/O、网络I/O、虚拟CPU、以及Contrail vrouter(轨迹v路由器)的基础设施所使用的组件。资源可以具有均与通过策略代理205(和/或策略控制器201)分析并且可选报告的度量相关联的一个或多个特征。下面参考图2对资源的示例性原始度量的列表进行描述。
[0055] 通常,基础设施元件,本文也被称为元件,是包括或消耗消耗性资源以进行操作的基础设施的组件。示例性元件包括主机、物理或虚拟网络设备、实例(例如,虚拟机、容器、或其他虚拟操作环境实例)、以及服务。在一些情况下,实体可以是另一实体的资源。例如,虚拟网络设备可以包括虚拟路由器和交换机、vRouter、vSwitch、开放虚拟交换机(Open Virtual Switch)、以及虚隧道转发器(VTF)。度量是针对资源的特征测量元件所消耗的资源量的值。
[0056] 策略控制器201还可以对从策略代理205接收的内部处理器度量进行分析、并且基于各个虚拟机使用服务器126的共享资源的程度而对一个或多个虚拟机148进行分类(例如,类别可以是受CPU限制、受缓存限制、受存储器限制)。策略控制器201可以与编排引擎130交互,以致使编排引擎130基于在服务器126上运行的虚拟机148的类别而调整一个或多个虚拟机148在服务器126上的部署。
[0057] 策略控制器201可以被进一步配置为将关于是否满足规则的条件的信息报告给与用户接口设备129相关联的客户端界面。可替代地,或此外,策略控制器201可以被进一步配置为将关于是否满足规则的条件的信息报告给一个或多个策略代理205和/或编排引擎130。
[0058] 策略控制器201可以实现为任意合适的计算设备或在任意合适的计算设备内、或跨多个计算设备而实现。策略控制器201或策略控制器201的组件可以实现为计算设备的一个或多个模块。在一些示例中,策略控制器201可以包括在数据中心110内包括的一类计算节点(例如,“基础设施节点”)上运行的多个模块。该节点可以是OpenStack基础设施服务节点或Kubernetes主节点、和/或可以实现为虚拟机。在一些示例中,策略控制器201可以具有到数据中心110内的一些或全部其他计算节点的网络连接并且还可以具有到管理数据中心110的其他基础设施服务的网络连接。
[0059] 一个或多个策略202可以包括使一个或多个策略代理205监测与服务器126相关联的一个或多个度量的指令。一个或多个策略202可以包括使一个或多个策略代理205分析与服务器126相关联的一个或多个度量以确定是否满足规则的条件的指令。可替代地或此外,一个或多个策略202可以包括使策略代理205将一个或多个度量报告给策略控制器201的指令,包括这些度量是否满足与一个或多个策略202相关联的规则的条件。所报告的信息可以包括原始数据、汇总数据、以及由一个或多个策略202指定或所需的采样数据。
[0060] 控制板203可以表示用户界面的集合,用户界面呈现关于与网络设备、网络拓扑结构之间的通信连接有关的度量、警报、通知、报告、连接、以及延迟的信息、以及关于数据中心110的其他信息。控制板203可以包括由用户接口设备129呈现的一个或多个用户界面。用户接口设备129可以检测与控制板203的交互作为用户输入(例如,来自管理员128)。控制板203可以响应用户输入而使对数据中心110的各方面或与网络资源有关的数据中心110的一个或多个虚拟机148上运行的项目、数据传输限制或成本、存储限制或成本、和/或计费报告进行配置。
[0061] 控制板203可以包括通过使用直方图的实例而提供资源利用的快速、视觉概况的图形示图。该直方图的仓可以表示使用诸如CPU利用率的给定百分比的资源的实例数量。如果在用户接口设备129处呈现控制板203,则通过使用直方图呈现数据,控制板203通过允许管理员128快速识别指示供应不足或超供应的实例的模式的方式而呈现信息。在一些示例中,控制板203可以通过关于具体项目或主机、或跨全部主机或项目的总资源利用率的实例而突出资源利用率,以使得管理员128可以在整个基础设施的上下文中理解资源利用率。
[0062] 控制板203可以包括与计算、网络、和/或存储资源的使用成本、以及由项目产生的成本有关的信息。控制板203还可以呈现关于数据中心110内的一个或多个虚拟机148或其他资源的健康或风险的信息。在一些示例中,“健康”可以与反映一个或多个虚拟机148的当前状态的指示符对应。例如,表现出健康问题的示例性虚拟机当前可以在用户指定的性能策略之外操作。“风险”可以与反映一个或多个虚拟机148的预测未来状态的指示符对应,使得表现出风险问题的示例性虚拟机在未来可能是不健康的。基于所监测的度量和/或与这些度量对应的警报可以确定健康和风险指示符。例如,如果策略代理205从主机接收不到心跳,则策略代理205可以将该主机及其全部实例表征为不健康。策略控制器201可以对控制板203进行更新,以反映相关主机的健康状况,并且可以指示不健康状态的原因是一个或多个“心跳缺失”。
[0063] 一个或多个策略代理205可以在一个或多个服务器126上运行,以监测与服务器126和/或服务器126上运行的虚拟机148相关联的一些或全部性能度量。策略代理205可以对所监测的信息和/或度量进行分析并且生成与服务器126和/或该服务器126上运行的一个或多个虚拟机148的操作状态相关联的操作信息和/或智能信息。策略代理205可以与操作一个或多个服务器126的内核交互,以通过在服务器126处运行的一个或多个进程和/或虚拟机148而确定、提取、或接收与共享资源的使用相关联的内部处理器度量。策略代理205可以在各个服务器126处执行本地监测和分析。在一些示例中,策略代理205可以通过接近实时和/或看似接近实时的方式执行监测和/或分析。
[0064] 在图1的示例中,根据本公开的一个或多个方面,策略代理205可以监测服务器126。例如,服务器126A的策略代理205A可以与服务器126A的组件、模块、或其他元件和/或服务器126上运行的一个或多个虚拟机148交互。作为该交互的结果,策略代理205A可以采集关于与服务器126和/或虚拟机148相关联的一个或多个度量的信息。该度量可以是原始度量,即,可以直接基于服务器126、虚拟机148、和/或数据中心110的其他组件,或者直接从服务器126、虚拟机148、和/或数据中心110的其他组件读取。在其他示例中,一个或多个该度量可以是包括从原始度量推导的计算的度量。在一些示例中,度量可以与和具体资源有关的总容量的百分比对应,诸如CPU利用率的百分比、或CPU消耗、或3级缓存使用率。然而,度量可以与其他类型的测量对应,诸如一个或多个虚拟机148读存储器并且写入存储器的频率。
[0065] 策略控制器201可以将策略代理205配置为监测触发警报的条件。例如,策略控制器201可以检测来自用户接口设备129的、策略控制器201确定与用户输入对应的输入。策略控制器201可以进一步确定用户输入与足以基于一个或多个度量的值配置用户指定警报的信息对应。策略控制器201可以对输入进行处理并且生成实现警报设置的一个或多个策略202。在一些示例中,该策略202可以被配置为使得在通过服务器126处的策略代理205采集的一个或多个度量的值超过特定阈值时而触发警报。策略控制器201可以将关于所生成的策略202的信息通信至在服务器126上运行的一个或多个策略代理205。如从策略控制器201接收的策略202规定的,策略代理205可以针对警报所基于的条件对服务器126进行监测。
[0066] 例如,策略代理205A可以监测服务器126A处的一个或多个度量。该度量可能涉及服务器126A、服务器126A上运行的所有虚拟机148、和/或虚拟机148的特定实例。策略代理205A可以基于所监测的度量确定一个或多个值超过从策略控制器201接收的一个或多个策略202所设置的阈值。例如,策略代理205A可以确定CPU使用率是否超过由策略设置的阈值(例如,服务器126A CPU使用率>50%)。在其他示例中,策略代理205A可以评估一个或多个度量是否小于阈值(例如,如果服务器126A可用盘空间<20%,则发出警告)、或等于阈值(例如,如果虚拟机148的实例数量等于20,则发出警告)。如果策略代理205A确定所监测的度量触发阈值,则策略代理205A可以发出警报条件并且将关于警报的信息通信至策略控制器201。策略控制器201和/或策略代理205A可以对警报产生作用,诸如生成通知等。策略控制器201可以更新控制板203以包括通知。策略控制器201可以使在用户接口设备129处呈现已更新的控制板203,由此将警报条件通知给管理员128。
[0067] 在一些示例中,策略控制器201可以生成策略并且在无用户输入的情况下建立警报条件。例如,策略控制器201可以对通过策略代理205收集的度量应用分析和机器学习。策略控制器201可以在各个时间段内对通过策略代理205收集的度量进行分析。策略控制器201可以基于该分析确定足以配置一个或多个度量的警报的信息。策略控制器201可以对信息进行处理并且生成实现警报设置的一个或多个策略202。策略控制器201可以将关于策略的信息通信至服务器126上运行的一个或多个策略代理205。之后,各个策略代理205可以监测条件并且根据在无用户输入的情况下生成的相应策略202响应触发警报的条件。
[0068] 根据本文描述的技术,策略控制器201生成数据中心110的元件的配置文件213。配置文件与元件或一组元件相关联并且是针对警报的对应度量而评估的警报集合,以确定相关联的元件或一组元件是否“有效”或“无效”。
[0069] 例如,策略控制器201响应于经由UI设备129所接收的输入可以生成相应主机、实例(例如,VM 148)、网络设备、其组合、以及其资源(例如,CPU、存储器、盘、网络接口等)的配置文件213。此外,用户或管理员将数据中心110的元件配置为一组或多组元件的成员,以使得元件和组合具有“成员关系”。作为示例,OpenStack主机(例如,任意服务器126)能够是各组一个或多个主机的一个或多个“主机聚合”的成员。Kubernete容器能够是(1)集群(pod)、(2)复制控制器、(3)名称空间、以及(4)若干不同的服务中的成员。虚拟机148A能够被配置为各组一个或多个实例中的一个或多个“实例聚合”的成员。网络设备能够被配置为各组一个或多个网络设备中的一个或多个“网络设备聚合”的成员。在上述各个示例中,用户或代理可以定义每个元件和一组元件的配置文件213。
[0070] 通常,并且如本文结合图2进一步描述的,该技术利用与物理处理器内部共享的资源有关的特定内部处理器度量,诸如与运行处理器内的一个或多个内核的软件所共享的处理器的内部缓存有关或者物理处理器内的内核所消耗的存储器总线带宽有关的度量。与物理微处理器内所共享的资源有关的该度量,可以提供关于在各个服务器126上运行的虚拟机148(或虚拟机148内的进程)如何竞争或通过其他方式使用处理器内部的共享资源的了解。可以使用该信息精确定位瓶颈、资源竞争的实例、以及性能问题,该性能问题可能另外从诸如CPU使用率或CPU负载度量的其他度量不显而易见。
[0071] 在一些示例中,一个或多个虚拟机148在给定服务器上操作和/或使用该共享资源(诸如共享缓存或存储器总线)的方式,可能对该同一服务器上的其他虚拟机148的操作产生不利影响。然而,例如,通过仅对CPU使用率进行监测,可能难以识别哪一具体的虚拟机致使其他虚拟机148出现性能问题。然而,通过对各个服务器126的处理器内部的资源的度量进行监测,不仅可以识别哪一虚拟机在给定服务器上致使其他虚拟机148出现性能问题,而且还可以采取措施来改善运行一个或多个服务器126的处理器的所有虚拟机148的策略控制。如果跨数据中心110应用合适的策略控制,则可以改善数据中心110在聚合时的操作、效率、以及一致性能,并且更有效地遵循服务级协议和性能保证。
[0072] 通过检测内部处理器度量而将服务器的处理器内所共享的资源识别为由包括位于处理器内部的硬件内核上运行的软件进程的元件所消耗,数据中心110的策略控制器201可以通过可能对该服务器上运行的其他虚拟机148、容器、和/或进程的性能产生不利影响的方式,识别消耗共享资源的虚拟机148、容器、和/或进程。通过识别可能对其他进程的操作产生不利影响的进程,数据中心110的策略控制器201可以采取措施来解决该进程如何操作或使用共享资源并且由此改善任意给定服务器上运行的虚拟机、容器、和/或进程的聚合性能、和/或统一改善所有服务器126上的操作。因此,由于识别对其他进程的操作产生不利影响的进程并且采取适当的响应性措施,虚拟机148可以在服务器126上更有效地执行计算操作并且更有效地使用服务器126的共享资源。通过更有效地执行计算操作并且更有效地使用服务器126的共享资源,数据中心110可以更快速并且以较少的延迟执行计算任务。因此,因为识别并且解决对其他虚拟机148的操作产生不利影响的任意虚拟机148可以产生使得服务器126和数据中心110更快速并且以较少延迟执行计算任务的效果,所以本公开的各方面可以改进服务器126和数据中心110的功能。
[0073] 此外,可以在各个服务器126处本地实现(例如,通过策略代理205)对触发警报的度量或条件的评估。通过本地执行该评估,能够以更高的频率访问与评估相关联的性能度量,即,能够允许或通过其他方式促进更快地执行评估。在一些情况下,本地实现评估可以避免将指示与评估相关联的性能度量的信息传输至用于分析的另一计算设备(例如,策略控制器201)。因此,能够减少或完全避免与该信息的传输有关的延迟,这在评估中所包括的性能度量的数量增加的情况中能够导致实质性的性能改进。在另一示例中,与在操作条件的评估期间所获得的原始数据相反,当发送指示或通过其他方式表示警报和/或事件的发生的信息时,能够显著减少从计算设备发送的信息量。在又一示例中,根据与延迟减轻有关的效率增益,能够减少生成警报所花费的时间。
[0074] 图1中示出和/或本公开的其他地方示出或描述的各种组件、功能单元、和/或模块(例如,用户接口设备129、编排引擎130、SDN控制器132、以及策略控制器201、策略代理205)可以使用驻留在一个或多个计算设备中和/或在一个或多个计算设备处运行的软件、硬件、固件、或硬件、软件、以及固件的混合,执行所描述的操作。例如,计算设备可以通过多个处理器或多个设备执行一个或多个该模块。计算设备可以将一个或多个该模块作为在底层硬件上运行的虚拟机而运行。一个或多个该模块可以作为操作系统或计算平台的一个或多个服务而运行。一个或多个该模块可以作为计算平台的应用层上的一个或多个可执行程序而运行。
[0075] 在其他示例中,可以通过专用硬件设备实现由模块提供的功能。尽管可以单独示出一个或多个存储设备内所包括的特定模块、数据存储、组件、程序、可执行文件、数据项、功能单元、和/或其他项,然而,可以对一个或多个该项进行组合并且操作为单一模块、组件、程序、可执行文件、数据项、或功能单元。例如,可以对一个或多个模块或数据存储进行组合或部分组合,以使得他们作为单一模块操作或提供功能。此外,例如,一个或多个模块可以结合彼此而操作,以使得一个模块用作另一模块的服务或扩展。此外,存储设备内示出的每个模块、数据存储、组件、程序、可执行文件、数据项、功能单元、或其他项可以包括未示出的多个组件、子组件、模块、子模块、数据存储、和/或其他组件、或模块、或数据存储。此外,可以通过各种方式实现存储设备内示出的每个模块、数据存储、组件、程序、可执行文件、数据项、功能单元、或其他项。例如,存储设备内示出的每个模块、数据存储、组件、程序、可执行文件、数据项、功能单元、或其他项可以实现为在计算设备上运行的操作系统的一部分。
[0076] 当被触发或“有效”时,配置文件213中包括的警报确定配置文件213是否是有效的。此外,其中一个元件是成员的一组元件的警报还可以确定元件的配置文件213是否是有效的。因为元件可以是至少相对于元件重叠的多个组的成员,所以生成配置文件213并且在一些情况下将配置文件213分配至策略代理205的策略控制器201可以允许数据中心110的虚拟化基础设施的用户和管理员通过配置另一组中的元件或组的成员关系而利用配置文件213表达应用于元件或组的警报的组合,而无需手动配置元件或组的整体配置文件213。此外,通过使用作为组成员的一组新的元件对组的配置文件213进行评估,技术可以动态地考虑组的成员关系变化,而无需对组的配置文件213进行重新配置。
[0077] 策略控制器201可以将配置文件213分配至在计算设备(例如,服务器126或数据中心110的网络设备)上运行的策略代理205。策略代理205基于配置文件中包括的一个或多个警报并且基于由策略代理205接收的、指示元件(并且,至少在一些情况下,元件是组的成员,一个或多个其他元件也是组的成员)的性能的度量而对各个所接收的配置文件213进行评估。
[0078] 在题为“MICRO‑LEVEL MONITORING,VISIBILITY AND CONTROL OF SHARED RESOURCES INTERNAL TO  A PROCESSOR OF A HOST MACHINE  FOR A  VIRTUAL ENVIRONMENT”的美国专利申请15/797,098中对策略控制器201的进一步示例性的技术进行了描述,通过引用结合在此。
[0079] 图2是根据本公开的一个或多个方面的进一步详细示出图1中的示例性数据中心110的一部分以及在数据中心中对由示例性服务器126上运行的多个进程所共享的资源有关的内部处理器度量进行监测的框图。图2中示出的是用户接口设备129(由管理员128操作)、策略控制器201、以及服务器126。
[0080] 策略控制器201可以表示根据本公开的一个或多个方面执行操作的工具、系统、设备、以及模块的集合。策略控制器201可以执行云服务优化服务,云服务优化服务可以包括对软件定义基础设施的高级监测、调度、以及执行管理,其中,容器和虚拟机(VM)能够具有比传统开发环境短得多的寿命周期。策略控制器201可以利用分布式架构(例如,数据中心110)中的大数据分析和机器学习。策略控制器201可以提供接近实时和历史的监测、性能可视化、以及动态优化。通过与结合图1提供的策略控制器201的描述一致的方式可以实现图2中的策略控制器201。
[0081] 在图2中,策略控制器201如图1所示包括策略202和控制板203。通过与结合图1提供的策略202和控制板203的描述一致的方式也可以实现策略202和控制板203。在一些示例中,如图2所示,可以将策略202实现为数据存储。在该示例中,策略202可以表示用于存储策略202和/或与策略202有关的信息的任意合适的数据结构或存储介质。可以主要由策略控制引擎211维护策略202,并且在一些示例中,可以通过NoSQL数据库实现策略202。
[0082] 在本示例中,图2中的策略控制器201进一步包括策略控制引擎211、适配器207、报告和通知212、分析引擎214、使用度量数据存储器216、以及数据管理器218。
[0083] 策略控制引擎211可以被配置为根据本公开的一个或多个方面控制策略控制器201的一个或多个组件之间的交互。例如,策略控制引擎211可以创建和/或更新控制板203、管理策略202,并且控制适配器207。策略控制引擎211还可以使分析引擎214基于来自使用度量数据存储器216的数据而生成报告和通知212,并且可以将一个或多个报告和通知212传递至用户接口设备129和/或数据中心110的其他系统或组件。
[0084] 在一个示例中,策略控制引擎211调用一个或多个适配器207以发现指定平台的资源并且与指定平台的资源和/或其他云计算平台交互。例如,一个或多个适配器207可以包括被配置为与服务器126上操作的OpenStack云操作系统通信的OpenStack适配器。一个或多个适配器207可以包括被配置为与服务器126上的Kubernete平台通信的Kubernete适配器。适配器207可以进一步包括亚马逊网络服务(Amazon Web Services)适配器、微软Azure适配器、和/或谷歌计算引擎(Google Compute Engine)适配器。该适配器能够使得策略控制器201学习并且映射由服务器126使用的基础设施。策略控制器201可以同时使用多个适配器207。
[0085] 经由策略控制器201的一个或多个组件可以创建、维护、和/或更新报告和通知212。在一些示例中,报告和通知212可以包括控制板203内所呈现的信息并且可以包括示出实例如何随着时间消耗基础设施资源的信息。如下面进一步描述的,通知可以基于警报,并且通知可以通过控制板203或通过其他方式呈现。
[0086] 可以通过不同范围:项目、主机、或分部的组织而在指定的时间段内生成一个或多个报告。在一些示例中,该报告可以显示项目中或主机所调用的各个实例的资源利用率。控制板203可以包括以图形和表格形式呈现报告的信息。控制板203可以进一步使得报告数据下载为HTML格式报告、原始逗号分隔值(CSV)文件、或JSON格式的数据以进一步分析。
[0087] 报告和通知212可以包括各种报告,包括项目报告、主机报告、和/或分部报告,其中每个报告可以包括在控制板203内。可以针对单一项目或所有的项目生成项目报告(设置的管理员128授权访问项目或所有的项目)。项目报告可以显示资源分配、实际使用率、以及收费。资源分配可以包括诸如vCPU、浮动的IP地址、以及存储体积的资源的静态分配。可以在控制板203内显示项目中的每个实例的实际资源使用率,并且作为项目中的所有实例的聚合的使用率总和。资源使用率可以显示由实例消耗的实际物理资源,诸如CPU使用率百分比、存储器使用率百分比、网络I/O、以及磁盘I/O。可以显示项目中的每个实例的资源使用率的收费成本。此外,可以显示项目整体的风格类型和资源类型(计算、网络、存储)的成本明细表。
[0088] 作为一个示例,策略控制引擎211可以引导分析引擎214针对诸如云计算环境的主机聚合中的所有主机或一组主机生成主机报告。在一些示例中,仅管理员角色的用户可以生成主机报告。主机报告可以显示主机的聚合资源使用率、以及主机上所调用的每个实例的资源使用率的明细表。主机报告还可以显示主机上每个实例所花费的成本、以及总成本和每种风格类型的总成本。这提供由主机产生的收益的指示。
[0089] 作为另一示例,分部报告显示向分部收取的总成本。在一些示例中,管理员128可以在多个分部之间划分项目成本,并且项目可以托管由多个分部使用的应用程序和服务。在该示例中,每个分部可以完全或部分地负责与一个或多个项目相关联的成本。控制板203可以通过控制板203中呈现的分部报告,提供对多个分部之间的项目成本进行划分的支持。
[0090] 在一些示例中,策略控制器201可以配置警报,并且当一个或多个服务器126和/或在一个或多个服务器126上运行的一个或多个虚拟机148(或容器)满足条件时,策略控制器201可以生成警报通知。策略代理205可以监测服务器126和虚拟机148处的度量并且分析与应用于这些服务器126和/或虚拟机148的警报的条件的度量对应的原始数据、和/或各个该服务器126和/或服务器126上运行的实例。在一些示例中,警报可以应用于识别元件的类型以监测条件的特定“范围”。例如,该元件可以是“主机”、“实例”、或“服务”。警报可以应用于一个或多个该元件。例如,警报可以应用于数据中心110内的所有主机、或特定主机聚合内的所有主机(即,服务器126或虚拟机148的集群、管理主机的组或池)。
[0091] 策略代理205可以持续收集关于主机的度量的测量,例如,服务器126的具体VM 148、以及其实例。对于具体的警报,策略代理205可以根据用户指定的函数(平均值、标准偏差、最小值、最大值、求和)聚合采样并且针对每个用户指定的间隔产生单次测量。策略代理
205可以将每个函数和/或测量与阈值进行比较。在一些示例中,通过包括警报条件的警报或策略所评估的阈值可以是静态阈值或动态阈值。对于静态阈值,策略代理205可以将度量或与度量对应的原始数据与固定值进行比较。例如,策略代理205可以使用用户指定的比较函数(高于、低于、等于)将度量与固定值进行比较。对于动态阈值,策略代理205可以将度量或与度量对应的原始数据与一组资源的历史趋势值或历史基线进行比较。例如,策略代理
205可以将度量或其他测量与策略代理205随着时间而学习的值进行比较。
[0092] 在一些示例性实现方式中,策略控制器201被配置为应用动态阈值,以能够基于历史趋势实现对资源消耗的异常检测。例如,资源消耗在一天中的各个小时和一周中的每天可能明显的变化。这可能使得难以设置度量的静态阈值。例如,对于10:00AM与12:00PM之间的周一上午,70%的CPU使用率可以被视为是正常的,但是,对于9:00PM与10:00PM之间的周六夜间,相同量的CPU使用率可能被视为异常高。利用动态阈值,策略代理205可以在应用警报的范围内学习跨所有资源的度量的趋势。例如,如果为主机聚合配置警报,则策略代理205可以从针对该聚合中的主机所收集的度量值学习基线。相似地,对于具有针对项目配置的动态阈值的警报,策略代理205可以从针对该项目中的实例所收集的度量值而学习基线。
因此,当测量偏离在具体时间段内所学习的基线值时,策略代理205可以生成警报。具有动态阈值的警报可以由度量、建立基线的时间段、以及灵敏度配置。策略代理205可以将灵敏度设置应用于偏离基线的测量并且可以被配置为“高”、“中”、或“低”灵敏度。与配置为“低”灵敏度的警报相比,配置为“高”灵敏度的警报可能使策略代理205向策略控制器201报告与基线值的更小偏差。
[0093] 在一些示例性实现方式中,可以通过警报的模式来表征警报,诸如“警告模式”或“事件模式”。当警报被配置为警告时,无论警告的状态何时变化,策略代理205可以向策略控制器器201发送通知或通过其他方式通知策略控制器201和/或数据中心110的其他组件。在一些示例中,该警告起初可以处于“学习”状态,直至策略代理205收集足够的数据对警告的条件进行评估。当满足警报的条件时,警告可以是“有效的”,并且当不满足条件时,警告可以是“无效的”。
[0094] 当将警报被配置为事件时,策略代理205可以在满足警报的条件的每个间隔内向策略控制器201发送通知或通过其他方式通知策略控制器201(和/或数据中心110的其他组件)。作为示例,考虑在60秒间隔内平均CPU使用率为90%以上的警报。如果警报模式是“警告”,则当警报在时间T1变得‘有效’时策略代理205可以向策略控制器201发送通知。在时间T5,当CPU下降至90%以下时,策略代理205可以发送警告是“无效”的通知。如果同一警报被配置为处于‘事件’模式,则策略代理205可以在CPU负载超过90%的五个间隔中的每个间隔内向策略控制器201发送通知。
[0095] 在一些示例中,每个警报可以包括在由策略控制器201维护的策略202内并且可以应用于数据中心110内的特定资源。响应于来自用户的输入或响应于其他设置,警报可以应用于具体范围:“主机”、“实例”、以及“服务”。此外,对于具体范围类型,警报可以应用于该范围类型的资源的子集。例如,当将警报的范围配置为“主机”时,警报可以应用于所有主机或属于指定主机聚合的主机。当将警报的范围设置为“实例”时,警报可以针对一个或多个具体的项目配置并且被配置为应用于一个或多个具体的项目。策略控制器201可以针对与范围匹配的任意新资源对警报进行自动配置。例如,策略控制器201可以响应于用户输入为给定项目(例如,通过一个或多个虚拟机148执行)配置具有“实例”范围的警报。之后,当一个或多个服务器126在该项目中创建实例时,策略控制器201可以针对新的实例配置警报。
[0096] 相应地,在一些示例中,警报的基本配置设置可以包括识别警报的名称、范围(应用警报的资源类型:“主机”或“实例”)、聚合(应用警报的一组资源)、模式(“警告”或“事件”)、度量(例如,通过策略代理205监测的度量)、聚合函数(例如,在每个测量间隔期间,策略代理205如何可以对采样进行组合‑示例包括平均值、最大值、最小值、求和、以及标准差函数)、比较函数(例如,如何对测量与阈值进行比较,诸如测量是否高于、低于、或等于阈值)、阈值(与度量测量进行比较的值)、单位类型(通过度量类型确定)、以及间隔(以秒或其他时间单位的测量间隔的持续时间)。
[0097] 警报可以定义应用于被监测的一组元件的策略,诸如项目中的虚拟机。当观察给定元件的警报条件时,生成通知。用户可以将警报配置为向外部HTTP端点发布通知。策略控制器201和/或策略代理205可以通过每个通知向端点发布JSON有效载荷。可以通过下列内容表示有效载荷的模式,其中,“字符串”和0是分别指示值的类型的通用占位符(字符串和数字):
[0098]
[0099]
[0100] 在一些示例中,“spec”对象描述了生成该通知的警报配置。在一些示例中,“status”对象描述了该具体通知的临时事件信息,诸如观察条件时的时间和条件被观察的元件等。
[0101] 对于每个字段,上面表示的模式可以具有下列值:
[0102] severity:“关键”、“错误”、“警告”、“信息”、“无”
[0103] metricType:指度量。
[0104] Mode:“警告”、“事件”
[0105] Module:生成警报的分析模块。“警报”、“健康/风险”、“service_alarms”中的一项。
[0106] state:警报的状态。对于“警告”模式警报,有效值为“有效”、“无效”、“学习”。对于“事件”模式警报,状态始终是“被触发”。
[0107] Threshold:阈值单位与metricType对应。
[0108] elementType:实体的类型。“实例”、“主机”、“服务”中的一项。
[0109] elementId:实体的UUID。
[0110] elementDetails:关于实体的补充细节。该对象的内容取决于elementType。对于“主机”或“服务”,对象为空。对于“实例”,对象包含hostId和projectId。
[0111]
[0112] 分析引擎214可以对使用度量数据存储器216内存储的数据执行分析、机器学习、以及其他功能,或者执行与使用度量数据存储器216内存储的数据有关的分析、机器学习、以及其他功能。分析引擎214可以进一步基于该信息而生成报告、通知、以及警报。例如,分析引擎214可以分析使用度量数据存储器216中存储的信息并且基于关于内部处理器度量的信息识别一个或多个虚拟机148,一个或多个虚拟机148以对服务器126上运行的其他虚拟机148的操作产生不利影响的方式而操作。响应于识别以对其他虚拟机148的操作产生不利影响的方式而操作的一个或多个虚拟机148,分析引擎214可以生成一个或多个报告和通知212。可替代地或此外,分析引擎214可以发出警报和/或使或指示策略代理205采取措施来解决已识别的虚拟机148的操作。分析引擎214还可以对一个或多个虚拟机148的度量进行分析并且基于该分析在各个虚拟机148趋于消耗共享的资源方面来表征一个或多个虚拟机148。例如,分析引擎214可以将一个或多个虚拟机148表征为受CPU限制、受存储器限制、或受缓存限制。
[0113] 使用度量数据存储器216可以表示用于存储与通过策略代理205收集的度量有关的信息的任意合适的数据结构或存储介质。例如,可以使用NoSQL数据库实现使用度量数据存储器216。使用度量数据存储器216中存储的信息是可以搜索和/或分类的,以使得分析引擎214、数据管理器218、或策略控制器201的另一组件或模块可以提供请求来自使用度量数据存储器216的信息的输入,并且响应于输入而接收使用度量数据存储器216内存储的信息。使用度量数据存储器216可以主要由数据管理器218维护。
[0114] 在一些示例中,“度量”是基础设施中的资源的测量值。策略代理205可以收集并且计算主机和实例所利用的资源的度量。策略代理205可以收集并且计算与位于数据中心的服务器内的各个代理之间所发出的通信探针有关的度量。可以基于度量的类型将度量组织成层级类别。一些度量是总容量的百分比。在该情况下,度量的类别确定计算百分比的总容量。例如,host.cpu.usage表示所消耗的CPU相对于主机上可用的总CPU的百分比。相反,instance.cpu.usage是所消耗的CPU相对于实例可用的总CPU的百分比。作为示例,考虑使用具有20个内核的主机上的一个内核的50%的实例。实例的host.cpu.usage将是2.5%。如果实例被分配2个内核,则其instance.cpu.usage将是25%。
[0115] 可以为任意度量配置警报。还可以在控制板203内的用户界面上以例如基于图表的形式显示多个度量。当触发度量的警报时,可以在发生事件之时在图表上绘制警报。以这种方式,可能不被直接绘制成图表的度量仍可以在时间上与其他度量视觉相关。在下列示例中,主机可以使用各自具有一个或多个关联度量(例如,存储器带宽(“mem_bw”)和使用率(“usage”))的一种或多种资源,例如,CPU(“cpu”)和网络(“network”)。同样,实例可以使用各自具有一个或多个关联度量(例如,存储器带宽(“mem_bw”)和使用率(“usage”))的一种或多种资源,例如,虚拟CPU(“cpu”)和网络(“network”)。实例自身可以是主机或实例聚合的资源,主机自身可以是主机聚合的资源等。
[0116] 在一些示例中,主机可用的原始度量可以包括:host.cpu.io_wait、host.cpu.ipc、host.cpu.l3_cache.miss、host.cpu.l3_cache.usage、host.cpu.mem_bw.local、host.cpu.mem_bw.remote**、host.cpu.mem_bw.total**、host.cpu.usage、host.disk.io.read、host.disk.io.write、host.disk.response_time、host.disk.read_response_time、host.disk.write_response_time、host.disk.smart.hdd.command_timeout、host.disk.smart.hdd.current_pending_sector_count、
host.disk.smart.hdd.offline_uncorrectable、host.disk.smart.hdd.reallocated_sector_count、host.disk.smart.hdd.reported_uncorrectable_errors、
host.disk.smart.ssd.available_reserved_space、host.disk.smart.ssd.media_wearout_indicator、host.disk.smart.ssd.reallocated_sector_count、
host.disk.smart.ssd.wear_leveling_count、host.disk.usage.bytes、
host.disk.usage.percent、host.memory.usage、host.memory.swap.usage、
host.memory.dirty.rate、host.memory.page_fault.rate、host.memory.page_in_out.rate、host.network.egress.bit_rate、host.network.egress.drops、
host.network.egress.errors、host.network.egress.packet_rate、
host.network.ingress.bit_rate、host.network.ingress.drops、
host.network.ingress.errors、host.network.ingress.packet_rate、
host.network.ipv4Tables.rule_count、host.network.ipv6Tables.rule_count、openstack.host.disk_allocated、openstack.host.memory_allocated、以及
openstack.host.vcpus_allocated。
[0117] 在一些示例中,主机可用的计算度量包括:host.cpu.normalized_load_1M、host.cpu.normalized_load_5M、host.cpu.normalized_load_15M、host.cpu.temperature、host.disk.smart.predict_failure、以及host.heartbeat。
[0118] 例如,host.cpu.normalized_load是被计算为正在运行和准备运行的线程的数量与CPU内核的数量之比的归一化负载值。该度量族可以表示CPU的需求等级。如果值超过1,则比现有CPU内核更多的线程准备运行以执行运行。可以将归一化负载设置作为1分钟、5分钟、以及15分钟间隔内的平均值。
[0119] 度量host.cpu.temperature是从处理器和机箱中的多个温度传感器导出的CPU温度值。该温度提供物理主机内以摄氏度为单位的温度的一般指示符。
[0120] 度量host.disk.smart.predict_failure是一个或多个策略代理205可以使用通过磁盘硬件所提供的多个S.M.A.R.T.计数器而计算的值。当从S.M.A.R.T.计数器的组合确定磁盘可能出现故障时,策略代理205可以将predict_failure设置为真(值=1)。针对该度量触发的警报可以将磁盘标识符包含在元数据中。
[0121] 度量host.heartbeat是可以指示策略代理205是否在主机上运作的值。策略控制器201可以通过向各个策略代理205发出状态请求而对每个主机的状态进行周期性检查。针对每个成功的响应使host.heartbeat度量递增。警报可以被配置为在给定间隔内对缺失的心跳进行检测。
[0122] 在一些示例中,可以获得实例可用的下列原始度量:instance.cpu.usage、instance.cpu.ipc、instance.cpu.l3_cache.miss、instance.cpu.l3_cache.usage、instance.cpu.mem_bw.local、instance.cpu.mem_bw.remote、instance.cpu.mem_bw.total、instance.disk.io.read、instance.disk.io.write、instance.disk.usage、instance.disk.usage.gb、instance.memory.usage、instance.network.egress.bit_rate、instance.network.egress.drops、instance.network.egress.errors、instance.network.egress.packet_rate、instance.network.egress.total_bytes、instance.network.egress.total_packets、instance.network.ingress.bit_rate、instance.network.ingress.drops、instance.network.ingress.errors、
instance.network.ingress.packet_rate、以及instance.network.ingress.total_bytes、以及instance.network.ingress.total_packets。
[0123] 在一些示例中,可以获得实例可用的下列计算度量:instance.heartbeat。
[0124] 在一些示例中,可以获得虚拟路由器142可用的下列原始度量:host.contrail.vrouter.aged_flows、host.contrail.vrouter.total_flows、
host.contrail.vrouter.exception_packets、host.contrail.vrouter.drop_stats_flow_queue_limit_exceeded、host.contrail.vrouter.drop_stats_flow_table_full、host.contrail.vrouter.drop_stats_vlan_fwd_enq、host.contrail.vrouter.drop_stats_vlan_fwd_tx、host.contrail.vrouter.flow_export_drops、
host.contrail.vrouter.flow_export_sampling_drops、host.contrail.vrouter.flow_rate_active_flows、host.contrail.vrouter.flow_rate_added_flows、以及
host.contrail.vrouter.flow_rate_deleted_flows。
[0125] 在一些示例中,在控制板203内包括的OpenStack Project Chart View内可用下列原始度量:openstack.project.active_instances、openstack.project.vcpus_allocated、openstack.project.volume_storage_allocated、openstack.project.memory_allocated、openstack.project.floating_ip_count、openstack.project.security_group_count、以及openstack.project.volume_count。
[0126] 在一些示例中,在控制板203内包括的Kubernetes Pod Chart View中可用下列原始度量:pod.memory_allocated、pod.vcpus_allocated。
[0127] 数据管理器218提供用于与服务器126中所部署的策略代理205通信的消息机制。例如,数据管理器218可以向所配置的程序策略代理发出消息并且可以管理从策略代理205接收的度量和其他数据、并且将该数据的一些或全部存储在使用度量数据存储器216内。例如,数据管理器218可以从一个或多个策略代理205接收原始度量。可替代地或此外,数据管理器218可以接收由策略代理205对原始度量执行的分析结果。可替代地或此外,数据管理器218可以接收与一个或多个输入/输出设备248的使用模式有关、可用于对一个或多个输入/输出设备248进行分类的信息。数据管理器218可以将该信息中的一些或全部存储在使用度量数据存储器216内。
[0128] 在图2的示例中,服务器126表示为诸如VM 148的虚拟主机提供运行环境的物理计算节点。即,服务器126包括底层物理计算硬件244,底层物理计算硬件244包含一个或多个物理微处理器240、诸如DRAM的存储器249、电源241、一个或多个输入/输出设备248、以及一个或多个存储设备250。如图2中所示,物理计算硬件244为管理程序210提供运行环境,管理程序210是提供轻量级内核209并且操作以向虚拟机148、容器、和/或其他类型的虚拟主机提供虚拟化操作环境的软件和/或固件层。服务器126可以表示图1中示出的一个服务器126(例如,服务器126A至服务器126N)。
[0129] 在示出的示例中,处理器240是集成电路,该集成电路具有用于执行指令的一个或多个内部处理器内核243、一个或多个内部缓存245、存储器控制器246、以及输入/输出控制器247。在图2的示例中,尽管示出了仅具有一个处理器240的服务器126,然而,在其他示例中,服务器126可以包括多个处理器240,其中,每个处理器240可以包括多个处理器内核。
[0130] 服务器126中的一个或多个设备、模块、存储区域、或其他组件可以互连,以实现组件间的通信(物理地、通信地、和/或操作地)。例如,内核243可以经由存储器控制器246从存储器249读取数据以及将数据写至存储器249,存储器控制器246提供到存储器总线242的共享接口。输入/输出控制器247可以通过输入/输出总线251与一个或多个输入/输出设备248和/或一个或多个存储设备250通信。在一些示例中,通过包括系统总线、网络连接、进程间通信数据结构、或用于通信数据或控制信号的任意其他方法的通信信道,可以提供特定方面的该连接。
[0131] 在处理器240内,处理器内核243A至243N(统称“处理器内核243”)中的每一个提供独立的执行单元来执行与处理器内核的指令集架构相符合的指令。服务器126可以包括任意数量的物理处理器和任意数量的内部处理器内核243。通常,可以使用单一IC(即,芯片多处理器)将各个处理器内核243组合成多核处理器(或“多个核”处理器)。
[0132] 在一些实例中,可以在一个或多个处理器内核243之间共享计算机可读存储介质的物理地址空间(即,共享存储器)。例如,处理器内核243可以经由存储器总线242连接至提供处理器内核243可访问的物理地址空间的一个或多个DRAM封装、模块、和/或芯片(也未示出)。尽管该物理地址空间可以向处理器内核243提供存储器249的任意部分的最低的存储器访问时间,然而,存储器249的至少一些剩余部分可以直接访问处理器内核243。
[0133] 存储器控制器246可以包括能够使处理器内核243通过存储器总线242与存储器249通信的硬件和/或固件。在示出的示例中,存储器控制器246是集成式存储器控制器并且可以在处理器240上物理地实现(例如,硬件)。然而,在其他示例中,存储器控制器246可以单独地实现或以不同的方式实现,并且可能不被集成到处理器240中。
[0134] 输入/输出控制器247可以包括能够使处理器内核243与连接至输入/输出总线251的一个或多个组件通信和/或交互的硬件、软件、和/或固件。在示出的示例中,输入/输出控制器247是集成式输入/输出控制器、并且可以在处理器240上物理地实现(例如,硬件)。然而,在其他示例中,存储器控制器246还可以单独地实现和/或以不同的方式实现,并且可能不被集成到处理器240中。
[0135] 缓存245表示位于处理器240内部、在处理器内核243之间共享的存储器资源。在一些示例中,缓存245可以包括1级、2级、或3级缓存、或其组合,并且可以提供处理器内核243所访问的任意存储介质的最低延迟存储器访问。然而,在本文描述的大多数示例中,缓存245表示3级缓存,不同于1级缓存和/或2级缓存,3级缓存通常在现代多核处理器芯片中的多个处理器内核之间共享。然而,根据本公开的一个或多个方面,在一些示例中,本文描述的至少一些技术可以应用于其他共享资源,包括除3级缓存之外的其他共享存储器空间。
[0136] 电源241向服务器126的一个或多个组件提供电力。通常,电源241从数据中心、建筑物、或其他位置处的主要交流(AC)电源接收电力。电源241可以在多个服务器126和/或数据中心110内的其他网络设备或基础设施系统之间共享。电源241可以具有智能电力管理或消耗能力,并且通过服务器126的一个或多个模块和/或通过一个或多个处理器内核243可以控制、访问、或调整该特征,以智能地消耗、分配、供应、或通过其他方式管理电力。
[0137] 一个或多个存储设备250可以表示计算机可读存储介质,计算机可读存储介质包括在用于存储信息(诸如处理器可读指令、数据结构、程序模块、或其他数据)的任意方法或技术中实现的易失性和/或非易失性、可移动和/或非可移动介质。计算机可读存储介质包括但不限于随机访问存储器(RAM)、只读存储器(ROM)、EEPROM、闪存、CD‑ROM、数字通用盘(DVD)、或其他光学存储器、磁带盒、磁带、磁盘存储器、或其他磁性存储设备、或用于存储所需信息并且能由处理器内核243访问的任意其他介质。
[0138] 一个或多个输入/输出设备248可以表示服务器126的任意输入或输出设备。在该示例中,输入/输出设备248可以生成、接收、和/或处理来自能够对人类或机器的输入进行检测的任意类型的设备的输入。例如,一个或多个输入/输出设备248可以生成、接收、和/或处理以物理、音频、图像、和/或视觉输入(例如,键盘、麦克风、相机)形式的输入。一个或多个输入/输出设备248可以通过能够产生输出的任意类型的设备生成、呈现、和/或处理输出。例如,一个或多个输入/输出设备248可以生成、呈现、和/或处理以触觉、音频、视觉、和/或视频输出(例如,触觉响应、声音、闪光、和/或图像)形式的输出。一些设备可以用作输入设备,一些设备可以用作输出设备,并且一些设备可以用作输入和输出设备。
[0139] 存储器249包括一个或多个计算机可读存储介质,计算机可读存储介质可以包括诸如动态RAM(DRAM)(例如,DDR2/DDR3 SDRAM)或静态RAM(SRAM)的各种形式的随机访问存储器(RAM)、闪存、或用于承载或存储指令或数据结构形式并且被计算机访问的所需程序代码和程序数据的任意其他形式的固定或可移动存储介质。存储器249提供由可寻址存储器位置构成的物理地址空间。在一些示例中,存储器249可以向处理器内核243提供非均匀存储器访问(NUMA)架构。即,处理器内核243对构成存储器249的各种存储介质可能具有不相等的存储器访问时间。在一些实例中,处理器内核243可以被配置为使用为内核提供较低存储器延迟的存储器249的部分来减少整体的存储器延迟。
[0140] 内核209可以是在内核空间中运行的操作系统内核并且可以包括例如Linux、Berkeley Software Distribution(BSD)、或另一Unix变形的内核、或从微软公司商购的Windows服务器操作系统内核。通常,处理器内核243、存储设备(例如,缓存245、存储器249、和/或存储设备250)、以及内核209可以存储指令和/或数据并且可以为服务器126的该指令和/模块的运行提供操作环境。该模块可以实现为软件,但是,在一些示例中,可以包括硬件、固件、以及软件的任意组合。处理器内核243、服务器126内的存储设备(例如,缓存245、存储器249、和/或存储设备250)、以及内核209的组合可以检索、存储、和/或运行一个或多个应用程序、模块、或软件的指令和/或数据。处理器内核243和/或该存储设备还可以操作地耦接至一个或多个其他软件和/或硬件组件,包括但不限于服务器126的一个或多个组件和/或被示出为连接至服务器126的一个或多个设备或系统。
[0141] 管理程序210是在硬件平台244上运行以创建并且运行一个或多个虚拟机148的操作系统级组件。在图2的示例中,管理程序210可以整合内核209的功能(例如,“类型1管理程序”)。在其他示例中,管理程序210可以在内核209上运行(例如,“类型2管理程序”)。在一些情形中,可以将管理程序210称为虚拟机管理器(VMM)。示例性管理程序包括Linux内核的基于内核的虚拟机(KVM)、Xen、从Vmware商购的ESXi、从微软商购的Windows Hyper‑V、以及其他开源和专有管理程序。
[0142] 在该具体示例中,服务器126包括在管理程序210内运行的虚拟路由器142、并且可以以与结合图1提供的描述一致的方式进行操作。在图2的示例中,虚拟路由器142可以管理一个或多个虚拟网络,其中每个虚拟网络可以在由管理程序210提供的虚拟平台的顶部为虚拟机148的运行提供网络环境。每个虚拟机148可以与一个虚拟网络相关联。
[0143] 策略代理205可以执行为管理程序210的一部分、或可以在内核空间内或作为内核209的一部分运行。策略代理205可以监测与服务器126相关联的一些或全部性能度量。根据本文描述的技术,在服务器126的其他度量之中,策略代理205被配置为通过在服务器126的多核处理器240内的处理器内核243上运行的各个进程151,监测与处理器240内部所共享的资源的使用有关或描述处理器240内部所共享的资源的使用率的度量。在一些示例中,该内部处理器度量与缓存245(例如,3级缓存)的使用率或存储器总线242上的带宽的使用率有关。策略代理205还能够生成并且维护使进程151的处理器度量与一个或多个虚拟机148相关联的映射,诸如通过与进程标识符(PID)或由内核209维护的其他信息相关联。在其他示例中,策略代理205能够辅助策略控制器201生成并且维护该映射。策略代理205可以根据策略控制器201的指示,响应于所获得的物理处理器240内部所共享的资源的使用度量和/或进一步基于处理器240的外部的资源的其他使用度量,在服务器126处强制执行一个或多个策略202。
[0144] 在图2的示例中,虚拟路由器代理136包括在服务器126内。参考图1,虚拟路由器代理136可以包括在各个服务器126内(尽管图1中未示出)。在图2的示例中,虚拟路由器代理136与SDN控制器132通信并且响应于此引导虚拟路由器142,以控制虚拟网络的覆盖并且协调服务器126内数据分组的路由。通常,虚拟路由器代理136与SDN控制器132通信,以生成通过数据中心110控制分组的路由的命令。虚拟路由器代理136可以在用户空间内运行并且操作为虚拟机148与SDN控制器132之间的控制平面消息的代理。例如,虚拟机148A可以请求经由虚拟路由器代理136使用其虚拟地址发送消息,并且虚拟路由器代理136A可以进而发送消息并且请求对针对虚拟机148A(发起第一消息)的虚拟地址所接收的消息的响应。在一些情况下,虚拟机148A可以调用由虚拟路由器代理136的应用程序编程接口所呈现的程序或函数调用,并且虚拟路由器代理136还对消息的封装进行处理,包括寻址。
[0145] 在一些示例性实现方式中,服务器126可以包括与编排引擎130直接通信的编排代理(图2中未示出)。例如,响应于来自编排引擎130的指令,编排代理传送在各个相应的服务器126上运行的具体虚拟机148的属性并且可以创建或终止单个虚拟机。
[0146] 虚拟机148A、虚拟机148B、至虚拟机148N(统称“虚拟机148”)可以表示虚拟机148的示例性实例。服务器126可以将由存储器249提供和/或由存储设备250提供的虚拟和/或物理地址空间划分成用于运行用户进程的用户空间。服务器126还可以将由存储器249和/或存储设备250提供的虚拟和/或物理地址空间划分成由用户进程保护并且不可访问的内核空间。
[0147] 通常,每个虚拟机148可以是任意类型的软件应用程序并且每个可以分配有在对应虚拟网络内使用的虚拟地址,其中,每个虚拟网络可以是由虚拟路由器142提供的不同虚拟子网。每个虚拟机148可以分配有其自身的虚拟三层(L3)IP地址,例如,用于发送并且接收通信,但是未获知运行虚拟机的物理服务器的IP地址。因此,“虚拟地址”是与底层物理计算机系统的逻辑地址不同的应用地址,例如,图1的示例中的服务器126A。
[0148] 每个虚拟机148可以表示运行客户应用程序(诸如Web服务器、数据库服务器、企业应用)、或托管用于创建服务链的虚拟服务的租赁虚拟机。在一些情况下,任意一个或多个服务器126(见图1)或另一计算设备直接托管客户应用程序,即,不作为虚拟机。可替代地,可以将本文提及的虚拟机(例如,虚拟机148)、服务器126、或托管客户应用程序的独立计算设备称为“主机”。此外,尽管在虚拟机或虚拟主机方面描述了本公开的一个或多个方面,然而,本文参考该虚拟机或虚拟主机进行描述的根据本公开的一个或多个方面的技术还可以应用于容器、应用程序、进程、或在服务器126上运行的其他运行单元(虚拟或非虚拟)。
[0149] 进程151A、进程151B、至进程151N(统称“进程151”)均可以在一个或多个虚拟机148内运行。例如,一个或多个进程151A可以与虚拟机148A对应、或可以与虚拟机148A内运行的应用或应用的线程对应。类似地,一组不同的进程151B可以与虚拟机148B对应、或与虚拟机148B内运行的应用或应用的线程对应。在一些示例中,每个进程151可以是由与一个虚拟机148相关联的应用控制和/或创建的运行或其他运行单元的线程。当报告诸如由策略代理205收集的内部处理器度量的一个或多个度量时,每个进程151可以与由处理器内核243使用的进程标识符相关联,以对各个进程151进行识别。
[0150] 在操作中,服务器126的管理程序210可以创建共享服务器126的资源的多个进程。例如,管理程序210可以(例如,在编排引擎130的指示下)实例化或启动服务器126上的一个或多个虚拟机148。每个虚拟机148可以运行一个或多个进程151,并且这些软件进程中的每一个可以在服务器126的硬件处理器240内的一个或多个处理器内核243上运行。例如,虚拟机148A可以运行进程151A,虚拟机148B可以运行进程151B,并且虚拟机148N可以运行进程
151N。在图2的示例中,进程151A、进程151B、以及进程151N(统称“进程151”)全部在同一物理主机(例如,服务器126)上运行并且可以在服务器126上运行的同时共享特定资源。例如,在处理器内核243上运行的进程可以共享存储器总线242、存储器249、输入/输出设备248、存储设备250、缓存245、存储器控制器246、输入/输出控制器247、和/或其他资源。
[0151] 内核209(或实施内核209的管理程序210)可以调度进程以在处理器内核243上运行。例如,内核209可以调度属于一个或多个虚拟机148的进程151以在处理器内核243上运行。一个或多个进程151可以在一个或多个处理器内核243上运行,并且内核209可以周期性地抢占一个或多个进程151来调度另一进程151。相应地,内核209可以周期性地执行上下文切换而开始或恢复一个不同的进程151的运行。内核209可以维持用于识别下一个进程的队列以调度运行,并且内核209可以将之前的进程放回队列中供后续运行。在一些示例中,内核209可以基于轮询或在其他基础上调度进程。当队列中的下一个进程开始运行时,该下一进程访问由先前进程所使用的共享资源,包括例如缓存245、存储器总线242、和/或存储器249。
[0152] 如本文所描述的,每个虚拟机148内的进程151使用给定物理处理器240内部所共享的资源的方式,通常难以检测和管理并且因此可能导致类似在同一物理处理器内运行的一个不同的虚拟机148内的进程151的执行问题。例如,在处理器内核243A上运行的第一进程(例如,虚拟机148A内的一个进程151A)可以执行使得将来自存储器249的数据加载到缓存245中的存储器操作。在该数据被加载到缓存245中之后,内核209可以执行上下文切换,以使得第二进程(例如,一个进程151B)开始在处理器内核243A(或另一处理器内核243)上运行。该第二进程(虚拟机148B内的一个进程151B)可以执行还使得将数据加载到共享缓存245中的存储器访问操作。如果第二进程执行占用或消耗大量的缓存空间的操作,则可以重写由第一进程存储在缓存中的数据。在通过第二进程重写由第一进程存储在缓存中的数据之后,内核209最终可以执行上下文切换以恢复运行第一进程(即,来自进程151A)。该第一进程可以尝试访问另外从缓存245快速获得的相同数据,但是,由于通过第二进程(即,来自进程151B)执行的操作而从缓存245中清除该数据,所以第一进程将经历页面故障和/或缓存丢失。然后,处理器240对来自存储器249的数据进行重新检索,但是,访问来自存储器249的数据可能明显慢于访问来自缓存245的数据。
[0153] 因此,由于通过第二进程执行的与缓存有关的操作,可能不利地影响第一进程的执行。换言之,即使虚拟机的给定软件应用被分配有另外足够份额的存储器249和处理器240和/或处理器240内处理器内核243的CPU时间,另一软件应用使用处理器240内部的缓存
245(并且因此通常不可见)将导致两个应用的不良和不可预测的执行。因此,本文描述了策略代理被配置为询问处理器240来获得诸如缓存245的资源的度量的技术,资源在处理器内部共享并且因此在处理器外部不可见。此外,技术利用了由策略控制器201提供的性能监测和策略执行机制内的内部处理器度量,由此提供对计算环境的提升精细度的控制。
[0154] 作为另一示例,一个虚拟机148内的一个或多个进程151使用处理器240内部的其他共享资源的方式,还可能引起其他进程的执行问题。例如,在处理器内核243上运行的第一进程(例如,虚拟机148A内的一个进程151A)可以周期性地从存储器249读取并且写至存储器249。也在处理器内核243上运行的第二进程(例如,虚拟机148B内的一个进程151B)也可以从存储器249读取并且写至存储器249。因此,第一进程和第二进程均消耗通过位于处理器240内部的存储器总线242可获得的一部分带宽。然而,第二进程可以是执行涉及存储器总线242的多个操作的高度存储器密集型进程。通过执行涉及存储器总线242的多个操作,第二进程可以消耗如此多的存储器总线242的带宽,以至于可能不利地影响第一进程从存储器249读取并且写至存储器249的能力。相应地,由于第二进程的操作涉及所共享的存储器总线242,所以可能不利地影响第二进程的执行。
[0155] 在刚刚描述的示例中,可以在不同的虚拟机或相同的虚拟机上执行进程。在任意情况下,无论被设计成分配存储器249和处理器240和/或内核243的公平使用量的策略怎样,由处理器240内部的软件进程所共享的使用资源可能通过某种方式影响虚拟机148A的执行的情形并且对应地由虚拟机148A消耗的计算资源可能通过某种方式影响虚拟机148B的执行的情形发生。就这方面,虚拟机148A和虚拟机148B必须共存于同一服务器126上,并且因此,必须共存于可能被视为相同的“邻域”。并且此外,如果一个虚拟机148消耗大量的共享资源,则具体地,如果该消耗响应其他虚拟机148,则该资源消耗过程可能被视为破坏邻域,并且因此被标记为“噪音”邻居。
[0156] 当在服务器126上运行的一个虚拟机148出现执行问题时,该问题可能是服务器126上的噪音邻居(例如,资源密集型的不同虚拟机)的结果。然而,一些典型或共同的使用和/或执行度量(诸如与处理器内核243相关联的CPU使用率或CPU负载)可能未精确找到或以其他方式识别将哪一虚拟机默示为噪音邻居。换言之,如果一个虚拟机148以影响其他虚拟机148的方式消耗处理器240内部所共享的资源,则在诸如CPU使用率或CPU负载的度量中可能不能反映该消耗。相应地,为了识别并且作用于以影响或将要影响其他虚拟机148、容器、和/或进程151的执行的方式消耗共享资源的任意虚拟机148、容器、和/或进程151,可能需要其他资源度量。
[0157] 在图2的示例中,并且根据本公开的一个或多个方面,策略代理205对服务器126的操作进行监测,以识别以影响其他虚拟机148的操作的方式使用服务器126的处理器240内部的共享资源的虚拟机148。例如,策略代理205可以通过在服务器126内的处理器内核243上运行的各个进程151,对与缓存245的使用有关或描述缓存245的使用的内部处理器度量进行监测。可替代地或此外,策略代理205可以通过在服务器126内的处理器内核243上运行的各个进程151,对与存储器总线242的存储器带宽的消耗有关或描述存储器总线242的存储器带宽的消耗的内部处理器度量进行监测。可替代地或此外,策略代理205可以通过在服务器126内的处理器内核243上运行的各个进程151,对与其他共享资源的使用和/或消耗有关或者描述其他共享资源的使用和/或消耗的内部处理器度量进行监测。
[0158] 为了访问并且监测内部处理器度量,策略代理205可以通过暴露于内核209的API的专用硬件接口254而对处理器240进行询问。例如,策略代理205可以访问或者操纵处理器内核243的一个或多个硬件寄存器,以对处理器240的监测电路(“MON CIRC”)252进行编程而从内部监测共享资源并且经由接口报告这些资源的使用度量。策略代理205可以通过调用内核、操作系统、和/或管理程序调用,访问并且操纵处理器240的硬件接口。例如,处理器240的硬件接口可以是经由内核209映射的存储器,以使得通过被引导至具体存储器地址的存储器访问指令可以读取并且写入用于对处理器的内部资源进行监测的处理器240的可编程寄存器。响应于策略代理205的这种引导,位于处理器240内部的监测电路252可以监测处理器内核243的运行并且将关于各个进程151的内部处理器度量的信息通信至策略代理205或通过其他方式使策略代理205可用。
[0159] 策略代理205可以维持使处理器度量与虚拟机148内运行的各个进程151相关联的映射。例如,策略代理205可以对内核209进行询问,以识别与虚拟机148上运行的各个软件进程相关联的进程标识符。策略代理205可以使用与虚拟机148相关联的各个进程151的进程标识符,以使由处理器内核243报告的各个进程151的处理器度量与一个虚拟机148相关联。策略代理205可以使用该信息从与各个进程151相关联的处理器度量外插与各个虚拟机148相关联的处理器度量。策略代理205可以使用与各个虚拟机148相关联的外插处理器度量,来识别各个虚拟机148如何使用服务器126的共享资源。策略代理205可以评估内部处理器度量并且确定一个或多个虚拟机148是否以不利地影响其他虚拟机148的操作的方式使用共享资源。
[0160] 响应于识别出以不利地影响其他虚拟机148的操作的方式使用共享资源的一个或多个虚拟机148,策略代理205可以发起警报。例如,策略代理205可以对虚拟机148B的内部处理器度量、或在虚拟机148B内运行的一个或多个进程151B进行分析。策略代理205可以将一个或多个度量与警报阈值进行比较。警报阈值可以基于策略代理205从策略控制器201接收或另外由策略控制器201表达(或从策略控制器201的一个或多个组件)表达的一个或多个策略202。策略代理205可以在多个间隔内评估内部处理器度量并且根据一个或多个策略202评估处理器度量(例如,平均值、最大值、标准差)的统计。在一些示例中,策略代理205可以在时间段(例如,五分钟)内和/或在多个间隔内评估虚拟机148B的内部处理器度量,以确定虚拟机148B的内部处理器度量的代表性集合。策略代理205可以滤除所收集的内部处理器度量中的不代表虚拟机148B的正常操作和/或不可能影响与服务器126内的虚拟机148B相邻的虚拟机148的操作的任意偏差。策略代理205可以基于该评估确定虚拟机148B的内部处理器度量是否超过一个或多个策略202中所表达的警报阈值、或确定与虚拟机148B相关联的内部处理器度量是否通过其他方式触发警报。
[0161] 策略代理205可以响应于警报而采取一个或多个措施来预防对其他虚拟机148的执行产生不利影响。例如,警报或警报所基于的度量可能指示虚拟机148B以影响一个或多个其他虚拟机148的执行的方式使用缓存245。策略代理205可以通过限制虚拟机148B对缓存245的使用、通过将缓存245分割成使得每个虚拟机148仅访问缓存245的一部分、通过为虚拟机148B分配更少的部分、通过将重叠或隔离的缓存线分配至一个或多个虚拟机148或进程151、或通过其他方式限制在虚拟机148B内运行的虚拟机148B对缓存245的使用而作用于该警报。在另一示例中,警报或警报所基于的度量可能指示虚拟机148B以影响试图使用存储器带宽的其他虚拟机148的执行的程度,消耗存储器带宽。策略代理205可以通过限制虚拟机148B对存储器带宽的使用而作用于该警报。
[0162] 在一些示例中,策略代理205可以通过限制具体虚拟机内运行的一个或多个进程所使用的共享资源的使用,限制一个或多个虚拟机对共享资源的使用。例如,警报或警报所基于的度量可能指示虚拟机148B内的具体已识别进程以不仅影响一个或多个其他虚拟机148的执行、而且还影响该同一虚拟机148B内运行的一个或多个其他进程151的方式使用共享资源。策略代理205可以通过限制虚拟机148内的已识别进程对一种或多种共享资源的使用而作用于该警报。策略代理205可以仅对虚拟机148B内的已识别进程施加限制,而非虚拟机148B内的全部进程。在一些示例中,虚拟机148B自身可以实例化虚拟机148B内的一个或多个虚拟机。如果该“第二级”虚拟机自身变成“噪音”,则策略代理205可以仅对虚拟机148内的噪音虚拟机施加限制,并且如果不能保证或不需要该限制,则避免限制虚拟机148B内的其他进程。
[0163] 在一些示例中,可替代地或此外,策略代理205可以将关于内部处理器度量的信息报告至策略控制器201。例如,策略代理205可以从处理器内核243收集处理器度量。策略代理205可以对与一些或全部所收集的处理器度量相关联的虚拟机148进行识别。策略代理205可以将关于所收集的处理器度量的信息通信至数据管理器218。数据管理器218可以将一些或全部所接收的信息存储在使用度量数据存储器216中。
[0164] 策略控制器201可以作用于从策略代理205接收的关于内部处理器度量的信息。例如,分析引擎214可以分析存储在使用度量数据存储器216中的信息,并且基于关于内部处理器度量的信息识别出以不利地影响服务器126上运行的其他虚拟机148的操作的方式而操作的一个或多个虚拟机148。分析引擎214可以响应于识别出一个或多个虚拟机148而生成一个或多个报告和通知212。可替代地或此外,分析引擎214可以致使或指示策略代理205采取措施来解决已识别的虚拟机148的操作。
[0165] 在一些示例中,可替代地或此外,策略代理205可以将从处理器内核243的内部处理器度量推导的信息报告至策略控制器201。换言之,并非只将内部处理器度量报告至策略控制器201,策略代理205还可以对所收集的度量执行某种分析并且将该分析结果报告至策略控制器201。例如,策略代理205可以收集处理器度量并且识别以不利地影响服务器126上运行的其他虚拟机148的操作的方式操作的一个或多个虚拟机148。策略代理205可以将关于其分析结果的信息通信至数据管理器218,数据管理器218可以识别一个或多个虚拟机148和/或所涉及的共享资源。分析引擎214可以响应于该信息指示策略代理205采取措施来解决已识别的虚拟机148的操作。因此,通过策略代理205、通过策略控制器201(例如,分析引擎214)、通过策略代理205与策略控制器201的组合、或通过服务器126的另一模块或组件,可以执行包括处理器内核243的内部处理器度量的各种度量的处理和/或分析。
[0166] 在一些示例中,策略代理205和/或策略控制器201可以使用在一些处理器中可获得的Intel的资源目录技术(RDT)作为处理器240的监测电路
252的一个示例,监测与处理器内核243相关联的内部处理器度量。Intel的RDT能够实现被设计成改善对如何使用共享平台资源的可见性及控制的资源监测和控制特征。例如,通过使用监测电路252的RDT的缓存监测技术(CMT),策略代理205可以确定在服务器126上运行的各个线程的末级缓存使用率。策略代理205和/或策略控制器201可以使用该信息来推导一个或多个虚拟机148(或进程151)对缓存245的使用率。在另一示例中,策略代理205可以使用监测电路252的RDT的存储器带宽监测(MBM),识别在服务器126上运行的虚拟机148内的各个线程的本地存储器带宽使用率。在RDT中,MBM是为其远程和本地存储器带宽使用提供每个线程的监测的CMT扩展。在另一示例中,策略代理205可以使用监测电路252的RDT的缓存分配技术(CAT),对服务器126上运行的不同虚拟机148或进程进行优化。管理程序210、策略控制器201、和/或策略代理205可以使用CAT将缓存245分割给在服务器126上运行的不同虚拟机148。在另一示例中,策略代理205还可以使用RDT的代码和数据优化(CDP),分配缓存245中的代码和数据段。
[0167] 为了访问通过RDT获得的信息,策略代理205可以访问CPU标识符信息和暴露给内核209的监测电路252的信息,以验证处理器内核243是否实现一些或全部RDT能力。策略代理205可以与Intel处理器及Intel处理器上运行的内核交互。例如,如果处理器内核243实现RDT或相似的技术,则策略代理205可以通过调用适当的内核API或功能调用,配置模型专用寄存器(MSR)并且对与和处理器内核243相关联的所需内部处理器度量对应的专用项标识符进行编程。作为响应,处理器内核243可以向专用MSR周期性地公布或写入所请求的内部处理器度量。此后,策略代理205可以通过从专用MSR读取而收集内部处理器度量。在一些示例中,诸如当管理程序210实现或在Linux内核的顶部上实现时,Linux内核存储器映射内部处理器度量、并且控制策略代理205或其他进程如何从专用MSR读取和写入。策略代理205可以调用适当的Linux调用来引导处理器内核243监测指定的度量,并且策略代理205可以读取适当的MSR,以提取所需的内部处理器度量。
[0168] 策略控制器201可以建立一个或多个策略202,当编排引擎130引导管理程序210启动、实例化、或通过其他方式启动新的虚拟机时,策略202指示管理程序210将指定新的虚拟机如何使用一种或多种共享资源。例如,策略控制器201的策略控制引擎211可以建立指示新的虚拟机148被赋予相等份额的缓存245的一个或多个策略202。或者,具有高优先级的虚拟机148、容器、或进程151被赋予更多份额的缓存245。策略控制引擎211可以致使策略控制器201将一个或多个策略202通信至编排引擎130(或管理程序210),以使得当编排引擎130引导管理程序210创建新的虚拟机时,新的虚拟机被创建有相等份额的缓存245。在另一示例中,策略控制器201可以建立指示新的虚拟机148被赋予指定百分比份额的缓存245的一个或多个策略202。在该示例中,策略控制引擎211可以致使策略控制器201将一个或多个对应的策略202通信至编排引擎130和/或管理程序210,以使得当编排引擎130引导管理程序210创建新的虚拟机时,新的虚拟机被创建有指定百分比份额的缓存245。编排引擎130可以通过使用RDT的CAT功能或通过其他处理器获得的相似功能对缓存245进行分割而实现该策略。
[0169] 在该示例中,策略代理205和/或策略控制器201通过进一步限制对缓存245或其他共享资源的使用而继续响应警报,和/或生成一个或多个报告和通知212。可以使用REST接口动态更新与虚拟机148和/或进程151相关联的缓存245的分配。例如:
[0170] curl‑i\
[0171] ‑H'Content‑Type:application/json'\
[0172] ‑X PUT\
[0173] ‑d'{"InstanceCacheAllocationPercentage":5}'\
[0174] http://:7000/appformix/v1.0/instance_definition/
[0175] 在上述示例中,针对instance_definition设置的参数包括InstanceCacheAllocationMB、InstanceCacheAllocationPercentage、以及InstanceCacheAllocationEqualShare。策略控制器201和/或策略代理205可以向虚拟机148、虚拟机148的实例、或应用程序提供隔离缓存线。可替代地或此外,策略控制器201和/或策略代理205可以基于实例的优先级类别、实例的分类、或基于应用的工作负荷,分配缓存245的共享部分。在一些示例中,可以基于每个CPU套接字(socket)(例如,基于每个处理器240)分配缓存。策略代理205可以基于使用、该组进程的当前调度模式、以及实例的CPU内核pinning属性、虚拟机、或应用程序执行分配。
[0176] 策略代理205和/或策略控制器201可以基于每个虚拟机消耗共享资源的方式,对一个或多个虚拟机148进行分类。例如,策略代理205可以在一个时间段内监测包括各个虚拟机148的内部处理器度量的度量。策略代理205可以针对各个虚拟机148确定缓存245的使用模式、存储器带宽使用率、每秒被引退的指令、以及与各个虚拟机148的操作相关联的其他度量。策略代理205可以将关于使用模式的信息通信至策略控制器201的数据管理器218。数据管理器218可以将信息存储在使用度量数据存储器216中。策略控制器201的分析引擎
214可以通过诸如跨各个监测的度量执行线性回归而,分析各个虚拟机148的度量。分析引擎214可以基于该分析而在各个虚拟机148趋于消耗的共享资源方面对一个或多个虚拟机
148进行表征。例如,分析引擎214可以将一个或多个虚拟机148表征为受CPU限制、受存储器限制、或受缓存限制。
[0177] 策略控制器201可以建立一个或多个策略202以限制服务器126上具有相同或相似类别的虚拟机148的数量。例如,策略控制器201的策略控制引擎211可以建立基于上述虚拟机148的类别的一个或多个策略202。该策略202可以被设计成避免具有以相似方式消耗服务器126的共享资源的过多虚拟机148。在一个示例中,策略控制引擎211和/或分析引擎214可以确定是否能够将给定数量的虚拟机148表征为受CPU限制,并且编排引擎130(或管理程序210)试图实例化或启动受CPU限制的新虚拟机,一个或多个策略202可以确保未在服务器126上实例化或启动新的虚拟机,而是在数据中心110内的不同物理主机上实例化或启动新的虚拟机。具体地,在该示例中,策略控制引擎211可以建立一个或多个策略202,在该策略中将受CPU限制的虚拟机148的数量限制为与处理器内核243相关联的内核的数量。如果处理器内核243内存在16个内核,则策略控制引擎211可以建立指示服务器126上运行的受CPU限制的虚拟机148不多于16个的一个或多个策略202。在不同的示例中,如果能够将给定数量的虚拟机148表征为受缓存限制,并且编排引擎130试图实例化或启动受缓存限制的新的虚拟机,则一个或多个策略202可以确保未在服务器126上实例化或启动新的虚拟机,而是在数据中心110内的不同物理主机上实例化或启动新的虚拟机。
[0178] 策略控制器201可以致使编排引擎130基于虚拟机148的类别而选择或调整运行有一个或多个虚拟机148的物理主机。例如,参考图1和图2,策略控制器201的策略控制引擎211可以确定服务器126A上运行50个受CPU限制的虚拟机148并且没有受存储器限制的虚拟机148。策略控制引擎211可以进一步确定服务器126B上运行40个受存储器限制的虚拟机
148并且没有受CPU限制的虚拟机148。如果服务器126A上运行的50个受CPU限制的虚拟机
148中的一些改为在服务器126B上运行,并且服务器126B上运行的40个受存储器限制的虚拟机148中的一些改为在服务器126A上运行,则策略控制引擎211可以确定服务器126A和服务器126B均可以更好地执行。相应地,策略控制引擎211可以致使策略控制器201与编排引擎130通信,以指示编排引擎130对一个或多个虚拟机148进行重新分配。例如,策略控制器
201可以指示编排引擎130将在服务器126A上运行的一些虚拟机148移至服务器126B、并且将在服务器126B上运行的一些虚拟机148移至服务器126A。由于按照这种方式跨服务器126分配虚拟机148,数据中心110可以表现出改进的性能。
[0179] 策略控制器201还可以使用存储器带宽度量(例如,RDT的MBM度量)建立策略以改进NUMA本地性。在该示例中,如果远程存储器带宽大于本地存储器带宽,则策略代理205可以从处理器内核243收集与未被优化的NUMA有关的度量。策略代理205可以使用该度量针对NUMA本地性重新构建或重新实现一个或多个虚拟机148。用于访问远程存储器的延迟可能比访问本地存储器高许多。
[0180] 例如,分析引擎214通过使用静态或动态阈值化、即时或历史使用数据的任意上述技术,对警报阈值和对应资源的使用度量216进行比较而评估各个配置文件213中所包括的警报。因为由策略控制引擎211将元件配置为与包括一个或多个警报的配置文件相关联的组的成员,所以基于通过与元件的直接关联或与元件的间接关联的效果对元件的配置文件213内的多个警报进行评估,分析引擎214将配置文件设置为有效或无效并且可以执行上述任意的改善、报告、和/或通知操作。在一些示例中,分析引擎214可以在策略代理205之间分配配置文件213,以通过分布式的本地化方式对服务器216上的警报和配置文件213进行评估。
[0181] 图3A和图3B是示出根据本公开的一个或多个方面的通过示例性用户接口设备而呈现的示例性用户界面的概念图。图3A中示出的用户界面301A和图3B中示出的用户界面301B均可以与由用户接口设备129呈现的用户界面对应、并且可以是与结合图1和图2描述的控制板203对应或内包括的示例性用户界面。尽管将图3A和图3B中示出的用户界面示出为图形用户界面,然而,通过用户接口设备129可以呈现其他类型的接口,包括基于文本的用户接口、操纵台或基于命令的用户接口、语音提示用户接口、或任意其他适当的用户接口。此处,在图1和图2的数据中心110的上下文内可以描述用户界面301A和/或用户界面
301B的一个或多个方面。
[0182] 参考图2、图3A、以及图3B,并且根据本公开的一个或多个方面,用户接口设备129可以呈现用户界面301A和用户界面301B。例如,用户接口设备129可以检测确定与呈现和图2中的服务器126相关联的度量的用户请求对应的输入。用户接口设备129可以将输入指示输出至策略控制器201。策略控制器201的策略控制引擎211可以检测输入并且确定该输入与和服务器126相关联的度量的信息的请求对应。策略控制引擎211可以响应于该输入而生成控制板203,控制板203可以包括用户界面301A和用户界面301B底层的信息。策略控制引擎211可以致使策略控制器201将信息发送至用户接口设备129。用户接口设备129可以接收信息并且确定该信息包括足以生成用户界面的信息。用户接口设备129可以响应于从策略控制器201接收的信息而以图3A中示出的方式创建用户界面301A并且在与用户接口设备
129相关联的显示器处呈现用户界面。相似地,用户接口设备129还可以响应于从策略控制器201接收的信息而以图3B中示出的方式创建用户界面301B并且在与用户接口设备129相关联的显示器呈现用户界面。
[0183] 在图3A的示例中,用户界面301A包括CPU使用度量图表310、CPU负载度量图表320、磁盘使用度量图表330、以及存储器使用度量图表340。图3A中的每个图表可以表示随着时间(沿着x轴)、与服务器126上运行的多个虚拟机148相关联、并且如通过图2中的策略控制器201和/或策略代理205检测或确定的度量值。具体地,在图3A中,与虚拟机148A相关联的度量示出为CPU使用率312A、CPU负载322A、磁盘使用率332A、以及存储器使用率342A。此外,图3A中的虚拟机148B的度量包括CPU使用率312B和存储器使用率342B。
[0184] 在图3B的示例中,用户界面301B包括缓存使用率图表350、缓存缺失频率图表360、本地存储器带宽图表370、以及远程存储器带宽图表380。再次,图3B中的每个图表可以表示与服务器126上运行的多个虚拟机148相关联并且如通过图2中的策略控制器201和/或策略代理205检测或确定的时间序列度量值。在图3B中,与虚拟机相关联的度量包括缓存使用率352B和缓存缺失频率362B。
[0185] 图3A中示出的信息表明虚拟机148A的CPU使用率(见CPU使用率度量图表310上的CPU使用率312A)和CPU负载(见CPU负载度量图表320上的CPU负载322A)在约10:35开始经历明显的增加。此外,虚拟机148A的存储器使用率(见存储器使用度量图表340上的存储器使用率342A)在约同一时间经历明显增加。从图3A的用户界面301A中呈现的图表中,关于虚拟机148A的性能度量的这些变化的起因可能不明显。具体地,应注意,图3A中虚拟机148B的度量(例如,CPU使用率312B)在10:35之后保持相对恒定、并且并不表明虚拟机148B以使虚拟机148A的性能劣化的方式而操作。
[0186] 图3B中的用户界面301B呈现从内部处理器度量推导的信息和图表。不同于图3A,图3B提供有助于识别哪一虚拟机148正在影响虚拟机148A的性能的信息。例如,尽管虚拟机148B在10:35之后具有相对恒定的20%CPU使用率(如通过图3A中的CPU使用率312B示出的),然而,从图3B中的缓存使用率图表350(具体地,缓存使用率352B)显而易见,虚拟机
148B在约10:35将其缓存使用率增加至约40MB。此外,虚拟机148B在10:35开始出现明显大量的缓存缺失(见缓存缺失频率图表360的缓存缺失频率362B)。基于该信息,策略代理205、策略控制器201、和/或操作用户接口设备129的管理员可以确定虚拟机148A的性能度量的变化的起因是虚拟机148B,虚拟机148B以影响虚拟机148A的性能的方式使用缓存245。
[0187] 因此,并且如图3A和图3B所示,通过监测内部处理器度量以识别由处理器内的虚拟机148B所消耗的共享资源,可以识别服务器126的处理器内、以对竞争处理器内的这些相同资源的其他虚拟机的性能产生不利影响的方式消耗共享资源的一个或多个虚拟机。在没有监测该内部处理器度量的情况下,可能难以或不可能调试或通过其他方式识别虚拟机148的性能度量的变化的起因。
[0188] 图4是示出根据本公开的一个或多个方面的通过示例性服务器执行的操作的流程图。下面在图2的服务器126的上下文中描述图4。在其他示例中,通过一个或多个其他组件、模块、系统、或设备可以执行图4中所描述的操作。此外,在其他示例中,可以合并、按照不同的顺序执行、或省去结合图4描述的操作。
[0189] 在图4的示例中,并且根据本公开的一个或多个方面,策略控制器201可以对一个或多个策略进行定义(401)。例如,用户接口设备129可以检测输入并且将输入指示输出至策略控制器201。策略控制器201的策略控制引擎211可以确定该输入对应于足以对一个或多个策略进行定义的信息。策略控制引擎211可以定义并且将一个或多个策略存储在策略数据存储202中。
[0190] 策略控制器201可以将一个或多个策略部署至在一个或多个服务器126上运行的一个或多个策略代理205中(402)。例如,策略控制引擎211可以致使策略控制器201的数据管理器218将信息输出至策略代理205。策略代理205可以从策略控制器201接收信息并且确定该信息与被部署在策略代理205处的一个或多个策略相对应(403)。
[0191] 策略代理205可以将处理器240配置为监测内部处理器度量(404)。例如,策略代理205可以与监测电路252交互和/或将监测电路252配置为能够实现对处理器度量的监测。在一些示例中,策略代理可以配置监测电路252以根据资源目录技术收集度量。
[0192] 响应于策略代理205的交互和/或配置,处理器240可以对与服务器126的处理器240内所共享的资源有关的内部处理器度量进行监测(405)。处理器240可以使得该度量对诸如策略代理205的其他设备或进程可用(406)。在一些示例中,处理器240通过在存储器的指定区域中或在处理器240的寄存器内公布该度量而使得该度量可用。
[0193] 策略代理205可以从处理器240读取内部处理器度量(407)。例如,策略代理205可以从寄存器(例如,模型专用寄存器)读取,以访问关于与处理器240有关的内部处理器度量的信息。
[0194] 策略代理205可以分析度量并且根据服务器126的适当策略而动作(408)。例如,策略代理205可以基于内部处理器度量确定:被部署在服务器126上的一个或多个虚拟机以对服务器126上运行的其他虚拟机148的性能产生不利影响的方式使用处理器240内部所共享的缓存。在一些示例中,策略代理205可以确定被部署在服务器126上的一个或多个虚拟机以对其他虚拟机148的性能产生不利影响的方式使用存储器带宽。策略代理205可以响应于该确定而指示处理器240限制违规虚拟机(offending virtual machine,侵入虚拟机)对共享缓存的使用,诸如通过将缓存的更少部分分配给虚拟机。处理器240可以接收该指示并且根据从策略代理205接收的指示而限制违规虚拟机对共享缓存的使用(409)。
[0195] 在一些示例中,策略代理205可以将信息报告至策略控制器201(410)。例如,策略代理205可以将内部处理器度量报告至策略控制器201的数据管理器218。可替代地或此外,策略代理205可以将策略代理205基于内部处理器度量而执行的分析结果报告至数据管理器218。
[0196] 响应于接收由策略代理205报告的信息,策略控制器201可以生成一个或多个报告和/或通知(411)。例如,策略控制器201的分析引擎214可以生成一个或多个报告并且致使用户接口设备129呈现该报告作为用户界面。可替代地或此外,分析引擎214可以经由用户接口设备129生成通过策略控制器201呈现的控制板203中所包括或报告的一个或多个警告。
[0197] 图5A和图5B是示出根据本公开的技术的多个元件的示例性配置文件层级及多种类型组的组配置文件的框图。元件500A至500J(“元件500”)消耗作为警报数据的来源的资源。示例性元件可以包括主机、网络设备、实例、以及服务。每个元件500与由用户或管理员针对元件所配置的元件配置文件相关联。所示出的示例描述了元件500A的元件配置文件550A。元件配置文件550可以表示任意配置文件213的示例性实例并且是被评估以确定对应元件500的性能是否满足针对警报所定义的标准的监测警报的集合。
[0198] 类型‑1组510A至510L(“类型‑1组510”)均是与一个或多个元件500相关联的数据结构。类型‑2组520A至520L(“类型‑2组520”)均是与一个或多个元件500相关联的数据结构。单一元件500可以是一个或多个类型‑1组510与一个或多个类型‑2组520中的成员。类型‑1和类型‑2表示元件作为其成员的不同类型的组。组的类型可以包括聚合(例如,主机聚合、实例聚合、网络设备聚合、网络设备接口聚合)、虚拟网络、虚拟网络功能(VNF)或VNF的集合、网络服务链。组的其他类型可以包括OpenStack或分配有实例、Kubernete集群、Kubernete名称空间、Kubernete复制控制器、Kubernete服务的集合的其他项目。其他类型的组可以包括通过OpenStack实例而运行的一个或多个服务的组,该服务包括例如RabbitMq、MySQL、Nova、以及Neutron服务。类型‑1和类型‑2可以是从上述示例、或本文未具体提及的其他示例选择的任意不同的组合。
[0199] OpenStack类型系统项目的示例可以包括:
[0200] 1.分配有10个虚拟机的具体应用例的数据库项目,一些用户访问项目。8个虚拟机可以具有一种功能(例如,维护对数据库项目的数据读/写),并且两个虚拟机可以具有另一功能,例如,元数据或备份相关任务。
[0201] 2.提供诸如虚拟防火墙服务的虚拟化联网服务的VNF池。
[0202] 3.应用组合,例如,数据库可以分配有10个虚拟机,MessageBus可以分配有由团队拥有的10个虚拟机。
[0203] 4.实例使用情况的混合模型,其中,不同的应用能够使用单一虚拟机,诸如具有数据库和MessageBus应用同时运行的十个虚拟机的配置层(collocated tier,并置层)。
[0204] 不同实体可以配置不同的类型‑1组510和类型‑2组520。例如,数据中心110管理员可以配置类型‑1组510并且用户可以配置类型‑2组520。
[0205] 一个或多个类型‑1组510可以具有对应的类型‑1组配置文件560。类型‑1组配置文件560A是类型‑1组510A的配置文件。一个或多个类型‑2组520可以具有对应的类型‑2组配置文件570。类型‑2组配置文件570A是类型‑2组520A的配置文件。出于清晰起见,仅示出了一个类型‑1组配置文件560和一个类型‑2组配置文件570。
[0206] 各个配置文件550、560、570是被评估以确定对应元件或组是否满足通过警报进行监测的资源度量的用户定义标准的警报的集合。可以将配置文件的警报组织成被称为规则集的组。配置文件可以具有一个或多个规则集。规则集包含一个或多个警报的集合及警报的相应分配权重。规则集还包括阈值。为了确定配置文件的规则集是否有效,策略控制器201或策略代理205计算规则集中的全部有效警报的加权和。如果加权和大于或等于阈值,则规则集是有效的。如果其任意构成的规则集是有效的,则配置文件被视为是有效的。图5A描述了策略控制器201评估配置文件的示例,而图5B描述了一个或多个策略代理205评估配置文件的示例。在一些情况下,策略控制器201和策略代理205可以对处于配置文件层级的不同级的配置文件进行评估。
[0207] 在一些示例中,配置文件是具有范围、类型、唯一配置文件标识符、和/或多个规则集的数据结构(诸如包、集合、或表格等)。配置文件的示例性方案如下:
[0208] Profile:
[0209] Scope:
[0210] Type:
[0211] UniqueId:
[0212] Rulesets:
[0213] 上面定义了Scope并且Scope表示应用配置文件的元件或组的类型,例如,主机、主机聚合、或实例。Type表示配置文件的目的,诸如用于定义并且监测对应元件或组的健康状况。UniqueId是用于查询并且区分配置文件的唯一标识符。Rulesets表示规则集对象的列表,如下所述。
[0214] 如上所述,规则集包含一个或多个警报的集合及警报的相应分配权重。规则集还包括阈值。规则集对象的示例性方案如下:
[0215] Ruleset:
[0216] RuleList:
[0217] WeightList:
[0218] Threshold:
[0219] RulesetId:
[0220] RuleList是规则集的警报列表。WeightList是以1:1关系与警报列表对应的权重的列表。Threshold是用于确定Ruleset是否是有效的阈值,在本示例中,阈值介于0与1之间(包含0和1),但是,在其他示例中,阈值可以是任意值。RulesetId是用于查询并且区分规则集的唯一标识符。
[0221] 策略控制器201或策略代理205可以通过确定规则集RuleList中的各个警报是否是有效而对规则集进行评估。如果警报是有效的,则将其对应的权重添加至RuleList中的有效警报的权重的和。换言之,加权和是与RuleList中的有效警报对应的所有权重的和。如果加权和大于或等于阈值,则Ruleset是有效的。如果配置文件中的任意规则集是有效的,则配置文件是有效的。
[0222] 例如,可以将Ruleset R1定义为:
[0223] Ruleset_R1:
[0224] RuleList:[A1,A2,A3,A4]
[0225] WeightList:[0.1,0.3,0.4,0.2]
[0226] Threshold:0.3
[0227] RulesetObjectId:host1
[0228] 如由RulesetObjectId指示的,RuleList包括各自对元件‘host1’进行定义的4个警报A1、A2、A3、以及A4。每个警报分配有WeightList中所定义的权重。Ruleset具有阈值0.3。
[0229] 情况1:在时间t1,警报A1和A3在元件‘host1’上是有效的。为了判断规则集R1是否有效,策略控制器201或策略代理205判断:
[0230] R1_score=sum(A1的权重,A3的权重)=sum(0.1,0.4)=0.5
[0231] R1_active=(R1_score>=阈值)=(0.5>=0.3)=真
[0232] 由此,在时间t1,规则集R1被视为有效。在时间t1,包含规则集R1的全部配置文件还被视为有效。
[0233] 情况2:在时间t2,警报A4仅是元件‘host1’上的有效警报。为了判断规则集R1是否有效,策略控制器201或策略代理205判断:
[0234] R1_score=sum(A4的权重)=0.2
[0235] R1_active=(R1_score>=阈值)=(0.2>=0.3)=假
[0236] 由此,在时间t2,规则集R1被视为无效。在时间t2,根据配置文件的其他规则集的状态,包含规则集R1的全部配置文件可以是有效或可以无效。
[0237] 在典型的云环境中,元件与一个或多个组的元件(可替代地,被称为‘父代’元件)具有“成员”关系。例如,OpenStack主机可以是若干主机聚合的成员。Kubernete容器可以是集群、复制控制器、名称空间、以及若干不同服务的成员。作为多个组的成员的元件具有配置文件,该配置文件是该元件是成员的所有组的配置文件的组合,策略控制器201使用规则集实现该配置文件。
[0238] 响应于用户将元件配置为组的新成员,策略控制器201修改元件的配置文件,以添加组的配置文件中所包括的全部规则集。所添加的Ruleset中的RulesetId字段包含组的唯一标识符并且保持元件的配置文件中的不同规则集之间的区别。由此,响应于用户不再将元件配置为组的成员,策略控制器201能够从元件的配置文件中识别组的规则集并且除去已识别的规则集。
[0239] 例如,在示出的示例中,元件500A可以表示具有包括规则集552A的元件配置文件550A的虚拟机“V1”:
[0240]
[0241]
[0242] 用户可以致使用户设备UI设备129将配置数据输出至策略控制器201,以添加虚拟机V1作为项目“P1”和聚合“A1”的成员。项目P1可以是类型‑1的组并且类型‑1组510A可以表示项目P1。聚合A1可以是类型‑2的组并且类型‑2组520A可以表示聚合A1。
[0243] 作为类型‑1组510A的项目P1具有下列类型‑1组配置文件560A,包括规则集562A:
[0244]
[0245] 作为类型‑2组520A的聚合A1具有下列类型‑2组配置文件570A,包括规则集572A:
[0246]
[0247]
[0248] 响应于元件500A被添加为类型‑1组510A和类型‑2组520A的成员策略控制器201对元件配置文件550A进行修改,以分别额外地包括配置文件560A和570A的规则集562A和572A。相应地,所修改的配置文件550A如下:
[0249]
[0250]
[0251] 策略控制器201可以将配置文件550A分配至策略代理205。策略控制器201或策略代理205对规则集552A、562A、以及572A的警报进行评估,并且如果规则集552A、562A、以及572A中的任意一者是有效的,则确定配置文件550A是有效的。此外,策略控制器201或策略代理205对类型‑1组配置文件560A和类型‑2组配置文件570A的规则集的警报进行评估,以确定配置文件560A、570A是否也是有效的。例如,如果规则集562A是有效的,则配置文件
550A和560A是有效的。更具体地,如果规则集562A中的警报PA1和PA2是有效的,则类型‑1组配置文件560A以及元件500A的配置文件550A是有效的。对于未包括规则集562A的类型‑2组配置文件570A,类型‑2组配置文件570A至少由于规则集562A而是无效的。
[0252] 被添加至元件配置文件的规则集562A、572A可以包括应用于由元件消耗的一种或多种资源的使用度量的警报。例如,规则集562A可以包括具有基于实例的cpu.usage和memory.usage的条件的警报。在针对元件500A(即,虚拟机的示例)评估规则集562A时,策略控制器201或策略代理205基于由元件500A表示的虚拟机的cpu.usage和memory.usage对警报进行评估。这适用于作为类型‑1组配置文件560A的成员的所有元件。
[0253] 策略控制器201可以使用对应元件或组的使用度量对规则集552A、562A、572A的警报进行评估。例如,元件500A的警报可以被配置为基于使用度量530进行评估,类型‑1组510A的警报可以被配置为基于使用度量532进行评估,并且类型‑2组520A的警报可以被配置为基于使用度量534进行评估。使用度量532可以包括由作为类型‑1组510A的成员的元件所消耗的资源的度量,并且使用度量534可以包括由作为类型‑2组520A的成员的元件所消耗的资源的度量。在一些情况下,组可以具有单一元件500。
[0254] 随后,用户可以致使用户设备UI设备129将配置数据输出至策略控制器201,以从作为类型‑2组520A的聚合A1中移除作为元件500A的虚拟机V1。响应于从类型‑2组520A中移除元件500A,策略控制器201修改元件配置文件550A以移除类型‑2组520A的类型‑2组配置文件570A的规则集572A。所修改的元件配置文件550A是:
[0255]
[0256] 策略控制器201将配置文件状态指示540输出至UI设备129,UI设备129可以将配置文件状态指示540显示给用户。策略控制器201可以使用协议通过网络输出配置文件状态指示540。配置文件状态指示可以表示有效规则集及致使配置文件变得有效的一个或多个有效警报。
[0257] 如上所述,可以分配度量集合的来源及规则集的任意给定规则的来源和警报,并且不影响规则集的状态的评估。基于静态或动态地学习的全局阈值,能够发出关于度量的阈值和值的警报。由此,为用户提供表达能够组成元件或组的配置文件的有用解聚规则的各种组合的灵活性。例如,由实例聚合或项目构成的VNF池能够基于单独的元件设置规则以影响其服务级别。例如,策略控制器201可以接收已激活配置文件的通知并且部署新的实例并且将配置文件应用于新的实例。因此,由于提供警报的额外资源的额外元件,配置文件变得失效。
[0258] 实例聚合的配置文件可以指定:如果实例聚合中的指定百分比的实例是不健康的,则必须基于上下文状态转换采取措施。通过在提供配置文件结构的叶处的转换信息的规则集的顶部上开发定制服务,能够对错误警报或相关性进行修剪。例如,用户可以基于配置文件的第一规则集判断配置文件是有效的。然而,该第一规则集可能与性能的相关性较差。因此,仅当因为配置文件的第二规则集是有效的所以配置文件状态指示表示配置文件是有效时,才可以将根据有效的配置文件的策略设置为采取措施。
[0259] 用户可以对策略代理205的插件进行定义,以为支持VNF池的主机服务提供定制度量;实例物理地运行的主机能够提供关于VNF池的状态和功能的额外信息。因此,定制服务可以基于来自旨在用于定制聚合的规则集的上下文警报而采取详细的措施,以使得能够应用全局措施。
[0260] 图6是示出根据本公开的技术的多个元件的示例性配置文件层级及多种类型的组的组配置文件的框图。元件600具有包括规则集652的元件配置文件660。元件600是具有包括规则集662A的类型‑1组配置文件660A的类型‑1组610A中的成员。类型‑1组610A是具有包括规则集662N的类型‑N组配置文件660N的类型‑N组610N中的成员。尽管仅示出了组层级的2个等级,然而,示例性层级可以包括额外的等级。
[0261] 因为类型‑1组610A是类型‑N组610N中的成员,所以策略控制器201直接或通过类型‑N组610N中的成员的另一组中的成员关系过渡地将类型‑1组配置文件660A修改为包括规则集662N。因为元件600是类型‑1组610A的成员,所以策略控制器201将元件配置文件660修改为包括类型‑1组配置文件660A的规则集,类型‑1组配置文件660A包括规则集662A和662N。因此,元件配置文件660包括规则集652、662A、以及662N。在一些情况下,策略控制器
201可以修改“中间”配置文件以包括来自更高等级组的规则集。在示出的示例中,在该情况下,策略控制器201修改类型‑1组配置文件660A以包括规则集662N及来自更高等级组的配置文件的任意其他中间规则集。
[0262] 策略控制器201或策略代理205基于规则集652、662A、以及662N中包括的警报评估配置文件660是否是有效的。例如,可以基于元件600或作为类型‑1组610A和类型‑N组610N的成员的任意其他元件的使用度量,确定任意规则集是有效的。
[0263] 策略控制器201可以提供应用编程接口(API),通过应用编程接口(API),设备可以访问配置文件来创建、读取、更新、或删除配置文件。API可以是在指定URI处可访问的HTTP端点,例如,用户可以通过JSON或XML对象的形式发布、获得、补丁、或删除HTTP有效载荷。
[0264] 作为一个示例,用户可以在本地创建元件配置文件660并且将配置文件存储至设备,然后,将所创建的元件配置文件660发布至由策略控制器201服务的HTTP端点,以远程创建元件配置文件660。以下命令执行这些操作来创建具有多个规则集的元件配置文件660并且将元件配置文件存储至策略控制器201:
[0265]
[0266]
[0267] 下列命令执行操作以从不同的父代获得具有多个规则集的现有配置文件:
[0268]
[0269]
[0270] 通常,配置文件的API能够接受一次配置文件定义。然而,当用户在其他组中修改对应元件或组的成员关系时,策略控制器201动态修改配置文件。例如,用户可以删除两个实例并且将四个新的实例添加至聚合或项目。将聚合或项目的配置文件(更具体地,规则集)应用于4个新的实例的配置文件并且进行评估。
[0271] 在评估配置文件的规则集和规则列表之前,考虑度量生成的来源、警报条件识别、动态学习基线的能力。这可以提供优于使用中央数据存储集中于聚合度量和进程策略以及成员关系的其他系统的优点,这可能需要对大量的资源进行分配来获得生成健康和风险所需的相同服务等级信号所需的要求信号,该所需的要求信号使用本文描述的监测警报和配置文件技术提供。
[0272] 图7A是根据本公开中描述的技术的通过用于接收和显示配置文件的用户接口设备输出的示例性用户界面。用户接口设备129可以将用户界面700输出至显示设备以显示给用户。在本示例中,用户界面700显示具有项目类型的组的配置文件。用户界面元素702、704、以及706分别指示用于监测项目的健康状况的配置文件,具有项目级范围并且被命名为“管理员”。
[0273] 所显示的配置文件具有在用户界面700的相应用户界面区域中指示的两个规则集710和712。规则集710具有两个规则710A和710B,每个规则具有对应的权重708。规则集710具有由用户界面元素711指示的阈值。规则集712具有一个规则712A,规则712A具有对应的权重708。规则集712具有由用户界面元素713指示的阈值。
[0274] 用户接口设备129的用户与用户界面700交互,以修改配置文件以添加、移除、或修改配置文件的规则集。
[0275] 图7B是根据本公开的技术的通过用户接口设备输出、以显示配置文件状态指示的示例性用户界面。用户接口设备129可以将用户界面800输出至显示设备以显示给用户。用户界面800显示两个实例818A和818B的使用度量。用户界面元素820A‑1至820A‑6显示实例818A的使用度量并且用户界面元素820B‑1至820B‑6显示实例818B的使用度量。
[0276] 用户界面800指示项目“管理员”的整体健康状况和项目成员实例818A和818B的健康状况。实例818可以被视为元件并且由用户添加至项目的组。项目具有相关联配置文件,该相关联配置文件包括每个资源度量cpu.usage、memory.usage、network.ingress.bit_rate、disk.io.read_bw、以及disk.io.write_bw的警报的规则集。因为实例818是项目成员,所以实例818A和818B的相应配置文件“测试1”和“测试2”均包括项目的规则集并且至少在一些情况下经由用户界面元素820实时地显示度量。此外,用户界面800显示配置文件是有效还是无效的指示。在本示例中,指示“测试1”的健康状况配置文件和风险配置文件是有效的。指示“测试2”的健康状况配置文件是有效的并且指示“测试2”的风险配置文件是无效的。用户元素816显示项目的多个成员(此处,实例)是所存在的(“总共”)、有效的(“不良”)、处于风险(“风险”)、以及无效(“良好”)。此处,2个实例818是有效的并且由此存在2个“不良”或不健康的实例。
[0277] 图8是示出根据本公开的技术的计算系统的操作的示例性模式的流程图。策略控制器201从用户接口设备129接收或通过其他方式获得配置文件数据,配置文件数据定义虚拟化基础设施的元件的第一配置文件(850)。第一配置文件包括具有一个或多个警报的规则集。策略控制器201进一步从用户接口设备129接收或通过其他方式获得配置文件数据,配置文件数据定义元件组的第二配置文件(852)。响应于从用户接口设备129接收配置数据,将元件配置为组的成员(854),策略控制器201将第一配置文件修改为包括第二配置文件的规则集并且由此生成所修改的第一配置文件(856)。策略控制器201将所修改的第一配置文件部署至服务器126的策略代理205,策略代理将所修改的第一配置文件(856)应用于与由元件消耗的资源相关联的使用度量(858)。
[0278] 随后,策略控制器201从用户接口设备129接收移除作为组成员的元件的配置数据(860)。第二配置文件的规则集包括配置文件213的规则集中的唯一标识符。将唯一标识符包括在在步骤856中被添加至第一配置文件的规则集中。使用第二配置文件的规则集的唯一标识符并且响应于移除作为组成员的元件的配置数据,策略控制器201识别所修改的第一配置文件中的规则集并且移除规则集而恢复第一配置文件(862)。策略控制器201将所修改的第一配置文件部署至服务器126的策略代理205,策略代理将第一配置文件应用至与由元件消耗的资源相关联的使用度量(864)。
[0279] 图9A是根据本公开的一个或多个方面的示例性网络900的框图,在网络900中控制器201管理服务器或计算节点并且通过控制板203提供计算机网络拓扑结构的虚拟化。
[0280] 在一些示例中,控制器201可以生成特定资源或资源类型的无视觉图形符号的可视化。可以完成此操作,以使得网络基础设施元件的空间最大化并且使得空间为与计算机网络中的计算节点或网络设备的操作状态对应的细节可用。为了表明缺少视觉图形符号,在图9B示出的示例中显示符号的概述和/或灰化版本。
[0281] 在图9A示出的示例中,将控制器201示出为集群902的一部分。然而,在其他示例中,控制器201不是集群902的一部分,并且在该示例中,“集群902”指节点、而非控制器。图9A中的集群902可以表示基于云的计算网络和/或计算域或项目、或其他类型的计算集群。
如果图9A中的集群902表示云环境,则该云环境可以是OpenStack云环境或Kubernete云环境。集群902可以跨诸如不同的数据中心的多个环境分布。
[0282] 控制器201可以通过结合图1和/或图2描述和示出的方式而操作。例如,在一些示例中,控制器201可以与部署在一个或多个服务器126(即,主机或计算节点)内的监测代理(图9A中未示出)交互,监测代理用于监测服务器或物理计算节点的资源使用以及在一个或多个计算节点上实现的诸如VM或容器的任意虚拟主机或实例。如本文所描述,集群902内的监测代理可以在消息总线215上收集并且公布关于计算机网络拓扑结构的信息(例如,度量),计算机网络拓扑结构可以包括交换结构121中所包括的物理设备和耦接服务器126的额外虚拟设备。监测代理可以提供用于收集与耦接服务器126的计算机网络拓扑结构有关的各种信息的分布式机制,并且将信息提供至控制器201。还可以经由用户输入将与计算机网络拓扑结构有关的信息提供至控制器201,例如,与设备有关的用户提供的信息被添加至交换结构121或从交换结构121移除。
[0283] 可以以结合图1、图2、和/或图3A和图3B描述和示出的方式实现控制板203。如结合图1描述的,主要通过控制器201和/或控制器201上运行的控制板模块,创建、更新、和/或维护控制板203。如图9A所示,控制器201可以生成控制板203,控制板203可以表示提供关于与基础设施元件相关联的拓扑结构、结构、层级、使用、和/或度量的信息的用户界面(例如,包括用户界面910)的集合。控制板203构建并且输出用户界面屏幕,例如,用于通过UI设备129显示的用户界面910。在图9A的示例中,用户界面910包括布置在应用选择区域911、视图控制区域912、以及主要显示区域913中的一组应用图标。主要显示区域913内所显示并且通常由弯曲箭头指示的计算机网络的图形表示914与网络900内的基础设施元件(例如,路由器、交换机、主机、实例、项目、虚拟或物理网络设备)对应,并且可以布置在用户界面910内,以示出网络拓扑结构、层级、父代/子代关系、或其他关系或配置。此外,主要显示区域913中所提供的一种或多种基础设施元件表示可以包括提供关于与网络900的基础设施有关的使用、连接、度量、健康状况、风险、条件、和/或其他状态信息的信息的指示符(例如,色彩、图案、梯度、阴影、或其他视觉指示符)。例如,指示符可以是计算机网络的网络设备或计算节点周围的虚线。在其他示例中,红色指示符可能表示高使用率,以及绿色指示符可能表示低使用率,并且不落入任意类别的指示符可能以另一种方式或不同的色彩(例如,黄色、橘色、灰度、或无色)表示。
[0284] 在一些示例中,响应与来自用户的输入(例如,与用户界面910内的视图控制区域912交互),控制器201可以生成或更新控制板203内的用户界面,以使得通过设备类型、互连、健康状况、风险、聚合、项目、网络(虚拟或物理)、类型、和/或其他方式对基础设施元件进行过滤。在该示例中,过滤器可以使一些基础设施元件隐藏在控制板203或控制板203的用户界面内,同时在控制板203内呈现其他基础设施元件。可以应用使用函数范式的过滤器。例如,每个过滤器可以与函数对应,以使得对于待过滤的一组给定的“x”资源、元件、或其他项、以及过滤器函数“f”和“g”,可以将过滤器的应用计算为f(g(x))。如果过滤器遵循函数范式,则按照不同的顺序应用过滤器(例如,g(f(x)))将具有相同的结果。在一些示例中,一些或全部过滤器函数是纯函数的,以使得函数上下文之外没有状态信息改变。每次过滤值(或其他用户界面组件)改变时,控制器201可以将资源散列表中的资源映射至资源阵列,并且然后,应用适当的过滤器来创建新的资源阵列。当检测到与用户界面910的交互时,当选择或改变主要显示区域913内的一种或多种基础设施元件表示时,当通过控制器201接收度量数据时,和/或在其他情形中,可以应用和/或重复应用过滤器。
[0285] 在一些示例中,作为生成用户界面910的部分,控制器201对设备列表(例如,交换结构121中包括的物理设备的列表)应用一种或多种算法,以将表示物理设备的图形符号相对于彼此布置在具体位置中用于显示。主要显示区域913内所设置的物理设备的布置显示包括示出一些或全部设备之间的互连的图形表示(例如,一组图形线)作为计算机网络拓扑结构的视觉表示。
[0286] 可以以包括表示计算机网络的设备的多行符号的层级方式,示出具体计算机网络内所包括的设备的图形描述。每行包括表示一组相同类型的设备的一组图形符号,图形符号被布置成在行上彼此邻近并且在跨图形描述的水平方向上(例如,在从左至右的方向)延伸。在各个额外行内包括额外设备并且表示相对于任意其他行中所包括的设备类型为不同类型设备的一个或多个额外行,可以被布置成在同一水平方向上跨图形描述延伸。这些单独的行可以被进一步布置成使得各个行以层级方式而彼此竖直地堆叠。使用表示由图形符号描述的设备类型的符号,可以图式地示出物理设备自身,其中这些设备之间的互连通常由在表示这些设备之间的互连的图形符号之间延伸的各条线图式地表示。
[0287] 具有计算机网络拓扑结构的图形表示的上述格式的一些问题包括:随着给定计算机网络中的相同类型的设备的数量变多,包括这些相同类型设备的一行或多行的长度可以延伸至用于显示计算机网络拓扑结构的显示设备的单一屏幕的宽度之外。这导致需要来回滚动显示器,以显示描述计算机网络的一个或多个设备的屏幕上当前不能显示的符号。此外,因为在互连的至少一端,设备互连耦接至屏幕上当前不能显示的图形符号,所以一些实例中表示物理设备的图形符号之间的互连的图形描述可以延伸至显示器之外。此外,基于行的计算机网络拓扑结构的图形显示的这种格式使得添加新的设备,并且由此使得将新的图形符号插入到图形描述中的需求成为困难的过程。将图形符号放置在相同类型设备的行内可以造成这样的问题:在尝试保持紧凑并且易于理解并且可视化图形描述内的一组互连的同时,从表示新设备的添加的符号处路由额外的互连。
[0288] 如本公开中所描述的用于生成和显示计算机网络拓扑结构的图形用户界面的技术,可以通过各种方式克服这些及其他问题。例如,本公开中进一步描述的技术包括表示计算机网络的物理设备和/或虚拟设备的图形符号的树结构、径向结构、以及其他布置。
[0289] 控制器201可以被配置为发送关于健康状况/风险违规的警报。例如,控制器201可以在套接字上收听健康状况/风险警报,健康状况/风险警报使用应用于本文描述的网络拓扑结构信息的相同警报和分析结构而生成。如果设备(或其他基础设施元件)具有不健康状况或风险,控制器201则可以经由套接字接收具有设备ID和违规原因的通知。一旦解析,则控制器201可以通过全部节点进行迭代并且检查节点ID是否与经由通知接收的ID的节点对应。如果对应,则控制器201可以将该节点的健康状况/风险图标的不透明度配置为1(或其他高的值)并且出于给定原因填充其在热图用户界面内的提示框。对于在套接字上接收的该空间的下一数据报,控制器201可以检查新数据中是否存在之前提供的ID。如果否,则控制器201可以将健康状况/风险图标的不透明度设置回0,即,设备不再处于风险状况或不再具有不健康状况。
[0290] 在一些示例中,可以使用基于推送的模型,通过消息总线215将来自监测代理的数据接近和/或看似接近实时地通信至控制器201。在维护控制板203时,控制器201可以订阅消息总线215上可用的信息的子集;并且监测代理或收集来自监测代理的度量的独立模块,可以推送指定仅在最后的时间间隔内发生变化的差量(差)。例如,差量可以指定网络900A和/或集群902的配置状态的净变化,诸如给定元件的计数的增加或减少,例如,主机数量的增加或减少。作为另一示例,差量可以指定操作状态的变化,诸如从一种状态转换至另一状态的集群的基础设施元件的数量,诸如从健康状态转换至风险状态的数量,反之亦然。这可以减少或最小化维护控制板203所需的支出并且允许控制板随着网络的尺寸的增加而缩放。
[0291] 在一个示例中,控制板903(即,其中的用户界面)在包括各个相应的集群、网络、或子网的整体性能、健康状况、以及状态信息的单一窗格中,显示全部集群成员的信息。在示例性实现方式中,在该单个可视化中显示各个集群的资源的健康状况、风险、以及计数(例如,主机、项目、实例)。以这种方式,起初,用户能够查看并且确定全部集群902的状态,并且能够确定哪些集群更深入地挖掘其当前健康状况和风险评估来获得更为详细的信息。能够将需要关注的任意集群(例如,具有处于不健康状况或风险的资源的集群)过滤至视图的顶部。
[0292] 在一个示例性实现方式中,能够使用基于推送的模型,将全部数据从控制器201接近实时和/或看似接近实时地提供至控制板系统901。控制板系统901接入各个集群902的相应的消息总线215A至消息总线215N(“消息总线215”),并且集群902中的各个控制器201可以推送指定仅在最后时间间隔内发生变化的差量(差)。例如,差量可以指定配置状态的净变化,诸如给定元件的计数的增加或减少,例如,主机数量的增加或减少。作为另一示例,差量可以指定操作状态的变化,诸如从一种状态转变至另一状态的集群的基础设施元件的数量,诸如从健康状态转变至风险状态的数量,反之亦然。这可以减少或最小化对控制板系统901的支出和/或维护控制板903所需的支出,由此能够使得控制板随着集群数量的增加而缩放。
[0293] 因为拓扑结构视图中资源的数量是巨大的,所以这种解决方案可以提供明显的性能益处。在一个示例性实现方式中,通过将控制板系统901和/或控制板903配置为仅维持并且输出具有不健康状况的元件/节点和处于风险的元件/节点的指示符(例如,色彩、形状、或图形小组件)进行显示,额外地减少或最小化控制板系统901和控制板903上的数据使用负担。因此,数据对象、控制板不需要消耗存储器和计算资源导致对控制板系统901和控制板903的时间和资源支出减少。
[0294] 本公开中所描述的系统、设备、以及方法允许使用一种或多种算法生成这些图形用户界面,以执行对所建模的计算机网络中包括的设备列表进行分类和布置的过程。例如,在访问具体计算机网络中所包括的设备列表(物理设备和/或虚拟设备)之后,可以将物理设备分类成包括直接连接至至少一个主机的设备的第一组、和不直接连接至任意主机的第二组设备(尽管它们可以通过一个或多个其他设备连接至主机)。基于第二组中的各个设备与第二组内的所有其他设备之间的连接数量,可以将第二组中的设备(不直接耦接至至少一个主机的设备)进一步分类到所排序的列表中。
[0295] 本公开中所描述的图形用户界面的示例可以包括额外的信息,诸如包括与计算机网络相关联的各种统计的文本框,诸如网络(物理)设备的总数量、(连接和/或未连接)计算机网络的主机的总数量、以及(连接和/或未连接)通过图形用户界面描述的计算机网络的虚拟网络的总数量。还可以提供额外信息(诸如示出设备类型的图例、以及在任意给定时间由图形用户界面示出的对应图形符号)作为显示为图形用户界面的一部分的信息的一部分。
[0296] 尽管贯穿本公开描述的图形符号可能涉及包括由图形用户界面建模的计算机网络的物理设备,然而,图形用户界面的示例中所包括的表示并不仅局限于物理设备。本公开中所描述的图形符号还可以包括表示虚拟实体的图形符号,诸如虚拟服务器、虚拟路由器、和/或连接到一个或多个物理设备的其他计算机/软件实体的虚拟实例、和/或连接到根据本公开中描述的任意示例在图形用户界面中图形渲染并且视觉表示的其他虚拟实体的虚拟实例。
[0297] 本公开中所描述的图形用户界面以及使用本文描述的系统、设备、及方法生成并且显示的其任意等同物提供视觉工具,该视觉工具可以允许用户(诸如信息技术(IT)专业人员或技术人员)对与已有计算机网络相关联的拓扑结构进行快速并且有效地建模、可视化、以及更新、或者用于对所提议的计算机网络执行这些相同或相似功能。
[0298] 图9B是根据本公开的一个或多个方面的用于通过控制板显示计算机网络拓扑结构的图形表示的用户界面的框图。
[0299] 在图9B示出的示例中,控制器201可以生成特定资源或资源类型的无视觉图形符号的图形表示。可以完成此操作,以使得网络基础设施元件的空间最大化,并且使得空间为与计算机网络中的计算节点或网络设备的操作状态对应的细节可用。为了表明缺少视觉图形符号,在图9B示出的示例中显示了符号的概述或灰化版本。图9B中的实际实施方式将不包括概述或灰化版本。图9B的意图是示出可能不包括在与图9B对应的控制器201的用户界面的图形表示中、但在图9B内出于示出性目的而以这种概述或灰化方式呈现的符号。
[0300] 与图9A中的示例基本相似,在图9B的示例中,用户界面920包括控制区域921、主要显示区域922、以及由框架923包围的区域中的一个或多个信息面板。主要显示区域922内所显示并且通常由弯曲箭头指示的计算机网络的图形表示924,与网络900内的网络基础设施元件(例如,路由器、交换机、主机、实例、项目、虚拟或物理网络设备)对应并且可以布置在用户界面920内,以示出网络拓扑结构、层级、父代/子代关系、或其他关系或配置。此外,主要显示区域923中所提供的一种或多种网络基础设施元件表示可以包括指示符(例如,色彩或其他视觉指示符),该指示符提供关于使用、度量、健康状况、风险、条件、状态、和/或与网络900的基础设施有关的其他状态信息的信息。例如,在一些示例中,红色指示符可能表示不健康状况/高风险或有风险,绿色指示符可能表示良好健康状况/低风险,并且不落入任一类别的指示符可能以另一种方式或不同的色彩(例如,黄色、橘色、灰度、或无色)表示。
[0301] 在控制区域921中,将多个用户界面元素配置为接受用户输入。控制区域921包括若干用户选择框和按钮,该用户选择框和按钮允许通过控制板203接受用户输入并且用户输入被用于控制显示区域913中所提供的信息的显示和/或用户界面910的一个或多个信息面板。可以经由光标和/或通过诸如使用键盘(图9B中未示出)的这种输入的其他输入设备进行用户输入。
[0302] 在一些示例中,控制器201可以响应于来自用户的输入,用户输入通常包括与用户界面920内的区域的任意交互。控制器201可以响应于通过诸如控制区域921、主要显示区域922、以及包围通常由框架923指示的区域的一个或多个信息面板的任意上述区域的输入。
控制区域921的示例性输入包括分析参数的选择。主要显示区域922的示例性输入包括图形表示914中的网络基础设施元件的图形符号的选择,以致使对具有各种信息的图形用户界面(GUI)元素(可以被称为文本框)进行渲染。另一示例性输入可以是指示网络基础设施元件的相同图形符号的聚焦变化的悬停事件。信息面板的示例性输入可以是对所需数据点的查询。
[0303] 通过“分析”框930中提供的(下拉)菜单进行的用户选择,可以允许基于各个参数(例如,设备聚合分组)对主要显示区域922中所显示的计算机网络拓扑结构进行过滤/分类。“分析”框930中可以出现主要显示区域922中所显示的资源类型(例如,设备及其他实体)的列表。用户输入可以用于对“分析”框930中和/或主要显示区域922中所列出的设备和/或实体的列表进行重新配置。
[0304] “图例”框931可以用于显示示出在主要显示区域922中所显示(可能显示)的图形符号的各种类型的示例的键。“图例”框可以被键入一组文本描述符,该文本描述符分别指示主要显示区域922中所显示或可能显示的各个图形符号表示什么实体或什么类型的设备。
[0305] “范围(scale,量表)”932框可以用于显示示出在健康状况/风险方面用于区分网络元件的色彩梯度或范围的键。关于计算机网络拓扑结构的可视化,“范围”框932可以用于通过相比于表示良好健康状况的路由器的色彩梯度、使用不同的色彩梯度()表示风险主干而增强图形表示924。
[0306] “历史”框933可以允许与计算机网络拓扑结构相关联的历史数据的可视化。“历史”框932可以用于显示计算机网络拓扑结构的历史拓扑结构视图,其中,网络元件与预定义的时间点(例如,诸如24小时之前的时间戳)或时间范围(例如,2020的第一季度)对应。
[0307] “连接”框934可以允许计算机网络拓扑结构中的具体资源的连接资源的可视化。当用户针对计算机网络拓扑结构的图形表示924中的网络元件键入该网络元件的设备名称时,控制器201(进而)可以利用关于相同计算机网络拓扑结构中的具体资源与另一资源之间的各个连接的数据点填充“连接”框934。作为示例,控制器201可以显示具体资源的源接口和/或主机/虚拟机实例或其他资源的目的地接口。
[0308] 在主要显示区域922内,用户界面920包括计算机网络拓扑结构的图形描述,该图形描述通常由参考标号924表示、包括表示计算机网络设备的视觉图形符号、根据本公开中所描述的技术布置和互连的图形符号。图9B中所示的布置包括通过用户界面910建模的计算机网络中所包括的图形符号,诸如表示被称为主干的交换机的符号935和表示被称为叶的路由器的符号936。一条或多条图形线表示通过图形符号表示的设备之间的互连,相应的图形线在图形符号之间延伸。
[0309] 除显示计算机网络拓扑结构的视觉表示之外,用户界面920的主要显示区域922可以包括显示器的一种或多种其他类型的信息和/或用户可选择部分。例如,用户界面920可以包括显示网络的未连接的主机的列表的图形描述。
[0310] 图9C示出了根据本公开的一个或多个方面的计算机网络拓扑结构的示例性表示。
[0311] 与图9B中的示例类似,在图9C的示例中,用户界面940包括控制区域941、主要显示区域942、以及由框架943包围的区域中的一个或多个信息面板。控制区域941包括用于选择计算机网络拓扑结构的图形表示944的显示模式的控件以及“分析”框,用户通过该“分析”框提交用于显示/修改经由主要显示区域942呈现的当前图形表示944的参数。
[0312] 主要显示区域942内所显示并且通常由弯曲箭头指示的计算机网络拓扑结构的图形表示944,与网络900内的网络基础设施元件对应并且可以布置在用户界面940内,以示出网络拓扑结构、层级、父代/子代关系、或其他关系或配置。此外,主要显示区域942中所提供的一种或多种网络基础设施元件表示可以包括指示符(例如,色彩或其他视觉指示符),该指示符提供关于使用、度量、健康状况、风险、条件、状态、和/或与网络900的基础设施有关的其他状态信息的信息。例如,在一些示例中,暗色(几乎黑色)梯度的指示符可能表示不健康状况/高风险或有风险,浅色(几乎白色)梯度的指示符可能表示良好健康状况/低风险,并且不落入任一类别的指示符可能以对应于健康状况/风险操作状态的梯度表示。
[0313] 如图9C所示,用户已经选择图形表示944的显示模式“健康状况/风险”,以提示策略控制器201通过基于元件的操作状态显示各个网络元件的图形符号及(可能的)指示符而输出图形表示944。显示模式“健康状况/风险”允许用户基于其操作状态对网络元件进行快速识别。如果状态信息识别具有不健康状况/高风险或有风险的网络元件,控制器201则可以渲染GUI元件以呈现“不健康状况/高风险或有风险”作为文本,并且可以将该GUI元素放置在与已识别的网络元件邻近的位置处。该GUI元素可能伴随有“不健康状况/高风险”的指示符或可以替代指示符。
[0314] “分析”框允许用户基于网络元件的操作状态搜索并且识别具体的网络元件。在“分析”框中,用户可以键入参数来修改当前呈现的图形表示944,例如,通过键入“资源类型”参数来搜索具体的网络元件(例如,路由器)、通过键入“操作状态”参数来搜索具有匹配操作状态(例如,“有风险”)的具体网络元件、并且通过键入“视图设置”参数而对图形表示944中的图形符号进行过滤或分类。当将任意“操作状态”参数键入至对应的GUI元素时,策略控制器201生成标记为“范围”的GUI元素,以允许对“操作状态”参数进行调整。用户可以仅通过移动“无风险”与“不良”“操作状态”参数之间的“范围”选择符而改变图形表示944。
[0315] 在一些示例中,控制器201可以响应于包括与用户界面940(一部分或区域)的任意交互的用户输入。在一个示例中,当用户将参数键入至“分析”框中时,控制器201通过对分析表945进行渲染并且利用数据项填充该表格而更新用户界面940。在另一示例中,控制器201进一步通过对计算机网络的已修改图形表示944进行渲染而更新用户界面940,以使得呈现与分析参数相匹配的网络元件的统计。
[0316] 在一些示例中,还可以设计加权度量,加权度量相对于和/或相比于相同类型的所有基础设施元件或所有其他基础设施元件,对所有设备和/或基础设施元件健康状况和热量进行排序。在一些示例中,加权度量可以考虑与基础设施元件相关联的所有接口。控制器201可以针对图表中的任意节点的一组度量而产生组合分数。控制器201可以通过度量权重对各个度量进行加权,其中,所有权重的和等于一,由此为与该基础设施元件相关联的多个度量提供归一化值。在一些示例中,能够使用加权度量的组合分数对该基础设施元件的整体特性进行评估(例如,能够使得控制器201识别哪些设备在热运行)。控制器201可以对控制板203进行更新,以将该加权度量整合到分析表945中。
[0317] 当用户在图形表示944的左上方网络元件上悬停光标(如图片)时,控制器201生成指示关于视觉指示符946的细节的GUI元素(例如,文本框)。如本文描述,视觉指示符946可以使用各种视觉效果将GUI元素中的细节通知给用户(例如,警报)。应注意,视觉指示符946可以是单一视觉效果或不同视觉效果的组合并且可以被编程为计算机设备中的对象。该对象的性质可以指定包括色彩(例如,像素强度值)、形状、动画、图形等的这些视觉效果。视觉指示符946可以是已识别网络元件的图形符号周围边界的虚线。控制器201可以进一步指定虚线的图案。此外,虚线和/或图形符号可以通过某种方式闪烁和/或动画化。此外或作为虚线的替代品,视觉指示符946‑结合有图形符号的背景,可以通过色彩梯度配置。可以配置视觉指示符946的视觉效果的任意组合,以指示网络元件处于不健康状况或有风险。
[0318] 类似地,控制器201对视觉指示符947进行渲染,以表示引起视觉指示符946的细节的虚拟机实例,例如,通过以相同的视觉效果示出视觉指示符947。可替代地,控制器201渲染视觉指示符947,以表示相同、但具有不同色彩梯度及指示引起视觉指示符946的细节的虚拟机实例的其他视觉效果的虚拟机实例。此外,控制器201可以根据健康状况/风险程度对虚拟指示符947的图形符号进行渲染。
[0319] 如在表示944中可视化的:“VMI丢失心跳”和“device.snmp.heartbeat”,GUI 948提供计算机网络拓扑结构中的最左上方网络元件的操作状态的细节。在一些示例中,GUI 948包括链接,当被激活时,该链接显示与丢失心跳相关联的VMI的视觉指示符947和/或图形符号。
[0320] 图9D是示出根据本公开所描述的技术的用于生成和显示包括计算机网络拓扑结构的图形描述的用户界面的示例性方法的流程图。如所描述的,耦接至计算机网络的策略控制器(例如,图1中的策略控制器201(或简称控制器201))执行逻辑以生成控制板203,并且输出提供与计算机网络相关联的计算机网络拓扑结构的图形描述的一个或多个用户界面(框952)。
[0321] 策略控制器201访问关于由用户界面建模的计算机网络的信息,该信息(例如,计算机网络拓扑结构信息)包括计算机网络中所包括的设备的列表及这些设备之间的互连(框954)。在一些示例中,设备列表包括诸如交换机(例如,叶)和/或路由器(例如,主干)的物理设备,物理设备可以包括在交换结构(例如,图1中的交换结构121)中,交换结构将一个或多个主机或计算节点(例如,图1中的服务器126A至126N)通信地耦接至彼此和/或网关(例如,图1中的网关108)。在一些示例中,设备列表仅包括物理设备(例如,图1中的机箱交换机122A至122N、TOR交换机123A至123N)。在其他示例中,设备列表包括物理设备和虚拟设备(例如,图1中的虚拟路由器142A至142N),并且在一些示例中,识别诸如网络设备(例如,路由器)或计算节点(例如,主机服务器上运行的虚拟机)的设备的资源类型。在其他示例中,设备列表可以与规定计算机网络拓扑结构的图形表示的模型数据相关联,并且该模型数据可以包括指示具体设备的表示图形符号在计算机网络拓扑结构的控制板203的图形描述中是否可见的(布尔)。
[0322] 如本文描述,控制板203操作为提供图形描述,在该图形描述中,用户可以对网络拓扑结构进行快速视觉化并且然后实现网络的预测未来和/或当前操作状态。应注意,为了提供这些图形描述,控制板203最大化可用空间的使用并且最小化计算节点的呈现。因此,尽管计算机网络包括主机和实例,然而,策略控制器203在没有这些主机和/或实例的表示的情况下对计算机网络拓扑结构的图形描述进行渲染。如图9B所示,可以将网络的图形表示渲染成不包括一个或多个虚拟机实例的视觉图形符号。这可以使用于呈现对网络的正常功能关键的网络元件的信息和图形描述的可用空间最大化。
[0323] 策略控制器201基于指示物理和/或虚拟设备的操作状态的信息而识别网络元件(框956)。如本文描述,如果用户具有受关注的操作状态,则策略控制器201识别具有该用户期望操作状态的各个网络元件。图9C中示出了示例;当用户选择健康状况/风险作为显示模式时,用户的意图是识别具有风险或不健康状况的操作状态的网络元件。因此,可以预先确定受关注的操作状态具有风险(即,预测的未来状态)和/或不健康状况(即,目前操作状态)。在图9C中,基于状态信息,将作为与视觉指示符946和GUI 948对应的主干的上方最左侧网络元件识别为具有风险/不健康状况的操作状态。策略控制器201可以在例如分析表945中显示该状态信息的表格视图。多个源可以存储本文描述的状态信息并且使得该状态信息可供策略控制器201访问。
[0324] 策略控制器201修改指示耦接至已识别网络元件的资源的操作状态的信息(框958)。在一些示例中,策略控制器201对通信地耦接至已识别网络元件、并且具有对已识别网络元件产生不利影响程度的风险和/或不健康状况的操作状态的物理或虚拟设备(例如,处于计算机网络拓扑结构中较低层级的主机或实例)进行识别。在图9C中,作为示例,视觉指示符947与产生已识别网络元件的风险/不健康状态的操作状态的VMI相对应,已识别网络元件是与视觉指示符946和GUI 948对应的、主干的、上方最左侧网络元件。GUI 948提供该操作状态的细节,该细节在图9C中是缺失的心跳。
[0325] 如此处表明的,可以将通信耦接的另一物理或虚拟设备(例如,计算节点或网络元件)识别为受已识别网络元件的操作状态的影响。在一些示例中,策略控制器201指示在耦接的资源中丢失的连接。策略控制器201可以指示该资源经由网络接口连接至已识别网络元件并且返回连接的资源。
[0326] 策略控制器201生成图形用户界面元素和视觉指示符,以包括在控制板中(框960)。基于网络拓扑结构信息指示计算机网络的拓扑结构中的已识别网络元件的视觉图形符号的确定,策略控制器201输出与视觉图形符号对应的视觉指示符并且进一步输出显示与计算节点或网络设备的操作状态相关联的信息的图形用户界面(GUI)元素。
[0327] 另一方面,基于网络拓扑结构信息指示计算机网络的拓扑结构中的已识别网络元件的视觉图形符号的确定,策略控制器201输出与通信耦接至已识别网络元件的可见资源对应的视觉指示符,并且进一步输出显示与已识别网络元件处受关注的操作状态相关联的信息的图形用户界面(GUI)元素。在图9C中,视觉指示符946、947、以及GUI 948是由策略控制器201生成的用于插入到控制板中的GUI元素和视觉指示符的示例。
[0328] 策略控制器201输出包括计算机网络拓扑结构的图形表示的图形用户界面(GUI)(框962)。策略控制器201可以生成已识别网络元件的图形符号作为该输出GUI的一部分,并且然后,在邻近于与可见资源对应的视觉指示符的位置处显示该视觉图形符号。策略控制器201可以将图形用户界面元素输出至图形用户界面上,当被激活时(例如,通过用户交互),图形用户界面元素生成受计算机网络中的不健康状态或有风险的网络设备或计算节点影响的一种或多种连接资源中的资源的图形符号、标识符、以及描述性文本。如果资源是诸如路由器的网络设备,则策略控制器201在计算机网络的GUI中呈现网络设备的标识符(例如,设备名称)并且呈现与计算机网络中的计算节点或网络设备的操作状态对应的细节作为描述性文本。在一些示例中,这些细节通知用户关于所连接的资源如何受计算节点或网络设备的操作状态的影响。
[0329] 策略控制器201可以通过扩展与可见资源相关联的拓扑结构的一部分以对计算机网络拓扑结构的已修改图形表示进行渲染,以使得已识别网络元件作为图形符号变得可见。策略控制器201通过在起源位置处对已识别网络元件的视觉指示符进行渲染,而便于用户对已识别网络元件和/或计算节点或网络设备的操作状态进行调查。可替代地,策略控制器201可以将链接插入到视觉指示符中,当被选择时,视觉指示符对与可见资源相关联的拓扑结构的一部分进行扩展,以使得已识别网络元件变得可见。
[0330] 策略控制器201可以输出与拓扑结构中的可见资源对应的视觉指示符和图形用户界面(GUI)元素,图形用户界面(GUI)元素显示与满足第一组条件的目前操作状态和满足第二组条件的预测未来操作状态中的至少一种相关联的信息。这些条件可以被编码(例如,在SLA中)并且建立为用于对任意网络内的网络元件的操作状态进行评估的规则。
[0331] 可选地,策略控制器201将设备列表过滤成包括耦接至计算机网络的已识别网络元件的设备的过滤拓扑结构。作为另一选项,策略控制器201可以根据状态信息输出计算机网络的分类拓扑结构。作为示例,策略控制器201生成圆形或径向布置,其中,网络元件按照从不健康状况/高风险至良好健康状况/低风险的顺序对齐。
[0332] 图10和图11示出了根据本公开的一个或多个方面的通过构成一系列用户界面的网络900的控制板203的计算设备而输出的用户界面的示例。图10示出了根据本公开的一个或多个方面的通过网络900的控制板203的计算设备而输出的第一示例性用户界面。图10中的示例性用户界面输出是网络900的计算机网络拓扑结构的用户界面1000的示图。
[0333] 在图10的示例中,用户界面1000包括视图控制区域1001、主要显示区域1002、以及包围由框架1003指定的区域的一个或多个信息面板。主要显示区域1002内所显示并且通常由弯曲箭头指示的计算机网络的图形表示1004与网络900内的基础设施元件(例如,路由器、交换机、主机、实例、项目、虚拟或物理网络设备)对应并且可以布置在用户界面920、940内,以示出网络拓扑结构、层级、父代/子代关系、或其他关系或配置。此外,主要显示区域1003内所提供的一种或多种基础设施元件表示可以包括指示符(例如,色彩或其他视觉指示符),该指示符提供关于使用、度量、健康状况、风险、条件、状态、和/或与网络900的基础设施有关的其他状态信息的信息。
[0334] 例如,如由图9A、图9B、图9C、图10、以及图11所示,主要显示区域913、923、943、1003、以及1103中的计算机网络拓扑结构的显示中的差异和/或变化,表示基于用于生成相应用户界面的网络度量或源的选择的显示动画。参考这些用户界面使用术语“动画”并不一定默示给定用户界面内所发生的运动肖像,而是指当从通过参考图9A、图9B、图9C、图10、以及图11示出并且描述的用户界面的示例显示的一个用户界面进行至另一用户界面时所发生的任意变化。
[0335] 如图10所示,主要显示区域1003包括表示计算机网络拓扑结构的图形符号的显示,计算机网络拓扑结构包括布置成多种可行布置的图形符号组。如用户界面1000所示,表示计算机网络的叶(交换机)的一些图形符号均直接耦接至由适当图形符号表示的主机。与诸如叶的网络元件和/或诸如主机的计算节点之间的连接、或网络元件自身之间的连接对应的信息,可以用于确定哪些图形符号经由电路而连接。此外,第二叶直接耦接至第二主机。
[0336] 通过使用本文描述的用于图形符号的放置和互连的算法和技术,可以自动生成用户界面1000,并且例如如用户界面1000所示显示用户界面1000来基于设备的视觉表示以及由用户界面建模的计算机网络中所包括的设备之间的互连,提供计算机网络拓扑结构的紧凑并且易于理解的视觉表示。基于一组默认规则和/或如通过用户输入修改的,可以对计算机网络拓扑结构的显示进行渲染,例如,通过用户可选择按钮的选项和通过视图控制区域1001提供的字段而提供的用户输入、和/或通过例如响应于用户输入而使用光标直接对主要显示区域1002的部分进行的输入。
[0337] 此外,算法还可以将彼此直接连接的设备的图形符号布置在接近彼此的位置,例如,在可能的范围内,布置成层级或树布置。通过将彼此连接的设备的图形符号置于相邻的位置,可以减少和/或最小化表示这些设备之间的互连的图形线之间所产生的交叉的长度和数量。
[0338] 在一个示例性实现方式中,控制板903能够使用户容易导航资源并且进一步挖掘所监测的元件,以对诸如所监测的具体元件的集群内所定义的任意元件(实例对象)的度量、警报、以及报告进行可视化,由此查看该实例的接近实时和/或看似接近实时的图表和数据。对于任意元件,用户能够查看资源使用、度量、风险、健康状况、状态、SLA配置文件等。
[0339] 例如,基于由控制板903呈现的用户界面1000,管理员可以确定一个计算节点是处于有风险或以其他方式处于不健康状况。因此,管理员可以通过例如单击视觉指示符1010或靠近视觉指示符1010的图形符号,来提供输入以选择父代资源或另一可见连接资源以有效地挖掘处于有风险或不健康状况的计算节点。经由被嵌入至符号或视觉指示符1010中的链接(例如,超链接)的激活可以实现此操作。在图10的示例中,视觉指示符1010是突出被视为处于有风险或不健康状况的网络基础设施元件的有风险指示符;视觉指示符1010包括网络元件的图形符号的虚线边界。在一些示例中,例如,视觉指示符1010可以是闪烁的虚线,以向管理员警告非常不健康的网络元件。
[0340] 在图10的示例中,窗口1011提供与网络元件符号的有风险指示符1010有关的额外细节。窗口1011能够使用户在不离开用户界面1000的情况下查看关于所选择的有风险指示符的额外信息。在一些示例中,窗口1011呈现关于示例性网络的接近实时和/或看似接近实时的信息。
[0341] 如本文描述的,被嵌入在视觉指示符1010或窗口1011中的超链接可以(当单击时)致使窗口1012和/或窗口1013打开。策略控制器203被配置为识别一种或多种连接资源并且确定任意资源是否受有风险网络元件的影响。在图10的示例中,窗口1012提供与虚拟机实例“vn1‑inst‑1”对应的额外细节,该虚拟机实例的操作状态致使已识别网络元件处于有风险或不健康状况。如图10中示出的,窗口1012表示“当连接至主机a7s33:拒绝连接上的代理时除外”。在一些示例中,被嵌入到窗口1012中的超链接可以致使窗口1013打开,以指示哪一主机对虚拟机实例“vn1‑inst‑1”的连接。
[0342] 图11示出了根据本公开的一个或多个方面的通过应用过滤器的网络的控制板的计算设备而输出的第二示例性用户界面。
[0343] 图11中的示例性用户界面输出是网络900的计算机网络拓扑结构的用户界面1100的示图。在图11的示例中,用户界面1100包括视图控制区域1101、主要显示区域1102、以及包围由框架1103指定的区域的一个或多个信息面板。主要显示区域1102内所显示并且通常由弯曲箭头指示的计算机网络的图形表示1104,与网络900内的基础设施元件对应并且可以布置在用户界面1100内,以示出网络拓扑结构、层级、父代/子代关系、或其他关系或配置。此外,主要显示区域1103中所提供的一种或多种基础设施元件表示可以包括指示符,该指示符提供关于使用、度量、健康状况、风险、条件、状态、和/或与网络900的基础设施有关的其他状态信息的信息。
[0344] 主要显示区域1102中所提供的图形描述,可以包括对表示计算机网络的网络设备或计算节点以及这些设备之间的互连的图形符号进行补充的额外信息。主要显示区域1002可以显示提供与所建模的计算机网络有关的额外信息的额外图形符号和/或文本。例如,表示计算机网络的设备的用户界面中所提供的图形符号可以与位于靠近各个图形符号的文本相关联。文本可以指示被分配给该具体设备的设备名称或网络地址。例如,如用户界面1100中所示,指示符1110‑用于表示计算机网络的主干(例如,路由器)的图形符号‑包括具有靠近并且位于图形符号的右手边的标签“a7‑mx80‑1”的文本标记“1111”。在图11的示例中,与突出网络基础设施元件的风险指示符对应(例如,靠近)的视觉指示符1110可以被视为有风险,包括虚拟和/或物理。另一示例包括表示计算机网络的主机的图形符号1020,图形符号1020包括具有靠近图形符号的右手边的标签“a7s33”的文本标记1021。另一示例包括表示计算机网络的虚拟机实例的图形符号1030,图形符号1030包括具有靠近图形符号的右手边的标签“vn1‑inst‑1”的文本标记1031。
[0345] 与图形符号相关联的文本标记可以表示被分配给由相应图形符号表示的路由器或交换机的设备名称,在其他示例中,每个主机可以包括表示与主机相关联的名称和/或端口地址的文本标记。用户界面中可以包括额外的文本框,以提供与主机相关联的额外信息,文本框显示与具有框的主机相关联的多个实例的数值。
[0346] 在示例性用户界面中,对于每个定义的资源(例如,元件)组(例如,类型),对应图形片层列出了具有受关注的操作状态的这种类型的元件数量的整数计数。诸如所定义组周围的虚线边界的指示符‑可以与或可以不与动画(例如,闪烁的虚线边界)组合‑提供关于风险或健康状况的指示(例如,特定资源使用统计是否违反一组或多组条件)。诸如片层的色彩的指示符(例如,绿色、黄色、橘色、或红色)提供关于风险或健康状况的指示(例如,是否满足针对资源(例如,元件)组所定义的对应SLA)。
[0347] 在用户界面1100的示例中,已经接收用于选择计算机网络拓扑结构建模应用的用户输入,并且作为响应,已经发起计算机网络拓扑结构应用。在一些示例中,用于将计算机网络拓扑结构表示内的图形符号放置在主要显示区域1102中的算法,被配置为基于受关注的操作状态(例如,健康/风险状态,诸如有风险/无风险或不良/良好健康状况)对诸如具体设备类型的设备的该网络的资源进行分类。
[0348] 在图11的示例中,用户界面1100包括用于生成网络900的计算机网络拓扑结构的视图的控件。一个或多个控件可以基于各种设置对该视图进行过滤,以使得仅在图形表示1104中描述匹配的设备。如本文描述的,描述计算机网络拓扑结构的信息(例如,计算机网络拓扑结构信息)可以包括计算机网络中的资源列表(例如,诸如计算节点和网络设备的设备)以及相应资源对之间的连接。控制器201可以使用资源之间的连接列表生成计算机网络的拓扑结构视图。基于一个或多个过滤参数,控制器201可以对没有配对资源满足一个或多个过滤参数的连接列表进行过滤(例如,通过移除项),从而保留至少一个匹配的资源对之间的至少一个连接。在计算机网络拓扑结构的过滤图形表示1104中,移除网络(基础设施)元件或计算节点,并且仅与一个或多个分析参数匹配的元件/节点可以在用户界面1100中保持被可视化。以这种方式,用户可以集中关注于处于不健康状况或不健康状况风险的网络元件。作为示例,控制器201可以对具有“有风险”作为过滤参数的计算机网络拓扑结构信息执行过滤功能,从而产生计算机网络拓扑结构的过滤图形表示1104,其中,每个视觉图形符号表示具有受关注的操作状态的资源(例如,有风险)。
[0349] 在一些示例中,具有风险操作状态的示例性资源可以包括与指示视觉指示符1110的数据对应的主干、与指示视觉指示符1120的数据对应的主机、以及与指示视觉指示符1130的数据对应的虚拟机实例。控制器201进行渲染,以显示这些示例性资源的视觉指示符
1110、1120、和1130、以及文本标记1111、1121、及1131。在图11的示例中,用户界面1100的文本标记1111、1121、以及1131显示上述示例性资源的相应标识符(或设备名称)。
[0350] 在“分析”面板1105中,视图设置框1106包括其选项与过滤器、分类技术、以及“无”或空白对应的菜单。视图设置框1106还示出与应用于用户界面1100中所描述的计算机网络拓扑结构的过滤器相关联的各种输入组件(例如,“健康”、“风险”、“聚合”、“项目”、以及“虚拟网络”)。在图11示出的示例中,视图设置框1106指示“过滤器‑风险”的选项,从而导致基于操作状态对设备列表进行过滤,以使得仅在图形表示1104中显示具有“风险”操作状态的设备。与图10中示出的示例相比较,补充视图设置框在左侧是空白的并且不显示用户界面输入组件,即,指示没有滤波器已经或即将应用于主要显示区域1102内所显示的计算机网络拓扑结构、和/或没有用户输入选择已经由控制器201检测的过滤器。
[0351] 例如,如图11中示出的,可以应用“风险”过滤器,以使得仅在用户界面1100内显示被视为“风险”的这些主机、实例、和/或设备(例如,不满足其风险SLA的基础设施元件)。作为另一示例,可以应用“聚合”过滤器,以使得仅在用户界面1100内显示指定聚合内所包括的这些主机和实例。作为另一示例,可以应用“连接”过滤器,以使得仅在用户界面1100内显示指定资源的连接资源的这些主机、实例、路由器、以及交换机。可以应用“项目”过滤器,以使得仅在用户界面1100内显示所选择的项目内包括的这些主机和实例。可以应用“虚拟网络”过滤器,以使得仅在用户界面1100内显示指定虚拟网络内所包括的这些主机和实例。可以同时或连续应用过滤器。在一些示例中,过滤器可以操作为函数,以使得健康(连接(x))组合的过滤器产生设备x的健康连接资源的列表。这将产生与连接(健康())函数相同的过滤。健康(连接(x))组合的过滤器可以产生设备x的健康连接资源的列表。
[0352] 在一些示例中,通过一个或多个选择的过滤器(例如,健康、风险、聚合、连接、项目、虚拟网络)应用的定义,可以至少部分基于主机和/或实例度量。在一些情况下,具体地,对于“健康”和“风险”函数,控制器201可以应用所选择的度量,以确定给定主机或实例是否具有待过滤的健康状况或待过滤的风险状况。在其他示例中,可以将单独的标准用于不取决于度量的这种确定。在后者这些示例中,控制器201可以仅使用相同的上述度量,来选择用于显示通过过滤器捕获的这些网络元件、主机、和/或实例的色彩并且使用不同的度量对健康或风险状况进行判断。
[0353] 对于本文描述的进程、装置、以及其他示例或图例,可以按照不同的顺序执行、可以添加、合并、或完全省去任意流程图或流图中包括的特定操作、动作、步骤、或者本文描述的任意技术中包括的事件(例如,并非所有描述的动作或事件对于技术的实施都是必须的)。而且,在特定示例中,例如,通过多线程处理、中断处理、或多个处理器可以同时执行操作、动作、步骤、或事件,而非顺次执行。即使未被具体识别为自动执行,也可以自动执行其他的特定操作、动作、步骤、或事件。此外,可替代地,可被描述为自动执行的特定操作、动作、步骤、或事件能没有自动执行,而是在一些示例中,可以响应于输入或另一事件而执行该操作、动作、步骤、或事件。
[0354] 在一个或多个示例中,可以在硬件、软件、固件、或其任意组合中实现所描述的功能。如果在软件中实现,则可以将功能作为一个或多个指令或代码存储在计算机可读介质上和/或通过计算机可读介质传输,并且通过基于硬件的处理单元执行。计算机可读介质可以包括:与诸如数据存储介质的有形介质对应的计算机可读存储介质,或者包括便于计算机程序从一个地方传输至另一地方(例如,根据通信协议)的任意介质的通信介质。以这种方式,计算机可读介质可以对应于(1)非易失性的有形计算机可读存储介质或(2)诸如信号或载波波的通信介质。数据存储介质可以是通过一个或多个计算机或者一个或多个处理器访问的任意可用介质,以检索用于实现本公开中所描述的技术的指令、代码、和/或数据结构。计算机程序产品可以包括计算机可读介质。
[0355] 例如但不限于,该计算机可读存储介质能够包括RAM、ROM、EEPROM、CD‑ROM、或其他光盘存储器、磁盘存储器、或其他磁性存储设备、闪存存储器、或能够用于存储以指令或数据结构形式并且计算机能访问的期望程序代码的任意其他介质。此外,将任意连接适当地定义为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户电路(DSL)、或诸如红外、无线电、以及微波的无线技术从网站、服务器、或其他远程源传输指令,则包括同轴电缆、光纤电缆、双绞线、DSL、或诸如红外、无线电、以及微波的无线技术包括在介质的定义中。然而,应当理解的是,计算机可读存储介质和数据存储介质不包括连接件、载波波、信号、或其他瞬态介质,而是替代地涉及非易失性的有形存储介质。如使用的,磁盘和光盘包括压密盘(CD)、激光盘、光盘、数字通用盘(DVD)、软盘和蓝光盘,其中,磁盘通常通过磁性再现数据,而光盘利用激光对数据进行光学再现。上述组合还应包括在计算机可读介质的范围内。
[0356] 可以由一个或多个处理器执行指令,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、场可编程逻辑阵列(FPGA)、或其他等同的集成或离散逻辑电路。因此,本文使用的术语“处理器”或“处理电路”均可以指适合于实现所描述技术的任意上述结构或任意其他结构,此外,在一些示例中,可以在专用硬件和/或软件模块内提供所描述的功能。此外,可以在一个或多个电路或逻辑元件中完全实现该技术。
[0357] 可以在广泛的各种设备或装置中实现本公开的技术,包括无线手机、移动或非移动计算设备、可佩戴或非佩戴计算设备、集成电路(IC)、或IC集(例如,芯片集)。本公开中描述了各种组件、模块、或单元,以强化被配置为执行所公开技术的设备的功能方面,但不一定需要通过不同的硬件单元实现。确切地,如上所述,可以在硬件单元中组合或通过结合适合的软件和/或固件整合的硬件单元的集合(包括上述一个或多个处理器)提供各种单元。