在一个或多个虚拟机中生成应用级依赖的系统和方法技术方案

技术编号:8834143 阅读:185 留言:0更新日期:2013-06-22 20:24
一种在一个或多个虚拟机(VM)中生成应用级依赖的技术。VM监视器中的拦截模块拦截处于TCP发送和关闭相关的操作中的客户机操作系统(OS)。VM监视器中的内省模块通过检查运行的线程和处理套件内核对象来对于TCP连接和线程信息执行VM内省。它产生应用轨迹并从该应用轨迹输出用于已选择的应用的应用依赖。

【技术实现步骤摘要】

本公开一般涉及用于在一个或多个虚拟机中生成应用级依赖(dependency)的系统和方法。
技术介绍
企业服务通常由许多业务服务器和/或网络组成。随着网络增长和成熟的计算虚拟化技术的进展,企业应用变得更复杂。例如,由于云计算,更多用户应用从个人计算机移动到虚拟数据中心(VDC)中,最终用户通过请求由数据中心的业务服务器提供的业务来使用远程应用。分布式应用变得更强大和全面。单个节点的性能问题或失败会影响整个分布式系统的服务质量(QoS)。与硬件故障或资源耗尽相比较,软件问题很难检测。因此,期待分布式应用的性能管理。一种用于应用发现的当前技术是通过监视应用事件。此技术在每个物理服务器上安装代理。该代理监视由应用报告的事件,并且将事件转发到中心应用管理服务器。随后,应用管理服务器在数据中心中分析应用事件、发现在数据中心上运行的应用、并找到应用之间的依赖。用于应用依赖发现的一种当前技术是装备Java字节代码的中间件软件。装备的代码跟踪通过中间件的请求并且将跟踪日志发送到中心应用管理服务器。随后应用管理服务器分析这些日志、得知应用之间的消息交换、并发现应用之间的依赖。此技术在通过装备的中间件进行通信的分布式应用上工作。用于应用依赖发现(application dependency discovery)的一种当前技术是发觉(sniff)每个物理服务器上的网络通信量。此技术在每个物理服务器上安装代理以发觉到此服务器或来自此服务器的网络通信量,并且将通信量日志发送到中心应用服务器。应用服务器分析这些通信量日志并生成物理服务器之间的应用依赖(applicationdependency)。图1示出通过在每个物理服务器上发觉网络通信量而生成的应用依赖的示例。在该示例中,交换客户端(client)应用通过公知的域名系统(DNS)端口 53连接到一个服务器、通过公知的活动目录(AD)端口 88、135、1024、389连接到另一服务器、并且通过公知的邮箱端口 135连接到另一服务器。可以如图1所示生成交换客户端应用的应用依赖图(dependency map)。可以如下描述用于应用、进程和线程的术语的背景。应用是在物理机器或虚拟机(VM)上运行的可执行计算机软件。应用可以在操作系统(OS)中创建一个或多个进程。进程是在OS中的运行环境的为了运行用户应用的基本单位。此运行环境分配来自OS的资源并且拥有资源,从而在进程中运行的线程可以共享这些资源。资源可以包括存储器、开放文件的描述符、开放网络连接等等。线程是在计算机系统中执行控制的基本单位。可能存在在进程的运行环境中运行的一个或多个线程。一个应用可以创建许多进程以在物理服务器上提供服务,并且每个进程可以创建共享由此进程占有的资源的一个或多个并行线程。利用每个进程中的一个单线程创建许多进程的应用被称作多进程应用。在一个进程中创建许多并行线程的应用是多线程应用。
技术实现思路
本公开的示范性实施例可以提供用于。一个示范性实施例涉及用于在一个或多个虚拟机(VM)中生成应用级依赖的系统。该系统包括在物理机器上运行的应用性能管理(APM)服务器、一个或多个拦截(intercepting)模块以及一个或多个内省(introspecting)模块。APM服务器接受请求并向至少一个转发守护进程(daemon)发送命令以开启所述一个或多个VM的至少一个相关的VM的检查状态,并且生成已选择的应用的应用轨迹并输出用于已选择的应用的应用依赖。每个拦截模块拦截在所述至少一个相关的VM上的处于传输控制协议(TCP)发送和关闭相关的操作中的客户机操作系统(guest OS、或称作虚拟计算机OS)。每个内省模块对于TCP连接和运行线程信息执行VM内省。另一示范性实施例涉及用于在一个或多个虚拟机(VM)中生成应用级依赖的计算机实现的方法。所述方法包括:在提供具有所述一个或多个VM的虚拟环境的一个或多个物理服务器的控制之下;拦截处于所述一个或多个VM的至少一个相关的VM的传输控制协议(TCP)发送和关闭相关的操作中的客户机操作系统(guest OS);对于TCP连接和运行线程信息执行VM内省;以及生成已选择的应用的应用轨迹并从用于已选择的应用的应用轨迹输出应用依赖。从以下利用附图的适当参考提供的详细说明的仔细理解阅读中,本公开的上述和其它特征以及方面将变得更容易理解。附图说明图1示出通过在每个物理服务器上发觉网络通信量而生成的应用依赖的示例。图2A示出根据示范性实施例的应用轨迹的示例。图2B示出根据示范性实施例的应用依赖图的示例。图2C示出根据示范性实施例的利用VM信息的应用依赖图的示例。图3A示出根据示范性实施例的、用于在一个或多个虚拟机中生成应用级依赖的系统的不意图。图3B示出根据示范性实施例的示出图3A的系统的详细操作的示范性环境。图4示出根据示范性实施例的、用于在虚拟化环境中生成应用级依赖的数据流的示意图。图5示出根据示范性实施例的三阶段方案的示意图。图6示出根据示范性实施例的、利用用于在虚拟化环境中生成应用级依赖的方法的图5的三个阶段。图7是示出根据示范性实施例的、选择拦截机制的决定的流程图。图8示出根据示范性实施例的、在TCP协议的关闭和发送函数中设置硬件断点的示意图。图9示出根据示范性实施例的、通过在VMM中复制映射SDT表来拦截TCP相关的系统调用的不意图。图10示出根据示范性实施例的、在用于运行线程和TCP连接信息的进程中内省Linux VM内核的数据结构的示例。图11示出根据示范性实施例的、每线程通信量日志的格式,以及日志在VMM中被生成并由转发守护进程转发到APM服务器。图12示出根据示范性实施例的、在多个客户机(guest) VM之间进行拦截并内省的VMM机制。图13示出根据示范性实施例的、将每线程通信量日志转换为线程间通信量日志并存储在日志数据库中的示例。图14示出根据示范性实施例的生成应用轨迹的示例。图15示出根据示范性实施例的、对于在时间段Ata期间的线程Ta生成应用轨迹的算法的流程图。图16A和图16B示出根据示范性实施例的、示出从应用轨迹生成应用依赖(GAD)的算法的操作流。图17示出根据示范性实施例的、示出在学习阶段中的VDC 1700中的增量式使能通信量日志的示例。具体实施例方式本示范性实施例公开了用于在虚拟化环境中使用VM检查来生成应用级依赖的技术。可以通过拦截VM运行和内省VM状态来执行VM检查。该技术拦截处于分组发送系统调用中的客户机OS、执行VM内省以得到运行线程和TCP连接信息、以及向服务器发送此通信量日志。基于线程的通信量日志在应用性能管理(APM)服务器中被进一步转换为线程间通信量日志。从线程间通信量日志可以生成两种输出。一种输出是线程粒度(threadgranuIarity)方面的应用轨迹,另一种输出是来自应用轨迹的精确的应用依赖图。应用轨迹由在它的出现时刻的应用之间的消息交换的列表组成。应用轨迹可以包括由此应用直接发送的消息和由其他应用间接地发送的消息,所述其他应用用于处理由此应用发送的消息。可以以树形数据结构存储应用轨迹。应用轨迹可以包括一个或多个结点、一个或多个链接以及一个或多个箭头。图2A示出根据示范性实施例的应用轨迹的示例。参照图2A,应用轨本文档来自技高网
...

【技术保护点】
一种用于在一个或多个虚拟机(VM)中生成应用级依赖的系统,包括:应用性能管理(APM)服务器,在物理机器上运行,用于接受请求并向至少一个转发守护进程发送命令以开启所述一个或多个VM的至少一个相关的VM的检查状态,并且生成已选择的应用的应用轨迹并输出用于所述已选择的应用的应用依赖;一个或多个拦截模块,其中每个拦截模块拦截在所述至少一个相关的VM上的处于传输控制协议(TCP)发送和关闭相关的操作中的客户机操作系统(OS);以及一个或多个内省模块,其中每个内省模块对于TCP连接和运行的线程信息执行VM内省。

【技术特征摘要】
2011.12.27 TW 100148887;2011.12.15 US 13/327,4071.一种用于在一个或多个虚拟机(VM)中生成应用级依赖的系统,包括: 应用性能管理(APM)服务器,在物理机器上运行,用于接受请求并向至少一个转发守护进程发送命令以开启所述一个或多个VM的至少一个相关的VM的检查状态,并且生成已选择的应用的应用轨迹并输出用于所述已选择的应用的应用依赖; 一个或多个拦截模块,其中每个拦截模块拦截在所述至少一个相关的VM上的处于传输控制协议(TCP)发送和关闭相关的操作中的客户机操作系统(OS);以及 一个或多个内省模块,其中每个内省模块对于TCP连接和运行的线程信息执行VM内省。2.如权利要求1所述的系统,其中所述每个内省模块通过检查客户机OS的运行的内核数据结构并得到一个或多个运行的线程和TCP连接信息,并且生成一个或多个每线程通信量日志以用于经由所述转发守护进程发送给所述APM服务器,来执行所述VM内省。3.如权利要求1所述的系统,其中所述每个拦截模块和所述每个内省模块两个都在相应的物理服务器上的相应VM监视器中,并且所述至少一个转发守护进程的相应的转发守护进程在所述相应的物理服务器上运行。4.如权利要求1所述的系统,其中所述APM服务器还包括: 通信量日志转换模块,用于将一个或多个每线程通信量日志转换为一个或多个线程间通信量日志;以及 依赖图生成模块,用于从所述一个或多个线程间通信量日志生成所述应用轨迹并从应用轨迹输出用于已选择的应用的应用依赖。5.如权利要求4所 述的系统,所述系统使用日志数据库以存储所述一个或多个线程间通信量日志。6.如权利要求1所述的系统,其中所述一个或多个每线程通信量日志中的每一个包含时间信息、线程信息、连接信息和方向。7.如权利要求4所述的系统,其中所述一个或多个线程间通信量日志中的每一个包含时间信息、发送器线程信息、接收器线程信息和方向。8.如权利要求1所述的系统,其中所述应用轨迹记录从一个应用开始的多个应用之间的消息交换和时间段。9.如权利要求1所述的系统,其中所述应用轨迹以树形数据结构存储,所述树形数据结构从根节点开始,并且包括一个或多个结点、一个或多个链接和一个或多个箭头,在应用轨迹中的结点指示在一时间段期间到应用的消息交换,在应用轨迹中的链接指示两个应用之间的直接消息交换,在所述轨迹中的箭头指示两个应用之间的连接的方向。10.如权利要求1所述的系统,其中所述应用依赖是以树形数据结构表示的应用依赖图。11.如权利要求1所述的系统,其中所述APM服务器使用增量启动模块来逐渐使能相关的VM的检查状态直到至少一个相关的VM的检查状态被开启。12.一种用于在一个或多个虚拟机(VM)中生成应用级依赖的计算机实现的...

【专利技术属性】
技术研发人员:阙志克林浩澄
申请(专利权)人:财团法人工业技术研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1