CN114185637A - 基于意图的遥测收集服务 - Google Patents
基于意图的遥测收集服务 Download PDFInfo
- Publication number
- CN114185637A CN114185637A CN202011267402.XA CN202011267402A CN114185637A CN 114185637 A CN114185637 A CN 114185637A CN 202011267402 A CN202011267402 A CN 202011267402A CN 114185637 A CN114185637 A CN 114185637A
- Authority
- CN
- China
- Prior art keywords
- telemetry
- data
- devices
- service
- intent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0806—Configuration setting for initial configuration or provisioning, e.g. plug-and-play
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/085—Retrieval of network configuration; Tracking network configuration history
- H04L41/0853—Retrieval of network configuration; Tracking network configuration history by actively collecting configuration information or by backing up configuration information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0895—Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/40—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5041—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/20—Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q9/00—Arrangements in telecontrol or telemetry systems for selectively calling a substation from a main station, in which substation desired apparatus is selected for applying a control signal thereto or for obtaining measured values therefrom
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/503—Resource availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/505—Clust
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/02—Standardisation; Integration
- H04L41/0213—Standardised network management protocols, e.g. simple network management protocol [SNMP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0677—Localisation of faults
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5041—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
- H04L41/5054—Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0817—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Environmental & Geological Engineering (AREA)
- Debugging And Monitoring (AREA)
- Quality & Reliability (AREA)
Abstract
本申请的各实施例涉及基于意图的遥测收集服务。遥测服务可以接收被表示为“意图”的遥测收集需求,该“意图”定义遥测将如何被收集。遥测意图编译器可以接收遥测意图并且将高级意图转换为提供期望遥测数据的一般描述的抽象遥测配置参数。遥测服务可以从遥测意图确定要从其收集遥测数据的设备集合。对于每个设备,遥测服务可以确定该设备关于遥测数据收集的能力。该能力可以包括由设备支持的遥测协议。遥测服务可以基于抽象遥测配置参数和由设备支持的遥测协议来创建协议特定的设备配置。支持特定遥测协议的网络系统中的设备可以被分配给支持遥测协议的遥测收集器的实例。
Description
技术领域
本公开涉及计算机网络,并且更具体地涉及在计算机网络中收集遥测数据。
背景技术
虚拟化数据中心正在成为现代信息技术(IT)基础设施的核心基础。特别地,现代数据中心已经广泛利用了虚拟化环境,其中诸如虚拟机或容器等虚拟主机部署在物理计算设备的基础计算平台上并且在其上执行。
大型数据中心内的虚拟化可以提供多个优势,包括有效利用计算资源和简化网络配置。因此,企业IT员工除了具有虚拟化所带来的效率和更高的投资回报率(ROI)之外,还因为其管理优势而通常更喜欢数据中心中的虚拟化计算集群。
在大型数据中心中支持虚拟化计算基础设施涉及众多设备,包括网络设备和主机计算设备,这些设备可以在数据中心网络中耦合在一起。另外,可以将数据中心中的设备分配给不同租户。来自数据中心中的设备的遥测数据可以用于确定数据中心是否正常且高效地运行。考虑到数据中心中可能存在大量设备、不同类型的设备以及不同的租户,将设备配置为提供遥测数据可能很困难。
发明内容
本公开描述了用于提供可缩放的基于微服务的遥测服务的技术,该技术可以从网络和计算设备收集时间序列遥测数据,并且使其通过订阅服务可用于数据的不同消费者。遥测数据的消费者可以是其他共享服务,诸如警报服务、持久性存储服务或最终用户应用。
管理员或应用可以将遥测收集需求表达为“意图”,该“意图”定义将如何以高级“自然语言”收集遥测。遥测意图编译器可以接收遥测意图并且将高级意图转换为提供期望遥测数据的一般描述的抽象遥测配置参数。遥测服务可以从遥测意图确定要从其收集遥测数据的设备集合。对于每个设备,遥测服务可以确定该设备关于遥测数据收集的能力。该能力可以包括由设备支持的遥测协议。遥测服务可以基于抽象遥测配置参数和由设备支持的遥测协议创建协议特定的设备配置。支持特定遥测协议的网络系统中的设备可以按照分布式方式被分配给支持遥测协议的遥测收集器的实例。
遥测服务可以被实现为微服务的集合。可以响应于遥测收集服务不断增长的需求来创建微服务的新实例。
本文中描述的技术可以提供一个或多个技术优点。例如,这些技术可以促进遥测服务组件的使用,该遥测服务组件可以被实现为微服务并且可以容错和可缩放。结果,遥测服务可以轻松缩放,以满足网络系统使用的设备数目的变化。除了可缩放性,警报服务还易于网络管理员和应用设计人员使用,因为应用可以提供以高级自然语言表示的意图,并且遥测服务可以将意图转换为可以推送给基于遥测意图而确定的设备的遥测配置。
在一个示例中,一种用于在虚拟化计算基础设施中提供遥测服务的方法包括:由一个或多个处理器接收表示遥测数据收集意图的数据;由所述一个或多个处理器将表示所述遥测数据收集意图的所述数据转换为一个或多个抽象遥测配置参数;由所述一个或多个处理器从表示所述遥测收集意图的所述数据确定所述虚拟化计算基础设施的设备集合;由所述一个或多个处理器获取针对所述设备集合的设备能力信息,所述设备能力信息针对所述设备集合中的每个设备包括所支持的遥测协议;以及对于所述设备集合中的每个设备,基于所述抽象遥测配置参数来配置所述设备,并且基于所述设备的所述所支持的遥测协议来将所述设备分配给多个遥测收集器的实例。
在另一示例中,一种遥测服务系统包括:设备管理服务,被配置为发现虚拟化计算基础设施中的多个设备,并且确定针对所述多个设备中的每个设备的设备能力信息;遥测控制器,被配置为:接收表示遥测数据收集意图的数据,将表示所述遥测数据收集意图的所述数据转换为一个或多个抽象遥测配置参数,从表示所述遥测收集意图的所述数据确定多个设备的设备集合,从所述设备管理服务获取针对所述设备集合中的每个设备的所述设备能力信息,所述设备能力信息针对所述设备集合中的每个设备包括所支持的遥测协议,以及对于所述设备集合中的每个设备,基于所述抽象遥测配置参数来配置所述设备,并且基于所述设备的所述所支持的遥测协议来将所述设备分配给多个遥测收集器的实例。
在另一示例中,一种计算机可读介质包括指令,该指令在被执行时引起虚拟化计算基础设施的处理电路系统执行以下操作:接收表示遥测数据收集意图的数据;将表示所述遥测数据收集意图的所述数据转换为一个或多个抽象遥测配置参数;从表示所述遥测收集意图的所述数据确定所述虚拟化计算基础设施的设备集合;获取针对所述设备集合的设备能力信息,所述设备能力信息针对所述设备集合中的每个设备包括所支持的遥测协议;以及对于所述设备集合中的每个设备,基于所述抽象遥测配置参数来配置所述设备,并且基于所述设备的所述所支持的遥测协议来将所述设备分配给多个遥测收集器的实例。
在附图和以下描述中阐明了本公开的一种或多种技术的细节。从说明书和附图以及从权利要求书,本发明的其他特征、目的和优点将变得很清楚。
附图说明
图1是示出根据本公开的一个或多个方面的包括基于意图的遥测收集服务的示例网络的概念图;
图2是示出根据本公开的一个或多个方面的包括网络中和/或数据中心内的遥测收集服务的示例系统的框图;
图3A是示出根据本公开的一个或多个方面的基于意图的遥测收集服务中的工作流程的框图;
图3B是示出根据本公开的一个或多个方面的遥测收集服务中的另一工作流程的框图;
图4是示出根据本公开的一个或多个方面的基于意图的遥测收集服务的细节的框图;
图5是示出根据本公开的一个或多个方面的遥测数据归一化的示例的概念图;
图6是示出根据本公开的一个或多个方面的遥测收集状态机的概念图;
图7是示出根据本公开的一个或多个方面的由示例遥测收集服务执行的操作的流程图;
图8是示出根据本公开的一个或多个方面的用于遥测收集服务的健康监测系统的框图;
图9是示出根据本公开的一个或多个方面的在健康监测系统中用于故障定位的错误代码的聚类的概念图;
图10是示出根据本公开的一个或多个方面的用于对于遥测收集服务使用调试探针生成来定位错误的操作的流程图;
图11是示出根据本公开的一个或多个方面的用于对于警报服务使用调试探针生成来定位错误的操作的流程图;
图12示出了根据本公开的一个或多个方面的用于在应用与遥测控制器之间交换消息的API;
图13示出了根据本公开的一个或多个方面的用于交换遥测订阅消息的API;
图14A和14B示出了根据本公开的一个或多个方面的用于缩放遥测收集服务的健康度量和规则;以及
图15示出了根据本公开的一个或多个方面的用于警报服务的健康度量。
具体实施方式
使用虚拟化计算环境的数据中心提供了效率、成本和组织优势,在虚拟化计算环境中,虚拟主机、虚拟机或容器部署在物理计算设备的底层计算平台上并且在其上执行。典型的数据中心采用很多设备,包括网络设备和主机设备,这些设备用于支持虚拟化环境并且实现数据中心内部和数据中心外部实体之间的通信。为数据中心中众多设备而收集的遥测数据可能对有效管理数据中心结构有用。例如,警报服务或应用可以使用来自网络设备的遥测数据来促进异常检测并且确定网络热点。
在某些情况下,将设备配置为提供遥测数据可能是一个挑战,特别是考虑到网络中的设备和主机设备的数目以及网络中不同设备的种类以及设备可能支持的不同遥测收集协议的数目。网络管理员可能难以掌握将设备配置为收集和提供遥测数据所需要的所有不同命令或应用程序编程接口(API)。此外,鉴于遥测服务中可能存在的遥测服务组件的实例的数目,很难确定遥测服务内遥测数据收集的问题。
本文中描述了使得网络管理员或应用能够指示管理员或应用关于获取网络中的设备的遥测数据的意图的技术。管理员的意图可以被转换为一个或多个较低级别的配置参数和命令,这些参数和命令符合可以从设备获取的不同协议和度量。此外,本文中描述的技术可以促进遥测服务,该遥测服务可以容易地缩放以满足遥测数据收集需求。随着网络的发展和/或对遥测数据的更多请求,遥测服务可以添加组件实例以满足需求。
图1是示出根据本公开的一个或多个方面的包括网络(例如,数据中心内的网络)中的基于意图的遥测服务140的示例网络的概念图。图1示出了网络系统100和数据中心101的一种示例实现,数据中心 101托管一个或多个计算网络、计算域或项目、和/或基于云的计算网络。网络系统100可以包括虚拟化计算基础设施,诸如一个或多个基于云的计算集群,该集群可以共存于共同的整体计算环境中,诸如在单个数据中心中,或者分布在环境之间,诸如跨越不同数据中心。基于云的计算集群可以是例如不同的云环境,诸如OpenStack云环境、 Kubernetes云环境、裸机服务器集合、Contrail或Tungsten集群、或其他计算集群、域、网络等的各种组合。在其他情况下,网络系统100 和数据中心101的其他实现可能是合适的。这样的实现可以包括图1 的示例中包括的组件的子集,和/或可以包括图1中未示出的附加组件。
在图1的示例中,数据中心101为通过服务提供方网络106耦合到数据中心101的客户104提供用于应用和服务的操作环境。图1可以被示出为分布在图1中的多个设备之间,在其他示例中,归因于图 1中的一个或多个设备的特征和技术可以由一个或多个这样的设备的本地组件在内部执行。类似地,一个或多个这样的设备可以包括某些组件,并且执行在本文中描述为归因于一个或多个其他设备的各种技术。此外,某些操作、技术、特征和/或功能可以结合图1进行描述,或者由特定组件、设备和/或模块执行。在其他示例中,这样的操作、技术、特征和/或功能可以由其他组件、设备或模块执行。因此,归因于一个或多个组件、设备或模块的一些操作、技术、特征和/或功能也可以归因于其他组件、设备和/或模块,即使本文中没有以这种方式具体描述。
数据中心101托管基础设施设备,诸如网络和存储系统、冗余电源和环境控件。服务提供方网络106可以耦合到由其他提供方管理的一个或多个网络,并且因此可以形成例如互联网等大规模公共网络基础设施的一部分。
在一些示例中,数据中心101可以表示很多地理分布的网络数据中心之一。如图1的示例中所示,数据中心101是为客户104提供网络服务的设施。客户104可以是集体实体,诸如企业和政府或个人。例如,网络数据中心可以为若干企业和最终用户托管网络服务。其他示例服务可以包括数据存储、虚拟专用网、流量工程、文件服务、数据挖掘、科学或超级计算等。
在图1的示例中,数据中心101包括一组存储系统、应用服务器、计算节点或其他设备,包括设备110A至设备110N(被统称为“设备 110”,表示任何数目的设备)。设备110可以经由由一层或多层物理网络交换机和路由器提供的高速交换结构121互连。在一些示例中,设备110可以被包括在结构121内,但是为了便于说明而被分开示出。
设备110可以表示很多不同类型的网络设备(核心交换机、脊网络设备、分支网络设备、边缘网络设备或其他网络设备)中的任何一种个,但是在某些示例中,一个或多个设备110可以表示数据中心的物理计算节点和/或存储节点。例如,设备110中的一个或多个可以提供用于一个或多个客户特定应用或服务的执行的操作环境。备选地或附加地,一个或多个设备110可以为一个或多个虚拟机或其他虚拟化实例(诸如容器)提供操作环境。在一些示例中,设备110中的一个或多个可以备选地被称为主机计算设备或更简单地被称为主机。设备 110从而可以执行一个或多个虚拟化实例,诸如虚拟机、容器、或用于运行一个或多个应用或服务(诸如虚拟网络功能(VNF))的其他虚拟执行环境。
通常,每个设备110可以是可以在网络上运行并且可以生成通过遥测或其他方式可访问的数据(例如,连接性数据、流数据、sFlow 数据、资源利用数据)的任何类型的设备,其可以包括任何类型的计算设备、传感器、相机、节点、监测设备或其他设备。此外,一些或全部设备110可以表示另一设备的组件,其中这种组件可以生成通过遥测或其他方式可收集的数据。例如,一些或全部设备110可以表示物理或虚拟设备,诸如交换机、路由器、集线器、网关、安全设备(诸如防火墙、入侵检测和/或入侵防御设备)。
尽管未具体示出,但是交换结构121可以包括耦合到机箱交换机的分布层的架顶式(TOR)交换机,并且数据中心101可以包括一个或多个非边缘交换机、路由器、集线器、网关、安全设备(诸如防火墙、入侵检测和/或入侵防御设备)、服务器、计算机终端、笔记本电脑、打印机、数据库、无线移动设备(诸如蜂窝电话或个人数字助理)、无线接入点、网桥、电缆调制解调器、应用加速器或其他设备。交换结构121可以执行第3层路由,以通过服务提供方网络106在数据中心101与客户104之间路由网络业务。网关108用来在交换结构121 与服务提供方网络106之间发送和接收数据包。
在一些示例中,编排引擎130管理数据中心101的功能,诸如计算、存储、联网和应用资源。编排引擎130可以跨一组VM或到租户网络的边界实现安全策略。编排引擎130可以在租户的虚拟网络中部署网络服务(例如,负载均衡器)。
根据本公开的一个或多个示例,软件定义网络(“SDN”)控制器132提供逻辑上的并且在某些情况下是物理上的集中式控制器,以促进数据中心101内的一个或多个虚拟网络的操作。在一些示例中, SDN控制器132响应于经由北向应用程序编程接口(API)131从编排引擎130接收的配置输入而操作,北向API 131又可以响应于从与用户接口设备129交互和/或操作用户接口设备129的管理员128接收的配置输入而操作。SDN控制器132可以为数据中心101内或跨数据中心的租户创建虚拟网络。SDN控制器132可以将虚拟机(VM)附接到租户的虚拟网络。SDN控制器132可以将租户的虚拟网络连接到外部网络,例如互联网或VPN。
在一些示例中,SDN控制器132管理诸如负载均衡、安全性等网络和联网服务,并且可以经由南向API 133将来自用作主机设备的设备110的资源分配给各种应用。也就是说,南向API 133表示SDN 控制器132用来使网络的实际状态等于由编排引擎130指定的期望状态的一组通信协议。例如,SDN控制器132可以通过配置物理交换机来实现编排引擎130的高级请求,例如,架顶式(TOR)开关、机箱开关和交换结构121;物理路由器;物理服务节点,诸如防火墙和负载均衡器;以及VM中的诸如虚拟防火墙等虚拟服务。SDN控制器 132在状态数据库内维持路由、网络和配置信息。不同的云计算集群可以具有SDN控制器132的单独实例。
遥测服务140可以将设备110(和/或其他设备)配置为生成并且提供与设备110的操作有关的遥测数据。这样的数据可以包括进程使用数据、存储器使用数据、网络使用数据、错误计数等。遥测服务140 可以被配置为使用由设备110支持的协议从设备110收集遥测数据。应用、进程、线程等可以订阅所收集的遥测数据,以便被通知遥测数据可用于网络上的一个或多个设备。
用户接口设备129可以被实现为用于呈现输出和/或接受用户输入的任何合适的设备。例如,用户接口设备129可以包括显示器。用户接口设备129可以是计算系统,诸如由用户和/或管理员128操作的移动或非移动计算设备。根据本公开的一个或多个方面,用户接口设备129可以例如表示工作站、膝上型计算机或笔记本计算机、台式计算机、平板计算机、或可以由用户操作和/或呈现用户接口的任何其他计算设备。在一些示例中,用户接口设备129可以与控制器132物理上分离和/或在与控制器132不同的位置。在这样的示例中,用户接口设备129可以通过网络或其他通信方式与控制器132通信。在其他示例中,用户接口设备129可以是控制器132的本地外围设备,或者可以集成到控制器201中。
在某些方面,用户接口设备129可以与遥测服务140或其组件通信,以将遥测服务140配置为将设备配置为使用高级意图声明提供遥测数据并且经由遥测服务140从设备110和数据中心101的其他组件接收遥测数据。在一些方面,遥测服务140可以由使用经由遥测服务 140获取的遥测数据的应用或服务来配置。例如,警报服务(未示出) 或警报服务的组件可以将遥测服务140配置为从设备110收集并且提供遥测数据。
警报服务142可以是由遥测服务140收集的遥测数据的消费者。警报服务142可以实现服务和规则,这些服务和规则可以用于订阅遥测数据并且根据规则来分析遥测数据,这些规则确定了是否应当基于遥测数据生成警报。关于示例警报服务的更多细节可以在题为“INTENT-BASED DISTRIBUTED ALARM SERVICE”的共同提交的同时待决的美国专利申请中找到,其通过引用合并于此。
健康监测器144是可选组件,其可以利用与系统100的服务和组件相关联的度量并且确定组件的健康。在图1所示的示例中,健康监测器144可以获取关于遥测服务140和/或警报服务142的操作的度量,并且使用该度量来确定是否应当响应于系统增长或遥测服务140 和/或警报服务142中的组件的故障而创建服务的新实例。
根据本公开的技术,遥测服务140提供可共享的遥测数据收集服务,以根据设备支持的协议从网络系统中的设备收集遥测数据。所收集的遥测数据可以用于执行异常检测和警报生成,以进行云基础设施监测,该监测可以在云规模上由多个应用和租户使用。
管理员128可以利用UI设备129来输入数据,该数据将遥测收集需求表达为以高级“自然语言”定义的“意图”。遥测服务140可以接收表示意图的数据,并且将高级意图转换为抽象遥测配置参数,这些参数可以由遥测服务140的遥测控制器以编程方式处理。遥测控制器可以基于抽象遥测配置参数和设备支持的遥测协议为设备创建协议特定的遥测配置。
图2是示出根据本公开的一个或多个方面的包括网络中和/或数据中心内的遥测服务的示例系统的框图。图2的网络系统200可以被描述为图1的网络系统100的示例或替代实现。图2的一个或多个方面在本文中可以在图1的上下文中描述。
尽管诸如图1和2所示的数据中心可以由任何实体来操作,但是某些数据中心可以由服务提供方来操作,其中这种服务提供方的商业模型可以涉及为客户或客户端提供计算能力。因此,数据中心通常包含大量计算节点或主机设备。为了有效地运行,这些主机必须彼此连接以及与外部世界连接,并且该能力是通过物理设备来提供的,该物理设备可以按照叶脊拓扑互连。这些物理设备(例如,网络设备和主机设备)的集合形成底层网络。
这种数据中心中的每个主机设备可以在其上运行有若干虚拟机,这些虚拟机可以被称为工作负载。数据中心的客户端通常可以访问这些工作负载,并且可以使用这用的工作负载来安装应用并且执行其他操作。在不同主机设备上运行但由一个特定客户端可访问的工作负载被组织成一个虚拟网络。每个客户端通常具有至少一个虚拟网络。这些虚拟网络也被称为叠加网络。在某些情况下,数据中心的客户端可能会遇到网络问题,诸如延迟增加、数据包丢失、网络吞吐量低或工作负载处理缓慢。在大型多租户数据中心中部署工作负载可能会使解决这样的问题变得很复杂。诸如由遥测服务140提供的遥测数据可以用于促进数据中心中的故障排除。
在图2的示例中,网络205连接遥测服务140、主机设备210A 和主机设备210B-210N。遥测服务140可以对应于图1所示的遥测服务140的示例或替代实现。主机设备210A、210B至210N可以被统称为“主机设备210”,表示任何数目的主机设备210。
每个主机设备210可以是图1的设备110的示例,但是在图2的示例中,与网络设备相反,每个主机设备210被实现为服务器或主机设备,该服务器或主机设备用作虚拟数据中心的物理或虚拟化计算节点或存储节点。如本文中进一步描述的,一个或多个主机设备210(例如,图2的主机设备210A)可以执行多个虚拟计算实例,诸如虚拟机228,并且此外,一个或多个主机设备210(例如,主机设备210B 至210N中的一个或多个)可以在非虚拟化的单租户和/或裸机服务器上执行应用或服务模块。因此,如在图1中,图2的示例示出了可以包括虚拟服务器设备和裸机服务器设备的混合的网络系统。
还连接到网络205的是可以由管理员128操作的用户接口设备 129,如图1所示。在一些示例中,用户接口设备129可以在与用户接口设备129相关联的显示设备上呈现一个或多个用户接口。
网络205可以对应于图1的交换结构121和/或服务提供方网络 106中的任何一个,或者备选地,可以对应于交换结构121、服务提供方网络106和/或另一网络的组合。尽管图2中未示出,但是网络205还可以包括图1的一些组件,包括网关108、SDN控制器132和编排引擎130。
在网络205中示出的是脊设备202A和202B(被统称为“脊设备 202”,表示任何数目的脊设备202)、以及叶设备203A、203B和叶设备203C(被统称为“叶设备203”并且还表示任何数目的叶设备 203)。尽管网络205被示出为具有脊设备202和叶设备203,但是其他类型的设备可以被包括在网络205中,包括核心交换机、边缘设备、架顶式设备和其他设备。
通常,网络205可以是互联网,或者可以包括或表示任何公共或专用通信网络或其他网络。例如,网络205可以是蜂窝、 ZigBee、Bluetooth、近场通信(NFC)、卫星、企业、服务提供方、和/或能够在计算系统、服务器和计算设备之间进行数据传输的其他类型的网络。客户端设备、服务器设备或其他设备中的一个或多个可以使用任何合适的通信技术在网络205上发射和接收数据、命令、控制信号和/或其他信息。网络205可以包括一个或多个网络集线器、网络交换机、网络路由器、卫星天线或任何其他网络设备。这样的设备或组件可以可操作地相互耦合,从而提供计算机、设备或其他组件之间 (例如,一个或多个客户端设备或系统与一个或多个服务器设备或系统之间)的信息交换。图2所示的每个设备或系统可以使用一个或多个网络链路可操作地耦合到网络205。将这样的设备或系统耦合到网络205的链路可以是以太网、异步传输模式(ATM)或其他类型的网络连接,并且这样的连接可以是无线和/或有线连接。图2所示的网络 205上的设备或系统中的一个或多个等可以相对于一个或多个其他示出的设备或系统处于远程位置。
每个主机设备210表示为虚拟主机、虚拟机、容器和/或其他真实或虚拟化计算资源提供执行环境的物理计算设备或计算节点或存储节点。在一些示例中,每个主机设备210可以是向客户端设备和其他设备或系统提供服务的云计算系统、服务器场、和/或服务器集群(或其一部分)的组件。
主机设备210的某些方面在本文中关于主机设备210A来描述。其他主机设备210(例如,主机设备210B至210N)可以类似地描述,并且还可以包括相同标号的组件,其可以表示相同、相似或对应的组件、设备、模块、功能和/或其他特征。因此,本文中关于主机设备210A的描述可以相应地应用于一个或多个其他主机设备210(例如,主机设备210B至主机设备210N)。
在图2的示例中,主机设备210A包括底层物理计算硬件,包括一个或多个处理器213、一个或多个通信单元215、一个或多个输入设备216、一个或多个输出设备217和一个或多个存储设备220。在如图所示的示例中,存储设备220可以包括内核模块222和虚拟路由器模块224。存储设备220还可以包括虚拟机228A至228N(被统称为“虚拟机228”,并且表示任何数目的虚拟机228),当存在时,可以在管理程序(未示出)之上执行,或者可以由管理程序控制。主机设备210A的一个或多个设备、模块、存储区域或其他组件可以互连以实现组件间通信(物理上、通信上和/或操作上)。在一些示例中,这种连接可以通过通信通道(例如,通信通道212A)、系统总线、网络连接、进程间通信数据结构、或用于传送数据的任何其他方法来提供。
处理器213A可以实现与主机设备210A相关联的功能和/或执行与主机设备210A相关联的指令。通信单元215A可以代表主机设备 210A与其他设备或系统通信。一个或多个输入设备216和输出设备 217可以表示与主机设备210A相关联的输入和/或输出设备。存储设备220可以存储用于在主机设备210A的操作期间进行处理的信息。每个这样的组件可以按照与本文中结合网络分析系统140等而描述的方式相似的方式而被实现。
虚拟路由器模块224可以为数据中心101(图1)中的对应虚拟网络执行多个路由实例,并且可以将数据包路由到在由主机设备110 提供的操作环境中执行的适当虚拟机。虚拟路由器模块224还可以负责收集叠加流数据,诸如在使用Contrail SDN的基础设施中使用时的 Contrail Flow数据。
虚拟机228A至虚拟机228N(被统称为“虚拟机228”,表示任何数目的虚拟机228)可以表示虚拟机228的示例实例。主机设备210A 可以将由存储设备220提供的虚拟和/或物理地址空间划分为用于运行用户进程的用户空间。主机设备210A还可以将由存储设备220提供的虚拟和/或物理地址空间划分为内核空间,该内核空间受到保护并且用户进程可能无法访问。
每个虚拟机228可以表示租户虚拟机,该租户虚拟机运行客户应用,诸如网络服务器、数据库服务器、企业应用、或托管用于创建服务链的虚拟化服务。在一些情况下,主机设备210或另一计算设备中的任何一个或多个直接托管客户应用(即,不作为虚拟机)(例如,主机设备210B至210N中的一个或多个,诸如主机设备210B和主机设备210N)。尽管根据虚拟机或虚拟主机描述了本公开的一个或多个方面,但是本文中对于这样的虚拟机或虚拟主机而描述的根据本公开的一个或多个方面的技术也可以应用于在主机设备210上执行的容器、应用、进程、或其他执行单元(虚拟化或非虚拟化的)。
在图2的示例中,遥测服务140可以包括一个或多个处理器243、一个或多个通信单元245、一个或多个输入设备246、一个或多个输出设备247和一个或多个存储设备250。存储设备250可以包括意图服务218、遥测控制器221、遥测订阅服务208和遥测收集器214。
遥测服务140的设备、模块、存储区域或其他组件中的一个或多个可以互连以实现组件间通信(物理上、通信上和/或操作上)。在一些示例中,这种连接可以通过通信通道(例如,通信通道242)、系统总线、网络连接、进程间通信数据结构、或用于传送数据的任何其他方法来提供。
警报服务140的一个或多个处理器243可以实现与网络分析系统 240相关联或与本文中示出和/或本文中描述的一个或多个模块相关联的功能和/或执行与警报服务140相关联或与本文中示出和/或本文中描述的一个或多个模块相关联的指令。一个或多个处理器243可以是执行根据本公开的一个或多个方面的操作的处理电路系统,可以是这样的处理电路系统一部分,和/或可以包括这样的处理电路系统。处理器243的示例包括微处理器、应用处理器、显示控制器、辅助处理器、一个或多个传感器集线器、以及被配置为用作处理器、处理单元或处理设备的任何其他硬件。
警报服务140的一个或多个通信单元245可以通过发射和/或接收数据来与警报服务140外部的设备通信,并且在某些方面可以用作输入设备和输出设备。在一些示例中,通信单元245可以通过网络与其他设备通信。在其他示例中,通信单元245可以在诸如蜂窝无线电网络等无线电网络上发送和/或接收无线电信号。通信单元245的示例包括网络接口卡(例如,诸如以太网卡)、光收发器、射频收发器、GPS 接收器、或可以发送和/或接收信息的任何其他类型的设备。通信单元 245的其他示例可以包括能够通过GPS、NFC、ZigBee 和蜂窝网络(例如,3G、4G、5G)、以及在移动设备以及通用串行总线(USB)控制器等中发现的无线电设备进行通信的设备。这样的通信可以遵循、实现或遵守适当的协议,包括传输控制协议/ 互联网协议(TCP/IP)、以太网、Bluetooth、NFC或其他技术或协议。
一个或多个输入设备246可以表示本文中没有另外描述的警报服务140的任何输入设备。一个或多个输入设备246可以从能够检测来自人或机器的输入的任何类型的设备生成、接收和/或处理输入。例如,一个或多个输入设备246可以生成、接收和/或处理以电、物理、音频、图像和/或视觉输入形式的输入(例如,外围设备、键盘、麦克风、相机)。
一个或多个输出设备247可以表示本文中没有另外描述的警报服务140的任何输出设备。一个或多个输出设备247可以从能够检测来自人或机器的输入的任何类型的设备生成、接收和/或处理输入。例如,一个或多个输出设备247可以生成、接收和/或处理以电和/或物理输出形式的输出(例如,外围设备、致动器)。
警报服务140中的一个或多个存储设备250可以存储用于在警报服务140的操作期间进行处理的信息。存储设备250可以存储与根据本公开的一个或多个方面而描述的一个或多个模块相关联的程序指令和/或数据。一个或多个处理器243和一个或多个存储设备250可以为这样的模块提供操作环境或平台,其可以被实现为软件,但是在一些示例中可以包括硬件、固件和软件的任何组合。一个或多个处理器 243可以执行指令,并且一个或多个存储设备250可以存储一个或多个模块的指令和/或数据。处理器243和存储设备250的组合可以取回、存储和/或执行一个或多个应用、模块或软件的指令和/或数据。处理器243和/或存储设备250还可以可操作地耦合到一个或多个其他软件和/或硬件组件,包括但不限于警报服务140的一个或多个组件和/或被示出为连接到警报服务140的一个或多个设备或系统。
在一些示例中,一个或多个存储设备250通过临时存储器而被实现,这可能表示,一个或多个存储设备的主要目的不是长期存储。警报服务140的存储设备250可以被配置用于作为易失性存储器进行信息的短期存储,并且因此如果被停用则不保留所存储的内容。易失性存储器的示例包括随机存取存储器(RAM)、动态随机存取存储器 (DRAM)、静态随机存取存储器(SRAM)、以及本领域已知的其他形式的易失性存储器。在一些示例中,存储设备250还包括一个或多个计算机可读存储介质。存储设备250可以被配置为与易失性存储器相比存储更大量的信息。存储设备250还可以被配置用于作为非易失性存储空间进行信息的长期存储,并且在激活/关闭周期之后保留信息。非易失性存储器的示例包括磁性硬盘、光盘、闪存、或电可编程存储器(EPROM)或电可擦除可编程(EEPROM)存储器的形式。
意图服务218接收遥测意图230,该遥测意图230以较高级别表示对于生成和收集遥测数据的遥测需求。遥测意图230可以是自然语言。作为示例,遥测意图230可以是“以1分钟粒度从所有设备收集 cpu资源使用度量。”作为另一示例,遥测意图230可以是“从设备routerA、routerB和routerC收集存储器资源使用”。意图服务218可以将遥测意图230转换为实现遥测意图230的一个或多个较低级别遥测命令和协议。在某些情况下,设备可以支持多个遥测协议。在这样的情况下,意图服务可以使用可以根据诸如分配给协议的优先级、关于协议的设备能力和与协议相关联的开销等标准而选择的协议来转换遥测意图230。此外,在一些方面,意图服务218可以协调从同一设备请求遥测数据的多个应用的意图。意图服务218可以将较低级别遥测命令和所选择的协议的指示发送给遥测控制器221,以更新受影响设备的遥测收集。
遥测控制器221可以接收较低级别遥测命令和所选择的协议的指示。在一些方面,遥测控制器221维持每个设备的最新遥测需求。遥测控制器221可以为由从遥测意图230转换的遥测命令和协议指定的设备(诸如叶设备203和脊设备202)供应遥测收集器214。
遥测订阅服务208接收订阅由设备产生的遥测数据的请求。在一些方面,响应于接收到订阅,如果尚未为设备供应遥测收集器,则遥测控制器221可以供应遥测收集器214。
遥测收集器214从设备收集遥测数据。遥测收集器214可以将所收集的数据存储在高速缓存或数据库(未示出)中。遥测服务140可以将所收集的数据提供给已经订阅数据的应用(例如,应用226)。
图3A和3B示出了通过遥测服务140的组件的工作流,并且图4 提供了关于遥测服务140的其他细节。
图3A是示出根据本公开的一个或多个方面的基于意图的遥测服务140中的工作流的框图。图3A所示的操作可以提供从应用遥测意图到配置设备以提供由遥测意图指定的遥测数据的端到端工作流。
工作流中的操作在图3A中由阴影圆圈中的数字表示。图3A所示的操作可以由遥测服务140的不同组件执行。在某些方面,这些组件可以是微服务。遥测服务140可以跟踪工作流中的操作。在一些方面,遥测服务140可以利用状态机来跟踪工作流中的操作进度。下面参考图6描述这种状态机的示例。
设备管理服务(DMS)310发现网络中的设备和设备320的遥测能力(1A-3A)。DMS310将所发现的设备320和设备320的遥测能力发送到库存服务316(1B-3A)。在一些方面,DMS 310可以向库存服务316通知设备所支持的遥测协议,例如简单网络管理协议 (SNMP)、SNMP陷阱、Junos遥测接口(JTI)、Google远程过程调用(gRPC)、网络配置协议(NETCONF)、系统日志等。
库存服务316可以向应用302、304提供关于一个或多个新设备的发现的信息(2-3A)。
被配置为监测遥测数据的应用302可以指示其意图并且订阅数据。例如,元素管理服务应用可以被配置为监测网络中设备的遥测数据。应用302可以将遥测意图发送到遥测意图服务218(3A-3A)。不同应用可以生成监测相同或不同设备的不同意图。遥测意图服务218的遥测意图编译器308可以编译遥测意图并且将遥测意图转换为遥测命令和/或遥测配置数据。在一些方面,遥测意图服务218可以协调由多个应用302对于同一设备而接收的意图。例如,多个应用可以提供不同的遥测收集意图。例如,第一应用可以请求每五分钟收集一次遥测,而第二应用可以请求每分钟收集一次遥测。遥测服务218可以通过以多个请求中的最高分辨率(在该示例中为每分钟)请求遥测来协调请求。遥测意图服务218可以将转换后的遥测意图发送到遥测控制器221(3B-3A)。
遥测控制器221可以使用转换后的遥测意图来更新设备的遥测需求。如上所述,遥测控制器221可以跨已经经由遥测意图服务218提供遥测意图的应用302维持最新的遥测需求。在某些方面,当遥测控制器221初始化操作时,它可以从遥测意图服务218请求和/或接收先前转换的意图。关于先前转换的意图,遥测意图服务218可以高速缓存先前的请求,或者在遥测控制器221请求重放遥测意图时生成已编译意图。遥测控制器221可以使用先前转换的意图来确定要监测的设备以及要监测的传感器,以便使其状态与要监测的设备一致,从而相对于应用302而言是遥测数据的最新意图。
应用302可以从遥测订阅服务208订阅遥测数据(3C-3A)。一些应用可能对订阅现有遥测数据感兴趣,而没有明确生成任何特定的设备监测意图。作为示例,持久性存储应用304可以是从遥测服务140 获取现有遥测数据以维持遥测数据历史但不主动监测设备遥测数据的应用。这样的应用可以订阅遥测数据(3C-3A),而无需向遥测意图服务318提供(3A-3A)编译和传输到遥测控制器221的意图 (3B-3A)。
遥测控制器221可以基于从遥测意图服务218接收的遥测要求来提供遥测收集器214以开始收集遥测数据(4-3A)。
遥测控制器221可以基于针对设备的(多个)期望遥测需求来确定高级遥测配置意图,并且可以将遥测配置意图发送给遥测意图服务 218(5A-3A)。遥测意图服务221的设备配置意图编译器306可以转换遥测配置意图并且根据转换后的遥测配置意图向DMS 310发出配置一个或多个设备320的请求(5B-3A)。
DMS 310可以使用遥测配置来配置设备320(6-3A)。例如,DMS 310可以具有先前获取的信息(从操作1A-3A),该信息与设备的类型以及该设备支持的(多个)遥测相关协议有关。DMS 310可以使用该信息为设备320提供设备相关配置。
在由DMS 310配置之后,设备320可以被配置为向遥测收集器 214提供遥测数据(7-3A)。在一些方面,遥测收集器214可以使用推送或拉取技术从设备320收集遥测数据。不同的遥测收集器可以使用不同的机制,例如,一些遥测收集器214可以使用推送技术从设备320收集遥测数据,而其他遥测收集器214可以使用拉取技术。
遥测收集器214将其收集的遥测数据发布到高速缓存314 (8-3A)。在一些方面,高速缓存314可以被实现为Redis数据库。 Redis数据库是一个分布式数据库,其可以实现存储器中的键值数据库。
遥测订阅服务208可以基于由应用302、304提供的订阅从高速缓存314接收遥测数据(9-3A)。遥测订阅服务208可以基于其相应订阅向应用302、304提供遥测数据(10-3A)。在一些方面,应用 302、304可以经由gRPC通道从遥测订阅服务208接收他们已经订阅的数据。
图3B是示出根据本公开的一个或多个方面的遥测服务中的工作流的框图。在一些实现中,遥测服务140可以被配置为没有意图服务 218。图3B示出了用于这样的实现的遥测订阅工作流。如图3A所示,图3B所示的工作流中的操作由阴影圆圈中的数字表示。图3B所示的操作可以由遥测服务140的不同组件执行。在某些方面,这些组件可以是微服务。
设备管理服务(DMS)310发现网络中的设备和设备320的遥测能力(1A-3B)。DMS310将所发现的设备320和设备320的遥测能力发送到库存服务316(1B-3B)。在一些方面,DMS 310可以向库存服务316通知设备所支持的遥测协议,例如SNMP、SNMP陷阱、 JTI、gRPC、NETCONF、Syslog等。
库存服务316可以向应用302、304提供关于一个或多个新设备的发现的信息(2-3B)。应用302、304可以从库存服务316中学习给定设备的遥测能力。遥测能力可以是可以对于给定设备要为其收集遥测数据的不同协议和对应传感器的超集。
库存服务316知道设备320的遥测能力。例如,在某些方面,库存服务316可以经由遥测插件317学习设备320的遥测能力。遥测插件317可以维持遥测服务140支持的协议表和相应传感器的表。应用 302、304可以在向遥测控制器221发送遥测需求请求之前查询库存服务316以获取遥测能力。
应用302、304可以使用遥测能力生成其相应遥测需求请求,并且将其相应遥测需求请求传输到遥测控制器221(3A-3B)。
为了开始监测设备遥测,应用302可以向遥测控制器221发出遥测请求。例如,响应于从库存服务326接收的设备通知(上述操作 2-3B),应用302可以向遥测控制器221发出遥测请求。在某些方面,应用302经由gRPC通道向遥测控制器221发出遥测请求。在这样的方面中,应用302可以是gRPC连接的发起者,并且遥测控制器221 可以充当gRPC服务器。
遥测请求可以指定对于给定设备要为其收集遥测数据的一个或多个遥测协议和对应传感器。作为示例,应用302可以向遥测控制器 221发出遥测请求,该遥测请求可以指定SNMP协议将用于从设备 320A上的管理信息库(MIB)收集遥测数据。在一些方面,遥测控制器221可以通过创建多个遥测请求的并集来组合从多个应用302接收的多个遥测请求。例如,遥测控制器221可以将表示第一遥测数据收集意图的数据与表示第二遥测数据收集意图的数据组合,以创建遥测数据收集意图的并集。
在与遥测请求有关的错误的情况下,在某些方面,应用302可以将遥测请求重新发送到遥测控制器221。例如,如果应用302与遥测控制器221之间的gRPC连接失败,则应用302可以与遥测控制器221 重新建立gRPC连接,以将新的或已更新的遥测请求发送到遥测控制器221。
当遥测控制器从应用302接收到新的遥测请求时,遥测控制器 221可以向库存服务316发出重放特定设备320的设备信息的请求。重放可能是有用的,因为设备信息可能随着时间改变。重放促进遥测控制器221接收关于设备能力的最新信息。遥测控制器221可以协调其状态以用于要监测的设备和已经从特定设备320的应用302接收到的遥测请求。在某些方面,通信是通过遥测控制器221与库存服务316 之间的gRPC通道执行的。另外,当遥测控制器221初始化时,遥测控制器221可以使用gRPC通道来请求遥测控制器221正在监测的每个设备的重放。在一些方面,遥测控制器221可以生成具有期望重放的设备320的列表的批处理请求。
应用302可以发出向遥测订阅服务208订阅遥测数据的订阅请求 (3C-3B)。在一些方面,订阅请求可以指定设备302想要从其接收数据的设备标识符、期望协议以及对应传感器。另外,可以包括应用标识符以标识对收集遥测数据感兴趣的应用302。遥测控制器221可以管理来自多个应用的请求,并且如上所述,可以协调从多个应用接收的请求。
在一些方面,诸如持久性存储应用304等应用可以直接与遥测订阅服务120订阅以接收期望遥测数据。这样的应用可以订阅遥测数据 (3C-3B),而无需首先向遥测控制器通知要监测的设备和要从其收集数据的对应传感器(即,应用不执行操作3A-3B)。在这种情况下,应用可以假定已经供应适当的遥测收集器214。然而,这种供应不是必需的,并且遥测控制器214可以在应用订阅遥测数据之前或之后被供应。
遥测控制器221可以基于从应用302和库存服务316接收的遥测需求和/或能力信息来供应遥测收集器214以开始收集遥测数据 (4-3B)。
遥测控制器221可以使用遥测需求和/或能力信息来确定期望抽象遥测配置参数,并且可以将遥测配置发送到DMS 310以请求DMS 310根据抽象遥测配置参数来配置设备(5-3B)。抽象遥测配置参数可以是协议、参数和期望遥测数据的设备独立规范。
DMS 310可以将抽象遥测配置参数转换为可以用于配置设备320 的平台相关遥测配置(6-3B)。例如,DMS 310可以具有先前获取的信息(从操作1A-3B),该信息与设备的类型以及该设备支持的(多个)遥测相关协议有关。DMS 310可以使用该信息为设备320提供设备相关配置。
在由DMS 310配置之后,设备320可以被配置为向遥测收集器 214提供遥测数据(7-3B)。在一些方面,遥测收集器214可以使用推送或拉取技术从设备320收集遥测数据。不同的遥测收集器可以使用不同的机制,例如,一些遥测收集器214可以使用推送技术从设备320收集遥测数据,而其他遥测收集器214可以使用拉取技术。
遥测收集器214将其收集的遥测数据发布到高速缓存314 (8-3B)。在一些方面,仅设备的最新数据在高速缓存314中可用。在一些方面,高速缓存314可以被实现为Redis数据库。Redis数据库是一个分布式数据库,其可以实现存储器中的键值数据库。
遥测订阅服务208可以基于由应用302、304提供的订阅从高速缓存314接收遥测数据(9-3B)。遥测订阅服务208可以基于其相应订阅向应用302、304提供遥测数据(10-3B)。在一些方面,应用302、 304可以经由gRPC通道从遥测订阅服务208接收他们已经订阅的数据。
图4是示出根据本公开的一个或多个方面的遥测服务的更多细节的框图。如图4所示,遥测服务140包括以上关于图2和3描述的组件,即遥测控制器221、遥测订阅服务208、遥测收集器214、库存服务316、遥测插件317和DMS服务310。另外,如图4所示,遥测服务140包括遥测配置数据库404、收集器分配器412、设备配置生成器池410、API服务器406、库存工作人员池408、负载均衡器服务 426、虚拟专用网(VPN)服务422和安全服务420。遥测控制器221 可以包括收集器分配器412、设备配置生成器池410、API服务器406 和库存工作器池408。
现在将描述图4所示的遥测服务140的组件的一系列操作。如图 3A和3B,操作由阴影灰色圆圈中的数字标识。
设备管理服务(DMS)310发现网络中的设备和设备320的遥测能力。DMS 310将所发现的设备320和设备320的遥测能力发送到库存服务316(1-4)。在一些方面,DMS 310可以向库存服务316通知设备所支持的遥测协议,例如SNMP、SNMP陷阱、JTI、gRPC、 NETCONF、Syslog等。
库存服务316可以向应用302、402提供关于一个或多个新设备的发现的信息(2-4)。应用302、402可以从库存服务316中学习给定设备的遥测能力。如上所述,遥测能力可以是不同协议和对应传感器的超集,可以对于该超集为给定设备收集遥测数据。
应用302、402可以使用遥测能力生成其相应遥测需求请求,并且向遥测控制器221传输监测给定设备320的一个或多个传感器的其相应遥测需求请求(3A-4)。该请求可以由遥测控制器221的API 服务器406接收。API服务器406可以是用于应用请求的入口点,并且可以处理关于收集遥测数据的创建、释放、更新和删除(CRUD) 请求。API服务器406可以验证传入请求(例如,验证租户、所请求的协议及其支持的传感器等)。在一些方面,来自应用302、402的遥测请求指定应当对于给定设备要为其收集遥测的传感器和协议的集合。在成功验证之后,API服务器406可以为每个唯一设备创建数据库条目,其中包含描述已验证请求的定义明确的元数据。可以由 API服务器406和/或遥测服务器221的各种实现支持以支持对遥测控制器221做出的应用302、402的请求的消息的示例在图12中描述。
遥测控制器221可以跟踪从不同应用302、402接收的遥测需求。应用302、402可以基于应用302、402可以从库存服务316接收的设备属性来确定对于给定设备的由遥测服务140支持的遥测传感器。在某些方面,遥测插件317可以提供这样的设备属性。在一些方面,应用302、402可以响应于从库存服务326接收的设备通知而向遥测控制器221发出遥测请求(上述操作2-4)。在一些方面,应用302经由gRPC通道向遥测控制器221发出遥测请求。在这样的方面中,应用302可以是gRPC连接的发起者,并且遥测控制器221可以充当 gRPC服务器。如上所述,在一些方面,遥测控制器221可以通过创建多个遥测请求的并集来组合从多个应用302、402接收的多个遥测请求。
应用302、402可以发出向遥测订阅服务208订阅遥测数据的订阅请求(3B-4)。在一些方面,订阅请求可以指定设备302想要从其接收数据的设备标识符、期望协议以及对应传感器。遥测控制器221 可以管理来自多个应用的请求,并且如上所述,可以协调从多个应用接收的请求。在一些方面,应用302、402可以经由gRPC通道将订阅请求发送到遥测订阅208。在某些方面,EMS应用402可以发起与遥测订阅服务208的gRPC连接以从设备320订阅特定遥测数据。可以由应用302、402使用的API的描述可以在图13中找到。
在某些方面,当遥测服务140初始化时,它可以发起与库存服务 310的连接(4A-4)。例如,遥测服务140可以发起与库存服务310 的gRPC连接。该连接可以用于从库存服务316接收设备特定信息和遥测特定信息。在某些方面,对于由遥测服务140监测的每个设备,遥测控制器211可以指定要从库存服务316接收的特定遥测信息。例如,遥测控制器211可以向库存服务316指定要从特定设备接收 SNMP或JTI配置信息。
库存服务316可以将所请求的信息发送给特定设备的遥测控制器 221(4B-4)。此外,库存服务316可以将设备的已更新信息发送给遥测控制器221。例如,如果Netconf用户名/密码改变,或操作系统 (OS)版本改变等,库存服务316可以向遥测控制器221发送更新的指示。在接收到设备的信息之后,遥测控制器221可以使遥测配置数据库404与已更新设备信息一致。此外,当从网络系统中移除或删除被配置为由遥测服务140监测的设备时,库存服务316可以向遥测控制器221发送移除或删除的通知。遥测控制器221可以从遥测配置数据库404中移除该设备。
库存服务316可以关于遥测服务140可以支持的用于不同协议维持传感器的信息。库存服务316的遥测插件317可以将关于传感器的信息提供给库存服务316。应用302、402可以从库存服务316获取该信息,如以上关于操作3A讨论的。应用302、402可以使用该信息来选择用于监测的传感器的子集。
在某些方面,库存工作人员408向库存服务316发出信息请求,并且处理从库存服务316接收的任何数据。库存工作人员408可以与库存服务316通信以获取关于设备及其支持的协议的更详细的信息。遥测配置数据库中设备的数据库条目可以使用设备信息来更新。
遥测控制器221为遥测配置数据库404中的设备创建从库存服务 316接收的信息和从应用302、402接收的遥测需求的副本(5A-4)。该信息可以包括要为设备收集的遥测数据。如上所述,遥测控制器221 的API服务器406可以在配置数据库404中创建包含从应用302、402 接收的信息的条目。
遥测控制器221的收集器分配器412可以确定要分配用于监测特定设备的协议特定的收集器214(5B-4)。例如,收集器分配器412 可以确定收集器214,收集器214是实现用于特定协议的收集器214 的Kubernetes吊舱。对于不同协议有不同收集器。在图4所示的示例中,存在用于SNMP陷阱的收集器214A、用于JTI协议的收集器214B、用于Syslog协议的收集器214C、用于Netconfig/命令行界面(CLI) 协议的收集器214D、用于SNMP协议的收集器214E、以及gRPC协议的收集器214F。可以存在图4中未示出的其他协议的更多的协议特定的收集器214。此外,对于特定协议,可以存在一个以上的遥测收集器214。遥测控制器221可以在遥测配置数据库404中维持遥测收集器214的分配图,该分配图指示如何将设备分配给遥测收集器 214。遥测控制器221可以周期性地评估分配图。例如,遥测控制器 221可以根据协议和遥测收集器214针对这一协议所经历的负载来周期性地重新确定分配图并且重新分配设备。
收集器214中的每个收集器使用来自遥测配置数据库404的信息来确定其分配给遥测收集的工作(5C-4)。例如,SNMP收集器214E 中的每个Kubernetes吊舱可以确定要由吊舱轮询的特定设备。
遥测控制器221可以查询DMS 310以请求DMS 310提供遥测配置模板(6A-4)。在一些方面,遥测配置模板可以是Jinja模板。在一些方面,在遥测控制器221与DMS 310之间建立gRPC通道。遥测控制器221的设备配置生成器410可以经由gRPC通道发出对配置模板的查询。DMS 310可以响应于设备配置生成器410的请求而发送所请求的遥测配置模板。
遥测控制器221的设备配置生成器410可以基于遥测配置模板和所指定的协议来生成遥测协议特定的配置,并且将所生成的遥测协议特定的配置发送到DMS 310(6B-4)。设备配置生成器410可以渲染Jinja模板以生成遥测协议特定的配置,并且经由gRPC通道将遥测协议特定的配置发送到DMS 310。
DMS 310可以将遥测协议特定的配置发送到设备收集服务 (DCS)418(7A-4)。DCS418可以维持与设备的连接,并且可以将配置推送到适当的设备320(7B-4)。
在DMS 310经由DCS 418进行配置之后,设备320可以被配置为向遥测收集器214提供遥测数据(8-4)。在一些方面,遥测收集器214可以使用推送或拉取技术从设备320收集遥测数据。例如,一些设备可以将遥测数据流传输到适当的收集器214。一些设备可以响应于对从收集器214接收的遥测数据的轮询请求,以将其遥测数据提供给遥测收集器214。
在某些情况下,一个或多个设备320可以位于执行网络地址转换 (NAT)的路由器或交换机之后。在这种情况下,执行NAT的设备可能不允许由遥测收集器214发起的请求到达指定设备320。为了解决这种情况,在某些方面,可以在设备320于收集器214之间配置互联网协议安全(IPSec)隧道。在图4所示的示例中,虚拟专用网(VPN) 服务422在设备320与收集器214之间建立IPSec隧道。VPN服务 422可以是IPSec隧道的收集器侧的隧道端点,本期安全服务420可以是终止IPSec隧道的设备320侧的IPSec隧道的隧道端点。在某些方面,安全服务420可以是由可以从加利福尼亚州桑尼维尔的瞻博网络获取的vSRX虚拟安全设备提供的安全服务。
遥测收集器214将其收集的遥测数据发布到高速缓存314(9-4)。如图4所示,不同收集器214可以为相应遥测协议处理遥测数据。例如,SNMP陷阱收集器214A处理SNMP陷阱。在一些方面,SNMP 陷阱可以从多个设备320被发送到SNMP代理虚拟IP地址(VIP)。例如,负载均衡器426可以与SNMP代理VIP相关联。负载均衡器 426可以接收SNMP陷阱,并且将陷阱分布在SNMP陷阱收集器214A 的多个实例之间,以便跨多个实例均衡处理负载。在一些方面,SNMP 陷阱收集器214A的多个实例中的每个实例可以是一个或多个 Kubernetes吊舱。
JTI收集器214B可以处理JTI流。在一些方面,JTI用户数据报协议(UDP)业务被发送到与负载均衡器426相关联的服务端点VIP 地址。负载均衡器426可以将JTI UDP业务分配给JTI收集器214B 的实例。在某些方面,来自特定设备的JTI UDP业务始终被发送到JTI收集器214B的同一实例,以避免重新排序问题。在一些方面,JTI 收集器214B的实例可以是一个或多个Kubernetes吊舱。
系统日志收集器214C从被配置为提供这样的数据的设备320接收系统日志数据。在一些方面,系统日志数据可以被推送到与系统日志收集器214C相关联的VIP地址。VIP地址可以是负载均衡器426 的VIP地址,它是系统日志收集器214C的代理IP地址。在一些方面,系统日志收集器214C的实例可以是一个或多个Kubernetes吊舱。
Netconf收集器/CLI 214D的实例可以同时发出CLI命令,以向被配置为提供Netconf数据的一个或多个设备中的每个设备请求遥测数据。一个或多个设备可以同时处理CLI命令,并且将所请求的遥测数据返回到Netconf收集器/CLI 214D的请求实例。在某些方面,Netconf 收集器/CLI 214D的实例可以是一个或多个Kubernetes吊舱。
SNMP收集器214E的实例可以同时轮询设备以向被配置为提供这样的数据的设备请求基于SNMP的遥测数据。例如,SNMP收集器 214E的实例可以从被配置为维持这样的数据的设备320上的一个或多个MIB收集遥测数据。在一些方面,SNMP收集器214E的实例可以是一个或多个Kubernetes吊舱,该Kubernetes吊舱从分配给吊舱的设备320收集基于SNMP的遥测数据。
gRPC收集器214F的实例可以同时轮询设备以向被配置为经由 gRPC提供这样的数据的设备请求遥测数据。在一些方面,gRPC收集器214F的实例可以是一个或多个Kubernetes吊舱,该Kubernetes吊舱从分配给吊舱的设备320收集遥测数据。在某些方面,gRPC收集器214F可以请求以特定速率接收数据。
在一些方面,负载均衡器426可以不涉及通过轮询设备收集遥测信息的遥测收集器214(例如,SNMP收集器214E和gRPC收集器 214F)。在遥测收集器214轮询设备以获取遥测数据的情况下,被轮询的设备直接响应于发起轮询请求的遥测收集器实例214。
由遥测收集器214收集的数据可以存储在高速缓存314中(10-4)。如上所述,在一些方面,在高速缓存器314中仅可获取设备的最新数据。在某些方面,高速缓存器314可以被实现为Redis数据库。
遥测订阅服务208可以基于由应用402、302提供的订阅从高速缓存314接收遥测数据。遥测订阅服务208可以基于其相应订阅将遥测数据提供给应用402、302(11-4)。在一些方面,应用402、302 可以经由gRPC通道从遥测订阅服务208接收他们已经订阅的数据。
在某些方面,作为遥测服务140的一部分的上述一个或多个服务 (例如,遥测控制器221及其组件、库存服务316、遥测收集器214、遥测订阅服务208)可以被实现为微服务。例如,组成遥测服务140 的微服务可以与遥测服务140的一个或多个其他微服务松散耦合,并且可以实现轻量协议以在微服务之间进行通信。在某些方面,上述服务中的一个或多个可以被实现为Kubernetes部署构造,包括吊舱和容器。
遥测服务140可以监测自身以促进容错和动态缩放。例如,遥测服务140可以监测诸如处理器和存储器使用等资源利用、以及诸如队列大小、设备计数、应用计数、订阅率、添加率、更新率、删除率等其他度量。遥测服务140可以周期性地或连续地监测可以指示遥测服务140的组件是否正在成为给定负载的瓶颈的健康度量,从而导致产生(例如,创建)成为瓶颈的组件的新实例。在一些方面,可以定义一组规则以监测遥测服务140的给定组件的健康度量,并且然后将其用于制定创建用于扩展遥测服务140能力的新的微服务实例的决策。类似地,可以使用相同的机制来确定负载条件是否足够低以允许缩小遥测服务140的能力。图14A和14B示出了可以用于扩展或缩小遥测服务140的各种组件和服务的规则和健康度量。
现在将描述遥测服务140的各个组件的水平可缩放性和容错性的示例。API服务器406可以是容错的。例如,在失败的情况下,可以动态产生API服务器406的新实例。此外,可以产生(例如,创建) API服务器406的多个实例以跨不同实例对工作负载进行负载均衡。例如,在基于Kubernetes的实现中,遥测服务140可以利用部署构造,该构造可以在出现故障的情况下自动产生API服务器406的实例。可以检查由API服务器406利用的数据库(例如,遥测配置数据库404) 的状态。因此,在重启或实例崩溃之后,API服务器406可以收敛到一致的状态,从而导致最小或没有服务影响。
可以创建设备配置生成器410的多个实例。可以为每个实例分配设备的子集,并且每个实例可以为分配给该实例的设备的不同平台系列独立确定期望的设备遥测配置。一旦由分配有设备的设备配置生成器410的实例确定了适当的配置,设备配置生成器410便可以使用 DMS 310独立配置设备。如果设备配置生成器410的实例崩溃或发生故障,则分配给故障实例的设备可以跨其余实例重新分配。使用 Kubernetes部署构造可以实现高可用性和容错能力,该构造可以在现有实例崩溃时动态产生设备配置生成器410的新实例。
库存服务管理器316的多个实例可以被维持为实例池。一个或多个设备可以被分配给池中的每个实例,并且这些实例可以同时发现设备能力。另外,库存服务管理器316的每个实例可以监测设备能力的任何更新。例如,每个实例可以连续侦听关于分配给该实例的设备的更新通知。如果有任何实例崩溃,则可以产生新实例,并且分配给崩溃实例的设备集可以被重新分配给新实例或所有可用实例。与遥测服务140的其他微服务类似,在某些方面,可以使用Kubernetes部署构造实现高可用性,该构造在现有实例崩溃的情况下动态且自动产生新的服务实例。
如上所述,可以存在多种类型的遥测收集器214,其为例如JTI、 gRPC、SNMP、Syslog、Netconf等不同遥测协议提供支持。每个遥测收集器214可以被设计为具有多个实例的独立微服务,这些实例水平缩放以满足监测要求。作为示例,Netconf收集器214D可以被设计为具有多个实例的服务。可以为Netconf收集器214D的每个实例分配一组其监测和收集数据的设备。随着为Netconf配置的设备数目的增加,可以产生Netconf收集器214D的更多实例来处理附加负载。如果Netconf收集器214D的实例崩溃或失败,则可以使用Kubernetes 基础设施自动产生新实例。分配给崩溃实例的设备可以被重新分配给新实例或其他可用实例。与其他微服务类似,在某些方面,可以通过使用Kubernetes部署构造来实现高可用性,该构造在现有实例崩溃时动态且自动产生遥测收集器214的新实例。
遥测订阅服务208可以对于大量的并发消费者(例如,应用302、 402)水平缩放。可以创建遥测订阅服务208的多个实例,其中每个实例可以独立地服务于遥测数据的不相交的请求集。如果遥测订阅服务208的实例崩溃或失败,则可以跨可用实例分配请求。随着请求数目的增长,可以通过动态产生更多实例来促进遥测订阅服务208的水平缩放。使用Kubernetes部署构造可以实现高可用性,该构造可以在现有实例崩溃或发生故障时动态且自动产生遥测订阅服务208的新实例。
图1、2、3A、3B和4所示的模块(例如,遥测服务140的组件) 和/或在本公开的其他地方示出或描述的模块和系统可以执行使用驻留在一个或多个计算设备处中和/或在一个或多个计算设备处执行的软件、硬件、固件、或硬件、软件和固件的混合而描述的操作。例如,计算设备可以用多个处理器或多个设备执行一个或多个这样的模块。计算设备可以执行一个或多个这样的模块作为在基础硬件上执行的虚拟机。这些模块中的一个或多个可以作为操作系统或计算平台的一个或多个服务来执行。一个或多个这样的模块可以在计算平台的应用层作为一个或多个可执行程序来执行。在其他示例中,由模块提供的功能可以由专用硬件设备而被实现。
图5是示出根据本公开的一个或多个方面的实例遥测数据归一化流水线的概念图。不同的遥测协议收集器214可以收集相似的度量,但是原始数据格式和度量的含义可以有所不同。例如,不同的遥测协议收集器214可以使用不同的单元,具有不同的比例,等等。在一些方面,遥测协议收集器214可以实现数据归一化流水线502。数据归一化流水线502可以包括原始数据解码器504、归一化表查找506和经归一化的数据编码器508。
原始数据解码器504将作为输入从设备接收的原始数据转换为一组<键,值>对,其中“键”表示协议特定的的唯一度量名称,并且“值”可以是度量的最近测量。
归一化表查找506可以使用协议和键来在归一化表中执行查找以确定可以对于同一度量在不同协议之间保持一致的输出归一化度量名称。在一些方面,归一化度量表结合了遥测协议的领域知识,并且可以基于将原始数据度量名称映射到归一化度量名称的模式来自动生成。
在将遥测数据发布到遥测订阅服务208之后,经归一化的数据编码器508将度量名称和原始数据编码为归一化遥测格式,例如, OpenConfig或google遥测格式。度量510是可以在经归一化的数据编码器508进行编码之后发布的归一化度量的示例。
图6是示出根据本公开的一个或多个方面的实例遥测收集状态机的概念图。遥测服务140的组件可以在控制平面和数据平面上操作。例如,遥测控制器221和库存服务316可以在控制平面上操作,并且遥测收集器214可以在数据平面上操作。当遥测状态机接受请求并且使设备准备好用于遥测收集器拾取时,遥测状态机促进遥测控制器 221的无缝运行。遥测状态机600可以为不同遥测服务140组件提供系统方式来识别它们当前必须服务于哪些设备。此外,遥测状态机600 可以促进在发生意外行为时标识根本原因。
如上所述,遥测服务140可以具有支持不同遥测收集协议的遥测收集器214。在某些方面,每个协议具有相关联的遥测收集状态机。从一种状态到另一种状态的转变由状态之间的箭头连接器指示。可以触发状态转变的一个或多个事件由图6中的虚线框中的文本指示。
在某些方面,协议状态是在每个设备、每个协议的基础上维持的。另外,在一些方面,协议状态机取决于应用是否请求目标设备的协议;并且因此取决于遥测控制器221(图4)正在执行的当前操作的状态。
在某些方面,协议状态机可以如图6所示在六个状态之间转变。六个状态可以是“未完成”602、“未决”604、“就绪”606、“配置发送”608、“配置成功”610和“不存在”612。状态之间的转变可以与遥测控制器221的各个组件的执行紧密耦合并且可以由其导致。在遥测控制器221的组件中执行的这些步骤可以表示触发状态转变的事件。现在将参考以上在图2、3A、3B和4中描述的组件来描述遥测控制器221的组件以及可以是由该组件执行的操作的结果的状态转变。
如上所述,API服务器406可以是关于设备的遥测收集的应用请求的入口点。API服务器406可以验证传入请求(例如,验证租户,所请求的协议及其支持的传感器、报告速率等)。可以在设备的遥测配置数据库404中做出条目。该条目可以包括所请求的协议和请求遥测数据的应用的标识符。如果一个以上的应用请求设备的遥测数据,则可以将附加应用请求的协议和附加应用的标识符附接到该设备的数据库条目中。在一些方面,协议的初始状态是“不存在”612。当应用302、402请求设备的遥测收集时,设备的协议状态和所请求的协议可以转变为“未完成”602。
库存工作人员408可以迭代地拾取具有“未完成”602的任何协议状态的设备。对于每个这样的协议,库存工作人员408可以将状态转变为“未决”604。库存工作人员408可以与库存服务316通信以获取关于设备及其支持的协议的更多细节。在某些方面,库存工作人员408可以获取设备名称、设备IP地址、设备系列和协议特定的元数据,例如设备端口、私钥、认证密钥、SNMP版本等。对于库存工作人员408能够获取信息的每个协议,库存工作人员408可以将状态转变为“就绪”606。遥测配置数据库402中该设备的数据库条目可以使用新添加的设备信息进行更新。在库存工作人员408无法从库存服务316获取协议信息的情况下,协议状态从“未决”604转换为”未完成”602。这促进在库存工作人员408的后续迭代中,协议状态可以再次被正确地拾取以向库存服务316请求数据。
在某些情况下,协议可能需要在支持这一协议的设备上进行其他配置。这样的协议的示例包括gRPC、SNMP陷阱、Syslog和JTI。附加配置数据的示例可以包括要在其上传送数据包的主机IP地址/端口、所配置的传感器的报告速率等。设备配置生成器410搜索状态为”就绪”606的这样的协议。在一些方面,设备配置生成器410从DMS 310获取抽象遥测配置模板,DMS 310可以管理这样的模板。模板可以是指定抽象遥测配置参数的XML模板或Jinja模板。抽象遥测配置模板可以包括诸如向其传送数据包的主机IP地址/端口、所配置的传感器的报告速率等信息。设备配置生成器410可以处理抽象遥测配置模板以生成协议特定的配置。设备配置生成器410可以将所生成的协议特定的配置发送到DMS 310。状态机将状态转变为“配置发送”608。
DMS 310可以在成功地使用协议特定的配置来配置设备之后向设备配置生成器410发送确认。然后,状态机转变到“配置成功”610,它可以是提供遥测数据的操作设备的结论状态。该设备现在可以完全准备好将遥测数据发送到对应遥测收集器214的目标端口。
DMS 310未能确认使用协议特定的设备配置成功配置设备的失败会导致状态机转变回“就绪”606(从“配置发送”608)。将状态恢复为“就绪”606可能导致在设备配置生成器410的后续迭代期间再次尝试配置设备。
如上所述,某些协议不需要将协议特定的配置推送到设备。这样的协议的示例包括Netconf/CLI、gRPC和SNMP。在协议不需要协议特定的配置的情况下,状态机可以将“就绪”606保持为完成状态。
从上面可以看出,在某些方面,在遥测控制器221的过程迭代结束时,取决于协议,期望的操作协议状态可以是”就绪”606或”配置成功”610。当状态机600指示设备处于期望的操作协议状态时,协议特定的遥测收集器214可以按照指定间隔收集所请求的设备的遥测数据。所收集的遥测数据可以被流传输到高速缓存314以供消费。遥测订阅服务可以从高速缓存314获取遥测数据,并且将遥测数据发送到订阅应用301、402。
上述状态转变技术在应用注册请求的上下文中描述。在其他情况下可以使用其他状态转变技术。这样的场景的示例包括先前注册的应用请求新协议,从先前请求的协议中取消注册,新应用对已经注册用于由另一应用收集遥测的设备请求遥测。在一些方面,这样的情况可以由遥测控制器221处理,并且更具体地,可以由遥测控制器221的 API服务器406处理。如上所述,API服务器406可以是遥测控制器 221关于应用请求的入口点。API服务器406可以确定当前注册相关请求(例如,注册或未注册)是否将导致对协议所请求的传感器列表的改变。如果要进行改变,则API服务器406可以如下修改设备的协议状态:
·如果当前协议状态是“配置发送”608或“配置成功”610之一,则状态转变为“就绪”606”。
·如果当前协议状态为“未完成”602或“未决”604,则新状态将为“未完成”602。
·如果当前协议状态为“就绪”606,则它保持为““就绪”606”。取决于新的状态,遥测控制器221及其组件API服务器406、设备配置生成器410和库存工作器408的任何后续操作将如上所述发生。
在一些方面,上述状态机可以促进网络系统的控制平面的准确运行,并且可以促进有效确定控制器当前正在执行的操作。结果,状态机可以用于标识网络系统中发生的故障或错误。下面将更详细地描述在错误或故障检测中使用状态机的技术。
图7是示出根据本公开的一个或多个方面的由示例遥测收集服务执行的操作的流程图。不完整在图1、2、3A、3B和4的遥测服务140 的上下文中描述图7。在其他示例中,图7中描述的操作可以由一个或多个其他组件、模块、系统或设备执行。此外,在其他示例中,结合图5描述的操作可以被合并,以不同的顺序执行,被省略,或者可以包含未具体示出或描述的附加操作。图7中描述的技术可以用于促进易于使用且可缩放的遥测服务。
诸如EMS应用402(图4)等应用可以将表示遥测数据收集意图的数据提供给遥测控制器221(702)。如上所述,遥测数据收集意图可以是从网络系统中的设备收集遥测数据的要求的高级描述。遥测意图编译器可以将遥测数据收集意图转换为抽象遥测配置参数,包括定义要收集的遥测数据的参数(704)。另外,遥测控制器可以基于遥测数据收集意图来确定要从其收集遥测数据的网络系统中的设备集合(706)。
遥测控制器221可以从设备管理服务310获取设备集合中的每个设备的设备能力信息(708)。设备能力信息可以包括设备支持的遥测协议。
遥测控制器221可以基于抽象遥测配置参数和设备所支持的遥测协议来配置每个设备(710)。例如,遥测控制器可以为该设备创建协议特定的遥测配置,并且将该配置推送到该设备。
遥测控制器221可以基于设备的所支持的遥测协议来将设备分配给多个遥测收集器的实例(712)。在一些方面,遥测收集器被配置为支持特定遥测协议。此外,可能存在支持特定遥测协议的遥测收集器的多个实例。遥测控制器221可以将设备分配给为该设备支持的遥测协议而配置的遥测收集器的实例。
遥测收集器可以从其相应的所分配的设备获取遥测数据,并且将所收集的遥测数据放入高速缓存中(714)。遥测数据可以在放入高速缓存中之前如上所述进行归一化。应用可以订阅遥测数据并且在遥测数据被放入高速缓存中之后接收遥测数据(716)。
图8是示出根据本公开的一个或多个方面的用于遥测服务的健康监测系统800的框图。健康监测系统800可以监测网络系统的健康,并且可以处理可以用于确定何时需要添加组件的新实例以满足系统上当前负载以及定位系统错误操作的数据。
如上所述,遥测服务140可以包括在网络系统的控制平面和数据平面中操作的多个服务。类似地,警报服务142可以包括在遥测数据指示异常时利用遥测数据来提供警报的多个服务。在遥测数据收集期间,可能需要供应控制平面和数据平面中的不同服务,以便从基础设施组件(诸如设备和应用)收集遥测数据。然而,在诸如遥测服务140 和警报服务142等分布式系统中,不同组件的故障会表现出病理学行为。此外,遥测服务140和警报服务142都可以通过根据需要添加更多服务实例来扩展。在使用水平缩放的收集器、容错控制器和订阅服务(正在管理潜在的数千个设备)的大规模分布式系统中,很难找到在给定时间引起错误的组件。例如,由于瞬态网络问题,供应设备在特定时间可能无法顺利进行。在这种情况下,由于系统庞大,很难找到有故障的组件。通常,日志记录错误会有所帮助,但是太多的嘈杂的配置日志会与这个错误重叠,从而使该错误等效于大海捞针问题。因此,对故障进行故障排除并且将其定位到特定组件可能具有挑战性。
在一些方面,健康监测系统800包括被配置为监测遥测服务140 和可选地监测警报服务142的健康监测器144。在一些方面,健康监测器144包括高速缓存804、数据适配器806、时间系列数据库(TSDB) 808、以及可选的遥测调试基础设施810和调试探针812。
健康监测器144可以接收遥测服务健康数据802和可选的警报服务健康数据852的流。在一些方面,遥测服务健康数据802和警报服务健康数据852包括来自遥测服务140和警报服务142的各个组件的度量。遥测服务健康数据802和警报服务健康数据852可以包括在提供特定服务或组件可能唯一的健康数据和度量的不同组件之间通用的度量。
警报服务健康数据可以由警报服务生成,警报服务可以来自警报服务142的多个组件中的任何一个。这样的组件的示例包括警报规则意图编译器841、警报规则意图编程器844、警报规则执行引擎846A-N (警报规则执行引擎846)、警报数据适配器848和警报通知订阅服务850。
警报规则意图编译器841接收以较高级别表示警报生成的意图的警报意图230,并且将该警报意图转换为实现警报意图230的一个或多个较低级别警报规则。警报意图230可以是自然语言。作为示例,警报意图230可以是“通知CPU和网络使用是否偏离集群中的正常行为”。
警报规则意图编程器844接收警报规则,并且确定将处理警报规则的一个或多个警报规则执行引擎846。警报规则意图实例844可以将警报规则的互斥子集编程为警报规则执行引擎846。
警报规则执行引擎846A-N(被统称为警报规则执行引擎846)经由遥测服务140从网络系统205上的设备接收遥测数据。警报规则执行引擎846将其已经编程的规则应用于遥测数据,并且如果满足规则,则为该规则生成对应警报。
警报数据适配器848可以将警报通知持久存储到持久存储装置中。可以通过不同的遥测协议(诸如简单网络管理协议(SNMP)、 Google远程过程调用(gRPC)、Junos遥测接口(JTI)等)收集相同的度量标准数据。但是,当生成警报通知时,警报数据适配器848 可以将输出结果转换为一致的归一化表示以供应用使用。
警报通知订阅服务850为应用提供接口以向警报服务142通知应用希望接收警报的通知。应用可以指定应用有兴趣接收通知的警报或警报类型。在某些方面,可以有多个最终用户应用,管理应用和服务对接收实时和历史警报通知感兴趣。
关于警报服务142的上述组件和图8中未示出的警报服务的其他组件的更多细节可以在题为“INTENT-BASED DISTRIBUTED ALARM SERVICE”共同提交的同时待决的美国专利申请中找到,其先前已经通过引用合并于此。
高速缓存804可以接收遥测服务健康数据802和警报服务健康数据852。数据适配器806可以读取传入的遥测服务健康数据802和警报服务健康数据852。在某些情况下,遥测服务140和/或警报服务142 的不同组件提供的度量可以相同,但可以具有不同的标签或值格式。数据适配器806可以将健康数据中的度量转换为具有统一标签的统一格式。数据适配器806可以将转换后的度量存储在TSDB 808中。
健康监测器144可以按照预定或可配置的间隔周期性地评估 TSDB 808中的度量。例如,健康监测器144可以评估度量以确定负载状况和重复错误的计数。图14A和14B示出了可以从遥测服务140 的组件收集的度量的示例。图15示出了可以从警报服务142的组件收集的度量的示例。
在某些方面,除了将健康数据存储在TSDB 808中,健康监测器 144还可以生成可以存储在TSDB 808中的错误代码。在某些方面,健康监测器144可以基于以上参考图6描述的状态机600的状态之间的转变生成错误代码。例如,健康监测器144可以检测从一种状态到另一种状态的转变的故障,并且生成指示该故障的错误代码。
如上所述,遥测控制器221与库存服务316通信以获取设备特定信息和能力。可以在状态机600的故障状况期间生成的与遥测控制器 221与库存服务316的交互有关的示例错误代码的列表如下:
·与DMS的连接失败——通道未处于就绪状态——INVCXNERR
·获取设备能力RPC异常——INVGDCEXP
·获取设备能力RPC错误——INVGDCERR
·在解析设备定义时验证失败——INVVALERR
可以在状态机600的故障状况期间生成的与设备配置生成器410有关的示例错误代码的列表如下:
·与DMS的连接失败——通道未处于就绪状态——DCCXNERR
·获取模板UUID RPC失败错误——DCTUIERR
·获取模板UUID RPC失败错误——DCTUIEXP
·获取模板RPC失败错误——DCTEMERR
·获取模板RPC失败异常——DCTEMEXP
·渲染模板RPC错误——DCRETERR
·推送配置RPC错误——DCPCOERR
·推送配置RPC异常——DCPCOEXP
·DMS无法配置协议——DCCONERR
对于给定遥测请求,特定错误代码(诸如上述示例中的错误代码)可以足以标识对于其看到错误的特定服务,从而促进故障排除和从错误中恢复。遥测服务144可以提供RPC,该RPC可以应客户的请求而中继上述错误消息和当前状态代码。这样的RPC可以使遥测服务140 客户端知道任何连接或网络问题。
网络系统中的某些错误可能是暂时的,而系统中的某些错误可能是持久的。在一些方面,为了标识网络系统中的持久性问题,健康监测器144可以对由系统生成的错误代码执行聚类分析。健康监测器 144可以包括跟踪工具(未示出),该跟踪工具可以扫描所生成的错误代码以确定正在经历持久性问题的服务(例如,微服务)。
在一些方面,健康监测器144在监控时间窗口内对由不同服务生成的错误代码集周期性地执行聚类分析算法。每个错误代码可以包括标识源服务实例和观测到错误的遥测状态的数据。在一些方面,可以采用K均值聚类算法来确定所观察到的错误的状态和频率。示出状态和对应错误频率的聚类分析的输出的示例如下:
表1
一旦健康监测器确定每个状态错误的频率,健康监测器144就可以确定这些错误状况的根本原因。一项服务中的问题很可能是导致这些错误状况的原因。此外,服务中的问题有可能导致多个从属服务中的故障。这种情况可以被视为故障定位的最大覆盖问题,如Kompella, R.R.、Yates,J.、Greenberg,A.和Snoren,A.C.在Proc.IEEE INFOCOM (2007)的“Detection and Localization of Network Black Holes”(在此引用作为参考)中所述。在解决最大覆盖问题时,可以将观察映射到可能的原因。在一些方面,健康监测器144可以将错误代码视为观察,并且可能将可能的原因视为可能是故障的根本原因的服务集。在将最大覆盖解决方案技术应用于遥测服务140或警报服务140中的故障定位时,目标可以是找到可以解释所有观察的故障的最小的可能原因集。
图9是示出用于故障定位的错误代码的聚类的示例的概念图。曲线图902示出了观察,该观察包括已经观察到的错误代码以及根据上面的表1中提供的示例数据而发生错误代码的服务。在曲线图902中,错误代码904A-D被映射到生成(例如,观察到)错误代码的服务 906A-C。服务906A-C是可能是故障的根本原因的服务集。在该示例中,在解决最大覆盖问题时,目标是从服务集906A-C中找到可以解释所有观察到的错误代码904A-D的最小的可能原因集。健康监测器 144可以对曲线图902所示的数据应用“贪婪”算法,以确定可以解释观察到的错误代码904A-D的最小可能原因服务集。曲线图910示出了贪婪算法的应用结果。如在图910中可以看到的,错误代码 904A-D可以被映射到服务906A和906B,服务906D已经从该图中被修剪。因此,该示例中的错误代码904A-D可以归因于库存服务316 和设备管理器服务310这两个服务的问题。曲线图902和910示出了具有相对较少错误代码和服务的示例,以便更轻松地示出该技术。运行中的系统通常将有更多错误代码和服务作为图中的节点。示例曲线图902和910中示出的服务的自动修剪可能导致网络系统中的错误的更快和更有效的故障排除。
再次参考图8,在一些方面,健康监测器144可以生成调试探针 812,该调试探针812可以用于遥测服务140或警报服务142中的错误定位。调试探针812可以用于验证遥测控制平面。例如,调试探针 812可以由健康监测器144生成,以执行跨越与遥测供应有关的多个服务的路径。调试探针812可以测试从设备发现和启用到最终遥测数据收集的端到端路径。如果在调试探针812的执行期间观察到故障,则可以输出错误的错误代码和观察到错误的特定服务(例如,存储在 TSDB 808中)。
调试探针812可以是可以用于检查API服务器406所接受的遥测请求的当前状态的遥测调试基础设施810的一部分。例如,遥测调试基础设施810可以能够定位遥测请求被“卡”在系统中的位置。遥测调试基础设施810可以使用状态机600(图6)进行这种确定。在一些方面,遥测请求可以包括遥测服务140要为其收集遥测数据的应用设备组合。遥测调试基础设施810可以包括验证机制和缩小环境,以根据已知配置来检查收集代码的正确性。
图10是示出根据本公开的一个或多个方面的用于对于遥测收集服务使用调试探针生成来定位错误的操作的流程图。为了描述这样的操作,将假定已经对于应用设备组合发出了请求,并且该请求被“卡住”(例如,遥测服务140未完全处理该请求)。该请求通常将在 API服务器406处接收(1002)。该请求可以包括参数,诸如设备标识符、应用标识符、协议、以及作为请求的主题的一个或多个传感器或命令的列表。
调试探针812可以确定请求是否已经被API服务器406接受 (1004)。例如,调试探针812可以扫描遥测配置数据库404以检查数据库中与请求参数相对应的条目。
调试探针812可以执行对DMS 310的API的检查(1006)。在某些方面,调试探针812可以使用指定预定义能力的证书凭证和令牌经由gRPC进行API调用。证书凭证和令牌可以指示调试探针812被授权调用DMS 310中的API的特定集合以验证API正在工作。在一些方面,调试探针812可以检查“获取设备能力”调用、“获取模板”调用和“推送配置”调用。关于推送配置调用,DMS 310可以检查以确保被推送到设备的配置与先前已经被推送到设备的配置不冲突。
调试探针812可以检查设备的协议的当前状态(1008)。如果协议请求状态为“不存在”612,则调试探针812可以指示API服务器406实例中存在错误或问题。如果协议状态为“未完成”602或“未决”604,则调试探针812a指示设备配置生成器410的实例存在问题或错误。此外,如果对于gRPC收集器214F,SNMP陷阱收集器214A 或JTI收集器214B的实例的协议状态为“就绪”606或“配置发送” 608,则调试探针812可以指示设备配置生成器410的实例存在错误或问题。
调试探针812可以检查分配图(1010)。如上所述,收集器分配器412可以将设备和协议分配给遥测收集器214的实例,并且可以利用分配图来跟踪分配。例如,在某些情况下,对于支持SNMP、gRPC 和/或NETCONF的设备,可以通过收集器分配器412分配设备以收集Kubernetes吊舱。调试探针812可以验证需要使用gRPC、SNMP 或NETCONF进行监测的每个设备收集器在分配映射表中具有对应条目,该条目持久存储在遥测配置数据库404中。在某些方面,调试探针812可以检查数据库条目中的设备到吊舱映射,并且如果未找到,则可能引发错误。
调试探针812可以检查遥测收集器214的工作(1012)。例如,调试探针812可以验证负责监测特定设备320的特定Kubernetes吊舱能够到达该设备并且打开与该设备的连接以轮询用例。
调试探测器812可以订阅设备的遥测数据(1014)。例如,调试探针812可以将测试订阅请求发送到遥测订阅服务208。调试探针812 可以验证是否创建了测试订阅并且接收到期望遥测。
调试探测器812可以取消订阅设备的遥测数据(1016)。调试探针812可以验证是否正确处理了对于测试订阅的取消订阅请求并且不再接收到遥测数据。
图11是示出根据本公开的一个或多个方面的用于对于警报服务使用调试探针生成来定位错误的操作的流程图。在一些方面,调试探针812可以生成警报规则并且验证警报的端到端路径。
调试探测器812可以通过将测试警报规则意图提交给警报服务 144来应用测试警报规则定义(1102)。测试警报规则意图可以是表示关于测试警报规则的意图的高级表达的数据。例如,测试警报规则意图可以是“如果集群中的网络使用高于1MB/s,则通知”。警报规则意图编译器842可以将意图的高级表达转换为一个或多个较低警报规则。在该示例中,警报规则意图编译器842可以根据测试警报规则意图自动生成两个警报规则:
1.如果M个监测窗口中的N个的/network/ingress/bit_rate高于 1MB/s,则对系统中的所有设备发出警报
2.如果M个监测窗口中的N个的/network/egress/bit_rate高于 1MB/s,则对系统中的所有设备发出警报
调试探针812可以验证测试警报规则意图是否被警报规则意图编译器 842正确地编译(1104)。例如,调试探测器812可以比较应当从已知测试警报规则意图生成的已知警报规则。
在已经编译测试警报规则意图之后,可以将所生成的警报规则分配给警报规则执行引擎的一个或多个实例。调试探针812可以验证由警报规则意图编译器842生成的警报规则已经被分配给警报规则执行引擎的实例(1106)。另外,在将测试警报规则意图编译成警报规则之后,警报规则意图编程器844将规则编程到一个或多个警报规则执行引擎846中。调试探针812可以验证警报规则实际上已经被编程到至少一个警报规则执行引擎中(1108)。
警报规则执行引擎846基于由警报规则指定的数据和设备来订阅遥测数据。调试探针812可以验证已经供应遥测服务142组件,并且警报规则执行引擎已经订阅由所生成的警报规则指定的遥测数据 (1110)。
调试探针812可以验证警报规则处理(1112)。例如,调试探针 812可以生成应当足以触发警报的条件。对于示例测试警报规则意图,调试探针812可以生成足够的网络业务以触发警报。调试探针812可以验证它是否接收到由遥测警报规则意图指定的预期警报通知(1114)。
对于本文中(包括在任何流程图或流程图中)描述的过程、装置和其他示例或说明,本文中描述的任何技术中包括的某些操作、动作、步骤或事件可以按照以不同顺序执行,可以完全添加、合并或省去(例如,并非所有描述的动作或事件对于实施该技术都是必需的)。此外,在某些示例中,操作、动作、步骤或事件可以例如通过多线程处理、中断处理或多个处理器同时而不是顺序地执行。即使未明确标识为自动执行,其他某些操作、动作、步骤或事件也可以自动执行。而且,被描述为自动执行的某些操作、动作、步骤或事件可以备选地不自动执行,而是在一些示例中,这样的操作、动作、步骤或事件可以响应于输入或另一事件而执行。
本文中包括的附图各自示出了本公开的一方面的至少一个示例实现。然而,本公开的范围不限于这样的实现。因此,除了附图中所示的之外的在本文中描述的系统、方法或技术的其他示例或替代实现在其他情况下可能是合适的。这样的实现可以包括在附图中包括的设备和/或组件的子集,和/或可以包括在附图中未示出的附加设备和/或组件。
上面阐述的详细描述旨在作为各种配置的描述,而非旨在表示可以实践本文中描述的概念的唯一配置。为了提供对各种概念的充分理解,详细描述包括特定细节。但是,可以在没有这些特定细节的情况下实践这些概念。在某些情况下,公知的结构和组件在附图中以框图形式示出了,以避免使这些概念模糊。
因此,尽管可以参考特定附图描述各种系统、设备和/或组件的一个或多个实现,这样的系统、设备和/或组件但是可以按照多种不同方式而被实现。例如,在本文中的附图(例如,图1、2、3A、3B和/ 或4)中示出为单独的设备的一个或多个设备可以备选地被实现为单个设备;例如,示出为单独组件的一个或多个组件可以备选地被实现为单个组件。而且,在一些示例中,在本文中的附图中生成为单个设备的一个或多个设备可以备选地被实现为多个设备;示出为单个组件的一个或多个组件可以备选地被实现为多个组件。这样的多个设备和 /或组件中的每个可以经由有线或无线通信直接耦合,和/或经由一个或多个网络远程耦合。此外,一个或多个模块可以彼此交互和/或结合操作,以使得例如一个模块用作另一模块的服务或扩展。而且,存储设备内示出的每个模块、数据存储库、组件、程序、可执行文件、数据项、功能单元或其他项可以包括未示出的多个组件、子组件、模块、子模块、数据存储库和/或其他组件或模块或数据存储库(未示出)。而且,可以在本文中的各个附图中示出的一个或多个设备或组件可以备选地被实现为在这样的附图中未示出的另一设备或组件的一部分。以这种和其他方式,本文中描述的一些功能可以通过两个或更多个设备或组件的分布式处理来执行。
存储设备内示出的每个模块、数据存储库、组件、程序、可执行文件、数据项、功能单元或其他项可以按照各种方式而被实现。例如,存储设备内示出的每个模块、数据存储库、组件、程序、可执行文件、数据项、功能单元或其他项可以被实现为可下载或预先安装的应用或“app/APP”。在其他示例中,存储设备内示出的每个模块、数据存储库、组件、程序、可执行文件、数据项、功能单元或其他项可以被实现为在计算设备上执行的操作系统的一部分。
此外,某些操作、技术、特征和/或功能在本文中可以描述为由特定组件、设备和/或模块执行。在其他示例中,这样的操作、技术、特征和/或功能可以由不同的组件、设备或模块执行。因此,在其他示例中,可以在本文中描述为归因于一个或多个组件、设备或模块的一些操作、技术、特征和/或功能可以归因于其他组件、设备和/或模块,即使本文中没有以这种方式具体描述。
尽管已经结合一些示例的描述标识出了特定的优点,但是各种其他示例可以包括所列举的优点中的一些、全部或没有一个。从本公开中,技术或其他方面的其他优点对于本领域的普通技术人员可能变得很清楚。此外,尽管本文中已经公开了特定示例,但是本公开的各个方面可以使用任何数目的技术而被实现,无论当前是否已知,并且因此,本公开不限于本公开中具体描述和/或示出的示例。
在一个或多个示例中,所描述的功能可以按照硬件、软件、固件或其任何组合而被实现。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上和/或通过计算机可读介质传输并且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质(其对应于诸如数据存储介质等有形介质)、或者通信介质(其包括有助于将计算机程序从一个地方转移到另一地方(例如,根据通信协议)的任何介质)。以这种方式,计算机可读介质通常可以对应于(1)非暂态的有形的计算机可读存储介质,或者(2)诸如信号或载波等通信介质。数据存储介质可以是可以由一个或多个计算机或一个或多个处理器访问以取回指令、代码和/或数据结构以实现本公开中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。
作为示例而非限制,这种计算机可读存储介质可以包括RAM、 ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁性存储设备、闪存、或者可以用于以指令或数据结构形式存储期望的程序代码并且可以由计算机访问的任何其他介质。而且,任何连接都适当地被称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或无线技术(诸如红外、无线电和微波) 从网站、服务器或其他远程源发送指令,则介质的定义包括同轴电缆、光纤电缆、双绞线、DSL或无线技术(诸如红外、无线电和微波等)。但是,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他瞬态介质,而是涉及非暂态的有形的存储介质。所使用的磁盘和光盘包括压缩盘(CD)、激光盘、光盘,数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式复制数据,而光盘则通过激光以光学方式复制数据。上述的组合也应当被包括在计算机可读介质的范围内。
指令可以由一个或多个处理器执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)、或其他等效的集成或分立逻辑电路系统。因此,本文中使用的术语“处理器”或“处理电路系统”可以分别指任何前述结构或适合于实现所描述的技术的任何其他结构。另外,在一些示例中,所描述的功能可以在专用硬件和/或软件模块内提供。同样,该技术可以在一个或多个电路或逻辑元件中完全实现。
本公开的技术可以在各种各样的设备或装置中实现,包括无线手机、移动或非移动计算设备、可穿戴或不可穿戴计算设备、集成电路 (IC)或一组IC(例如,芯片组)在内的多种设备或装置中实现。本公开中描述了各种组件、模块或单元以强调被配置为执行所公开技术的设备的功能方面,但不一定需要由不同硬件单元而被实现。而是,如上所述,各种单元可以组合在硬件单元中,或者由互操作的硬件单元(包括上述一个或多个处理器)的集合与合适的软件和/或固件相结合来提供。
Claims (20)
1.一种用于在虚拟化计算基础设施中提供遥测服务的方法,所述方法包括:
由一个或多个处理器接收表示遥测数据收集意图的数据;
由所述一个或多个处理器将表示所述遥测数据收集意图的所述数据转换为一个或多个抽象遥测配置参数;
由所述一个或多个处理器从表示所述遥测收集意图的所述数据确定所述虚拟化计算基础设施的设备集合;
由所述一个或多个处理器获取针对所述设备集合的设备能力信息,所述设备能力信息针对所述设备集合中的每个设备包括所支持的遥测协议;以及
对于所述设备集合中的每个设备,基于所述抽象遥测配置参数来配置所述设备,并且基于所述设备的所述所支持的遥测协议来将所述设备分配给多个遥测收集器的实例。
2.根据权利要求1所述的方法,其中基于所述抽象遥测配置参数来配置所述设备包括:
基于所述设备的所述所支持的遥测协议和所述抽象遥测配置参数来确定平台特定的设备配置;以及
向所述设备提供所述平台特定的设备配置。
3.根据权利要求1所述的方法,其中将所述设备分配给所述多个遥测收集器的所述实例包括基于与所述多个遥测收集器的所述实例相关联的资源使用来分配所述设备。
4.根据权利要求1所述的方法,还包括:对于所述设备集合中的每个设备,针对所述设备和所述设备的所支持的遥测协议的每个组合维持状态机,所述状态机具有多个状态,其中所述多个状态中的状态指示所述遥测服务的组件相对于由所述遥测服务接收的、使用所述所支持的遥测协议针对所述设备收集遥测数据的请求的状态。
5.根据权利要求4所述的方法,还包括基于所述多个状态中的所述状态来生成错误代码。
6.根据权利要求4所述的方法,还包括:
接收多个错误代码,所述错误代码基于针对所述设备集合的所述多个状态机的一个或多个状态而被生成;
创建所述多个错误代码的多个集群;
基于所述多个错误代码的所述集群来确定一个或多个故障位置。
7.根据权利要求1至4中的任一项所述的方法,还包括:
从应用接收订阅针对所述设备集合中的选定设备的遥测数据的请求;
从数据库取回针对所述选定设备的遥测数据;以及
向所述应用提供所述遥测数据。
8.根据权利要求7所述的方法,还包括:
将针对所述遥测数据的数据元素的标签归一化,并且将所述数据元素的值归一化;以及
将所述数据元素的经归一化的所述值与经归一化的所述标签相关联地存储在所述数据库中;
其中从所述数据库取回针对所述选定设备的所述遥测数据包括取回所述数据元素的经归一化的所述值。
9.根据权利要求1至4中的任一项所述的方法,还包括:
响应于确定由所述遥测收集器的所述多个实例中的所述实例的资源利用超过阈值,跨所述遥测收集器的所述多个实例重新分配被分配给超过所述阈值的所述遥测收集器的所述多个实例中的所述实例的一个或多个设备。
10.根据权利要求1至4中的任一项所述的方法,还包括:
响应于确定所述遥测收集器的所述多个实例中的实例已经失败,将被分配给失败的所述遥测收集器的所述多个实例中的所述实例的一个或多个设备重新分配给所述遥测收集器的所述多个实例中的至少一个其他实例。
11.根据权利要求1至4中的任一项所述的方法,其中所述数据包括第一数据,并且其中所述遥测数据收集意图包括第一遥测数据收集意图,所述方法还包括:
接收表示第二遥测数据收集意图的第二数据;
将表示所述第一遥测数据收集意图的所述第一数据与表示所述第二遥测数据收集意图的所述第二数据组合,以创建遥测数据收集意图的并集。
12.一种遥测服务系统,包括:
设备管理服务,被配置为发现虚拟化计算基础设施中的多个设备,并且确定针对所述多个设备中的每个设备的设备能力信息;
遥测控制器,被配置为:
接收表示遥测数据收集意图的数据,
将表示所述遥测数据收集意图的所述数据转换为一个或多个抽象遥测配置参数,
从表示所述遥测收集意图的所述数据确定多个设备的设备集合,
从所述设备管理服务获取针对所述设备集合中的每个设备的所述设备能力信息,所述设备能力信息针对所述设备集合中的每个设备包括所支持的遥测协议,以及
对于所述设备集合中的每个设备,基于所述抽象遥测配置参数来配置所述设备,并且基于所述设备的所述所支持的遥测协议来将所述设备分配给多个遥测收集器的实例。
13.根据权利要求12所述的遥测服务系统,其中为了基于所述抽象遥测配置参数来配置所述设备,所述遥测控制器被配置为:
基于所述设备的所述所支持的遥测协议和所述抽象遥测配置参数来确定平台特定的设备配置;以及
向所述设备提供所述平台特定的设备配置。
14.根据权利要求12所述的遥测服务系统,其中所述遥测控制器还被配置为基于与所述多个遥测收集器的所述实例相关联的资源使用来将所述设备分配给所述多个遥测收集器的所述实例。
15.根据权利要求12所述的遥测服务系统,其中所述遥测控制器还被配置为对于所述设备集合中的每个设备,针对所述设备和所述设备的所支持的遥测协议的每个组合维持状态机,所述状态机具有多个状态,其中所述多个状态中的状态指示所述遥测服务的组件相对于由所述遥测服务接收的、使用所述所支持的遥测协议针对所述设备收集遥测数据的请求的状态。
16.根据权利要求15所述的遥测服务系统,还包括健康监测器,所述健康监测器被配置为:
接收多个错误代码,所述错误代码基于针对多个设备的所述多个状态机的一个或多个状态而被生成;
创建所述多个错误代码的多个集群;
基于所述多个错误代码的所述集群来确定一个或多个故障位置。
17.根据权利要求12至15中的任一项所述的遥测服务系统,还包括:
遥测订阅服务,所述遥测订阅服务被配置为:
从应用接收订阅针对所述设备集合中的选定设备的遥测数据的请求;
从数据库取回针对所述选定设备的遥测数据;以及
向所述应用提供所述遥测数据。
18.根据权利要求17所述的遥测服务系统,其中所述遥测收集器还被配置为:
将针对所述遥测数据的数据元素的标签归一化,并且将所述数据元素的值归一化,其中针对所述数据元素的经归一化的所述标签跨所述多个遥测收集器是一致的;以及
将所述数据元素的经归一化的所述值与经归一化的所述标签相关联地存储在所述数据库中;
其中为了取回针对所述选定设备的所述遥测数据,所述遥测订阅服务被配置为取回所述数据元素的经归一化的所述值。
19.根据权利要求12至15中的任一项所述的遥测服务系统,其中所述遥测控制器还被配置为:
响应于由所述遥测收集器的所述多个实例中的实例的资源利用超过阈值的确定,跨所述遥测收集器的所述多个实例重新分配被分配给超过所述阈值的所述遥测收集器的所述多个实例中的所述实例的一个或多个设备。
20.一种计算机可读存储介质,编码有用于引起一个或多个可编程处理器执行根据权利要求1至11中的任一项所述的方法的指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/947,930 US20220058042A1 (en) | 2020-08-24 | 2020-08-24 | Intent-based telemetry collection service |
US16/947,930 | 2020-08-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114185637A true CN114185637A (zh) | 2022-03-15 |
Family
ID=73448895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011267402.XA Pending CN114185637A (zh) | 2020-08-24 | 2020-11-13 | 基于意图的遥测收集服务 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220058042A1 (zh) |
EP (1) | EP3961987A1 (zh) |
CN (1) | CN114185637A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117499219A (zh) * | 2023-12-26 | 2024-02-02 | 苏州元脑智能科技有限公司 | 网络数据的处理方法及装置、存储介质及电子设备 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113938403A (zh) * | 2020-07-13 | 2022-01-14 | 华为技术有限公司 | 一种能力通告方法及相关设备 |
US11336504B2 (en) | 2020-08-24 | 2022-05-17 | Juniper Networks, Inc. | Intent-based distributed alarm service |
EP4102804A1 (en) * | 2021-06-10 | 2022-12-14 | Juniper Networks, Inc. | Metric collection based on device characteristic information |
US11516067B1 (en) | 2021-06-10 | 2022-11-29 | Juniper Networks, Inc. | Collecting metric information by sensors based on device characteristic information |
US11677810B2 (en) * | 2021-07-23 | 2023-06-13 | International Business Machines Corporation | Configuration tool for deploying an application on a server |
US11888719B2 (en) * | 2022-05-13 | 2024-01-30 | Cisco Technology, Inc. | End-to-end distributed network tracing involving cloud edge networks |
US11882012B2 (en) | 2022-05-13 | 2024-01-23 | Cisco Technology, Inc. | End-to-end distributed tracing with external telemetry data |
US11991060B2 (en) * | 2022-06-23 | 2024-05-21 | Charter Communications Operating, Llc | System and methods for providing real-time network telemetry data |
US11558254B1 (en) * | 2022-06-23 | 2023-01-17 | Kong Inc. | Configuration hash comparison |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6856257B1 (en) * | 2002-04-12 | 2005-02-15 | Gellnet Innovations, Inc. | Data collection and metering system |
US7013331B2 (en) * | 2002-12-20 | 2006-03-14 | Nokia, Inc. | Automated bulk configuration of network devices |
EP2035270B1 (en) * | 2006-06-26 | 2013-08-07 | MOSAID Technologies Inc. | Method, apparatus, signals, and media, for selecting operating conditions of a genset |
US9100417B2 (en) * | 2007-09-12 | 2015-08-04 | Avaya Inc. | Multi-node and multi-call state machine profiling for detecting SPIT |
JP6003350B2 (ja) * | 2012-07-30 | 2016-10-05 | 富士通株式会社 | 監視装置、情報処理装置、及び監視方法 |
US20180006900A1 (en) * | 2016-06-29 | 2018-01-04 | Microsoft Technology Licensing, Llc | Predictive anomaly detection in communication systems |
US10572306B2 (en) * | 2016-09-14 | 2020-02-25 | Cloudera, Inc. | Utilization-aware resource scheduling in a distributed computing cluster |
US11018959B1 (en) * | 2016-10-15 | 2021-05-25 | Rn Technologies, Llc | System for real-time collection, processing and delivery of data-telemetry |
US10917706B2 (en) * | 2016-12-15 | 2021-02-09 | Microsoft Technology Licensing, Llc | Configurable IoT device data collection |
US10713079B2 (en) * | 2018-06-25 | 2020-07-14 | Nutanix, Inc. | System and method for managing telemetry data and agents in a telemetry system |
CN111125208A (zh) * | 2018-10-30 | 2020-05-08 | 华为技术有限公司 | 一种数据采集处理方法、装置及系统 |
US10922123B2 (en) * | 2018-12-12 | 2021-02-16 | Microsoft Technology Licensing, Llc | Container migration in computing systems |
US10880210B2 (en) * | 2018-12-26 | 2020-12-29 | Juniper Networks, Inc. | Cloud network having multiple protocols using virtualization overlays across physical and virtualized workloads |
US10911329B2 (en) * | 2019-05-13 | 2021-02-02 | Cisco Technology, Inc. | Path and cadence optimization for efficient data collection from devices |
EP4270172A3 (en) * | 2019-06-05 | 2024-01-10 | Google LLC | Action validation for digital assistant-based applications |
US11388769B2 (en) * | 2019-06-18 | 2022-07-12 | Qualcomm Incorporated | Techniques for communicating management information for mechanisms using wireless communications |
US11682307B2 (en) * | 2020-07-07 | 2023-06-20 | Honeywell International Inc. | Situation-aware, intelligent data-synchronization methods for UAV-inspection applications |
-
2020
- 2020-08-24 US US16/947,930 patent/US20220058042A1/en active Pending
- 2020-11-13 EP EP20207476.1A patent/EP3961987A1/en active Pending
- 2020-11-13 CN CN202011267402.XA patent/CN114185637A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117499219A (zh) * | 2023-12-26 | 2024-02-02 | 苏州元脑智能科技有限公司 | 网络数据的处理方法及装置、存储介质及电子设备 |
CN117499219B (zh) * | 2023-12-26 | 2024-04-02 | 苏州元脑智能科技有限公司 | 网络数据的处理方法及装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20220058042A1 (en) | 2022-02-24 |
EP3961987A1 (en) | 2022-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3961987A1 (en) | Intent-based telemetry collection service | |
US11336531B2 (en) | Discovery and management of devices | |
US11645309B2 (en) | Discovery of database and related services | |
EP3899720B1 (en) | Discovery of software bus architectures | |
US11307967B2 (en) | Test orchestration platform | |
US11281476B2 (en) | Plugin framework to support zero touch management of heterogeneous infrastructure elements across distributed data centers | |
JP7217816B2 (ja) | クラウドベースサービスのプログラムオーケストレーション | |
US11765014B2 (en) | Intent-based distributed alarm service | |
KR102486236B1 (ko) | 무선 통신 시스템에서 네트워크 기능 가상화를 위한 장치 및 방법 | |
CN111970158B (zh) | 边缘接入的处理系统、方法、装置及设备 | |
US11520621B2 (en) | Computational instance batching and automation orchestration based on resource usage and availability | |
CN113923122A (zh) | 得出网络设备和主机连接 | |
US11652702B2 (en) | Configuring a software as-a-service platform for remotely managing a cloud application | |
US11418586B2 (en) | Load balancing of discovery agents across proxy servers | |
EP4161016A1 (en) | Storing configuration data changes to perform root cause analysis for errors in a network of managed network devices | |
US20240070002A1 (en) | Hang detection models and management for heterogenous applications in distributed environments | |
Ghoreishi Takantapeh | INNOVATIVE MONITORING SYSTEMS AND PROTOCOLS FOR WIRELESS NETWORKS AND WIRELESS SENSOR NETWORKS | |
US20240095099A1 (en) | Decentralized framework for providing application programming interface gateways | |
US20240022640A1 (en) | Rapid Error Detection through Command Validation | |
CN118119927A (zh) | 用于针对检测到的事件推荐运行手册的方法和系统 | |
CN118119926A (zh) | 基于候选运行手册的结果与事件的补救的相关性推荐候选运行手册 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |