应用性能数据的预测性汇总和缓存的制作方法

文档序号:16360799发布日期:2018-12-22 08:09阅读:160来源:国知局
应用性能数据的预测性汇总和缓存的制作方法

为了追求最高水平的服务性能和用户体验,世界各地的公司都通过增加对数字技术和信息技术(it)服务的投资来进行数字化转型。通过利用因特网和万维网提供的互联计算机网络的全球系统,公司能够向其客户提供不断增加的网络服务。网络服务可以由使用多个服务和应用以处理给定事务的网络应用来提供。应用可以分布在若干个互连的机器上,比如服务器,使得提供服务的机器的拓扑更难以跟踪和监测。



技术实现要素:

公开了用于预测性汇总并缓存应用性能数据的实施方式的实例。

在一个方面,公开了一种用于在受监测环境中预取性能数据的系统。所述系统可以包括处理器;存储器;以及存储在所述存储器中的一个或多个模块。所述一个或多个模块可由处理器运行以执行包括以下各项的操作:记录请求延迟超过阈值的应用性能数据的查询;学习延迟超过所述阈值的所述记录的查询的访问模式;在下次请求相同的记录的查询之前,预取并缓存记录的查询所请求的应用性能数据;并且当下次请求相同的记录的查询时,从所述缓存提供所述预取的应用性能数据。

该系统可以以各种方式实施以包括一个或多个以下特征。例如,存储在存储器中的一个或多个模块可以由处理器运行以执行包括以下各项的操作:确定新的流式传输的性能数据与所述预取并缓存的性能数据相关;并且使所述预取并缓存的数据附上被确定为相关的新的流式传输的性能数据。存储在所述存储器中的一个或多个模块可由所述处理器执行以通过进行包括以下各项的操作来预取并缓存应用性能数据:识别性能数据的类型;识别所述记录的查询所授权的汇总过程;并且使用所述识别的汇总过程预处理所识别的性能数据类型。所述汇总过程可以包括微小间隔的原始数据、平均每小时的数据、平均每日的数据、平均每周的数据、平均每月的数据或平均每年的数据。访问模式可以包括每小时、每日、每周、每月或每年访问。所述应用性能数据可以包括完成商业事务所需的时间。所述应用性能数据可以包括访问数据库所需的时间。所述应用性能数据可以包括资源使用率。

在另一方面,公开了一种用于在监测环境中预取性能数据的方法。所述方法可以包括:接收与所述受监测环境相关联的应用性能数据的查询;确定接收到的查询的延迟是否超过阈值;基于确定所接收的查询的延迟超过所述阈值来记录所述查询;学习所述延迟比所述阈值长的记录的查询的访问模式;在下次请求相同的记录查询之前预取并缓存由所述记录的查询请求的所述应用性能数据;当下次请求相同的记录查询时,从所述缓存提供所述预取的应用性能数据;并且基于在请求同一记录的查询时的下一个时间期间获得的数据来更新所述学习的访问模式。

所述方法可以以各种方式实施以包括以下特征的一个或多个。例如,所述方法可以包括:确定新的流式传输的性能数据是否与所述预取并缓存的性能数据相关;并且使所述预取并缓存的数据附上被确定为相关的所述新的流式传输的性能数据。所述方法可以包括:识别性能数据的类型;识别所述记录的查询所授权的汇总过程;并且使用所述识别的汇总过程预处理所识别的性能数据类型。所述汇总过程可以包括微小间隔的原始数据、平均每小时的数据、平均每日的数据、平均每周的数据、平均每月的数据或平均每年的数据。访问模式可以包括每小时、每日、每周、每月或每年访问。所述应用性能数据可以包括完成商业事务所需的时间。所述应用性能数据可以包括访问数据库所需的时间。所述应用性能数据可以包括资源使用率。

在又一方面,公开了一种在由处理器运行时实施指令以使得执行操作的非暂态计算机可读介质。所述操作包括:记录延迟超过阈值延迟的请求性能数据的查询;学习所述延迟比所述阈值长的记录的查询的访问模式;在下次请求相同的记录查询之前预取并缓存由所述记录的查询请求的所述应用性能数据;并且当下次请求相同的记录查询时,从所述缓存提供所述预取的应用性能数据。

所述非暂态计算机可读介质可以以各种方式实施以包括以下特征中的一个或多个。例如,所述操作可以包括基于在请求同一记录的查询时的下一个时间期间获得的数据来更新所述学习的访问模式。所述操作可以包括:确定新的流式传输的性能数据是否与所述预取并缓存的性能数据相关;并且使所述预取并缓存的数据附上被确定为相关的所述新的流式传输的性能数据。所述操作可以包括:识别性能数据的类型;识别所述记录的查询所授权的汇总过程;并且使用所述识别的汇总过程预处理所识别的性能数据类型。所述汇总过程可以包括微小间隔的原始数据、平均每小时的数据、平均每日的数据、平均每周的数据、平均每月的数据或平均每年的数据。访问模式可以包括每小时、每日、每周、每月或每年访问。

附图说明

图1a是示出用于预测性汇总并缓存应用性能数据的示例性技术的过程流程图。

图1b是示出用于将性能数据从最大粒度汇总到最小粒度的示例性技术的框图。

图1c是示出用于在峰值访问时间之前预取相关性能数据的示例性技术的过程流程图。

图1d是示出用于附上新的流式传输的性能数据的示例性过程的过程流程图。

图2是示例性应用智能平台的框图,该平台可以使用所公开的技术实施预测性汇总并缓存应用性能数据,包括关于图1a到1d公开的过程。

图3是使用所公开的技术实施预测性汇总并缓存应用性能数据的应用智能平台的示例性实施方式的框图,包括关于图1a到1d公开的过程。

图4是实施所公开技术的示例性计算系统的框图。

具体实施方式

随着受监测应用环境的复杂性增加,应用智能平台允许监测越来越多的应用性能数据。应用智能平台允许用户基于近实时或历史应用性能数据创建许多仪表板和警报规则。由于规模庞大的受监测的应用性能数据,仅部分数据能够以用户希望查看数据的形式从原始数据被预处理(汇总),并且仅部分数据被缓存在存储器中,并且可以容易地提供给用户界面客户端。有时,由于繁重处理数据后端中请求的数据,最终用户在加载仪表板时经历长时间延迟,或者警报规则无法及时完成评估性能数据并根据需要及时向最终用户发出警报。

该专利文件中公开的技术提供动态且高效的应用智能平台、系统、装置、方法和计算机可读介质(包括非暂态类型的计算机可读介质),它们实施用于使包括处理器的机器执行本专利文件中公开的各种操作来获得所需的应用智能数据的指令。具体地,所公开的技术提供了预测性地汇总并缓存应用性能数据。通过使用机器学习应用性能数据的用户查询请求,可以预测并预处理或预取给定用户最可能请求的应用性能数据,以便在接收到查询之前可以准备好向用户显示所需的应用性能数据。机器学习监测随时间请求的查询的历史,以识别每个查询的模式。基于所识别的模式,某些查询结果在预期的查询请求之前被预取。

预测性地汇总并缓存应用性能数据的能力可以提供许多优点。例如,由于后端处理缓慢导致的迟钝的用户界面(ui)是用户受挫并且可能有损客户忠诚度的主要原因之一。寻找使系统快速反应的创新方法与产品发布中包含的功能同样重要。此外,通过识别所请求的查询中的模式,可以识别请求最多的查询以确定应该存储哪些应用性能数据。由于每天采集大量数据,存储资源分配是应用性能监测系统中的主要成本负担。除了识别最重要的应用性能数据以预取并存储之外,还可以应用预测性机器学习来确定每个应用性能数据可以存储多长时间。例如,某些应用性能数据可以在短时间内简单地缓存,而不是在较长时间内归档。此外,可以基于查询请求的预测性机器学习来减少必须被缓存或存档的实际数据量。

应用性能数据技术的预测性汇总和缓存

图1a、1b、1c和1d是示出用于预测性汇总并缓存应用性能数据的示例性技术(比如方法100)的过程流程图和框图。在应用智能平台中,部署代理以监测应用环境中的各种性能数据。部署的代理将监测的应用性能数据发送到控制器,以处理和存储监测的数据。当代理采集越来越多的监测数据时,所公开的用于预测性汇总并缓存应用性能数据的技术可以用于预取所需的应用性能数据并在接收到请求之前缓存预取的数据。关于图1a示出并描述的技术或方法100可以与来自图1b、1c和1d的任何数量的附加技术和子技术组合。另外,尽管可能,并非关于图1b、1c和1d所示并描述的所有附加技术和子技术需要一起执行,并且任何附图中示出的技术可以与任何其他的一个或多个图中的技术组合。

应用性能数据技术100的预测性汇总和缓存可以由监测应用环境的每个代理(比如相应的服务器机器)来执行。下面参考图2、图3和图4描述根据所公开的技术的包括彼此通信的代理和控制器的应用智能架构。以这种方式,每个代理可以执行针对受监测的机器的应用性能数据的预测性汇总和缓存。因此,至少一些受监测的数据处理和智能可以被推送到代理,而不是仅在控制器处执行。在一些实施方式中,可以在控制器处为所有代理执行应用性能数据的预测性汇总和缓存。

如图1a所示,用于预测性汇总和缓存应用性能数据的过程100包括记录基于预设阈值以上的延迟(返回查询结果所需的时间)被确定为资源昂贵的应用性能数据的查询(102)。根据记录的昂贵查询(expensivequeries),学习昂贵查询的访问模式(104)。访问模式可以包括每小时、每日、每周或每月模式。例如,访问模式指示何时每小时、每天、每周或每月访问同一查询。附加访问模式可以指示在一天、一周或一个月的特定时间访问同一查询。例如,用户可以总是每天早上8点查询最高资源消耗过程,这大概是用户一旦到达工作就采取的第一个动作。即使没有完全在每天的同一时间执行同一查询,也可以在每天的特定时间段之间请求同一查询。基于所确定的访问模式,相关的应用性能数据以预测的昂贵查询在峰值使用时间之前授权的方式被预取和缓存(106)。通过在预测的请求时间之前预取相关的性能数据,可以立即将相关数据返回给用户进行显示。

图1b是示出用于汇总从最大粒度到最小粒度的应用性能数据不同示例性过程120的框图。在应用性能监测中,处理性能数据的默认方法是以最大粒度格式(例如,微小间隔)监测并记录原始数据(122)。然后一分钟一分钟的原始数据处理或“汇总”成下一个粒度格式(例如,每小时间隔)(124)。通过将每60分钟间隔数据平均为一小时数据来执行汇总成每小时格式。然后通过将24小时数据平均为下一个粒度格式(每日数据)来累计24小时数据(126)。通过将7天的数据平均为一周数据(128),可以将每日数据汇总为每周数据。通过将4周的数据平均为一个每月数据(130),可以将每周数据汇总成每月数据。通过将12个月的数据平均为1年的数据,可以将每月数据汇总成每年数据(132)。根据记录的昂贵查询,可能需要在峰值访问时间之前预处理任何数量的这些汇总,并且所得的性能数据被缓存在存储器中以备在请求实际查询时提供。

图1c是用于预测性地预取或预处理昂贵查询的示例性过程的过程流程图(106)。识别昂贵查询所请求的相关应用性能数据(108)。确定按照记录的昂贵查询所授权的方式(例如,每时、每天、每周、每月等)返回相关应用性能数据所需的汇总(110)。执行相关应用性能数据的所确定的汇总,并且在峰值访问时间之前将结果汇总的性能数据缓存在存储器中(112)。当在峰值访问时间期间实际请求昂贵查询时,可以立即将相关数据返回给用户,从而避免长时间延迟。

当上述卷起事件被默认执行时,需要存储非常大量的数据。通过使用如该专利文件中公开的性能数据的预测性汇总和缓存,系统可以减少所存储的数据量和所需的存储持续时间。例如,当预测性汇总和缓存技术100确定从未请求每年平均值的某些性能数据时,可能不需要保存每年汇总数据。

图1d是可以在技术100的操作期间执行的附加过程的过程流程图。当也有资格由那些预取的昂贵查询返回的新的性能数据被检测为流入到系统时(114),新的性能数据被处理并作为增量附加到已经存在于存储器内缓存中的预取结果(116)。这样,来自最终用户的对所请求的性能数据的请求可以从存储器内缓存中迅速提供并包括所有相关数据(118)。

应用智能平台架构

用于预测性汇总和缓存应用性能数据的所公开技术可以在控制器中或在一些实施方式中在应用智能平台的代理和控制器中实施。图2是可以实施本专利文件中公开的预测的示例性应用智能平台200的框图。应用智能平台是监测和采集受监测的应用环境的性能数据的度量的系统。在最简单的结构中,应用智能平台包括一个或多个代理210、212、214、216和一个或多个控制器220。虽然图2显示了通信链接到单个控制器的四个代理,但代理和控制器的总数可以根据许多因素而变化,这些因素包括监测的应用数量、应用环境如何分布、所需的监测级别、所需的用户体验水平等。

控制器和代理

控制器220是应用智能平台的中央处理和管理服务器。控制器220服务于基于浏览器的用户界面(ui)230,该用户界面是用于监测、分析和排除所监测环境的故障的主要界面。控制器220可以控制和管理分布在应用服务器上的商业事务的监测。具体地,控制器220可以从代理210、212、214、216和协调器接收运行时数据,关联商业事务数据的部分,与代理通信以配置运行时数据的集合,并且通过接口230提供性能数据和报告。代理210、212、214、216的代理可以包括相应的预取系统或模块242、244、246、248,用于执行本专利文件中公开的应用性能数据的预测性汇总和缓存。接口230可以被视为可由客户端设备240查看的基于网络的界面。在一些实施方式中,客户端设备240可以直接与控制器220通信以查看用于监测数据的接口。在通过组合来自多个代理的数据获得整体排名的一些实施方式中,控制器220可以包括预取系统或模块,以在接收到对预取数据的请求之前预测性地汇总和缓存(即,预取)来自多个代理的某些应用性能数据。例如,在具有多个机器的节点中,被分配给机器的每个代理可以使用本专利文件中公开的预测性机器学习技术预取机器特定的应用性能数据。控制器可以与多个代理通信,响应于对预取应用性能数据的请求来返回适当的预取应用性能数据。在一些实施方式中,应用可以接触多于一个机器,因此来自多个代理的应用性能数据可以由控制器组合在一起。

在软件即服务(saas)实施方式中,控制器实例220由应用智能平台200的提供者远程托管。在本地部署(on-prem)实施方式中,控制器实例220被本地安装并自我管理。

控制器220从不同代理210、212、214、216接收数据,这些代理被部署以监测受监测的环境的应用、数据库和数据库服务器、服务器和终端用户客户端。代理210、212、214、216中的任何一个可以被实施为不同类型的代理特定监测职责。例如,应用代理被安装在托管要监测的应用的每台服务器上。检测代理会将应用代理添加到应用的运行时进程中。

数据库代理是安装在具有对受监测数据库和控制器能够网络访问的机器上的软件(例如,java程序)。数据库代理查询受监测的数据库以采集度量并传递度量以在度量浏览器-数据库监测和控制器ui的数据库页面中显示。多个数据库代理可以向同一控制器报告。其他数据库代理可以被实施为备份数据库代理,以在故障或计划的机器停机期间接管主数据库代理。其他数据库代理可以在与主代理相同的机器上或不同的机器上运行。数据库代理可以被部署在受监测环境的每个不同网络中。多个数据库代理可以在同一机器上的不同用户帐户下运行。

独立机器代理是独立程序(例如,独立的java程序),这些独立程序从受监测环境中的服务器采集与硬件相关的性能统计信息。独立机器代理可以被部署在托管应用服务器、数据库服务器、消息服务器、网络服务器等的机器上。独立机器代理具有可扩展的架构。

通过使用浏览器代理和移动代理来执行最终用户监测(eum),以从客户端的角度提供性能信息,比如网络浏览器或移动本机应用。浏览器代理和移动代理与通过服务器上的应用代理、数据库代理和独立机器代理进行的其他监测不同。通过eum,可以根据监测需要来监测网络使用(例如,通过真实用户或合成代理)、移动使用或任何组合。

浏览器代理是使用基于网络的技术的小文件,比如被注入到每个仪表化网页中的javascript代理,尽可能靠近顶部,因为网页被提供服务并采集数据。一旦网页完成加载,采集的数据被捆绑到信标中并被发送到eum云以进行处理并准备好由控制器检索。浏览器真实用户监测(浏览器rum)从真实或合成最终用户的角度提供对网络应用性能的深入了解。例如,浏览器rum可以确定特定的ajax或iframe调用如何减慢页面加载时间以及服务器性能如何影响最终用户体验的总体或个别情况。

移动代理是可以添加到移动应用的源代码中的一小部分高性能代码。移动rum提供有关本机ios或android移动应用的信息,因为最终用户实际使用移动应用。移动rum提供移动应用本身的功能以及移动应用与所用网络的交互以及移动应用与之通信的任何服务器端应用的可见性。

应用智能监测

所公开的技术可以通过监测应用环境来提供应用智能数据,该应用环境包括各种服务,比如从应用服务器(例如,java虚拟机(jvm)、因特网信息服务(iis)、超文本预处理器(php)网络服务器)提供服务的网络应用、数据库或其他数据存储以及远程服务,比如消息队列和缓存。应用环境中的服务可以以各种方式交互以提供与应用的一组内聚用户交互,比如适用于最终用户客户的一组用户服务。

应用智能建模

应用环境中的实体(比如jboss服务、mqseries模块和数据库)以及实体提供的服务(比如登录事务、服务或产品搜索或购买事务)被映射到应用智能模型。在应用智能模型中,商业事务表示受监测环境提供的特定服务。例如,在电子商务应用中,特定的真实世界服务可以包括用户登录、搜索项目或向购物车添加项目。在内容门户中,特定的真实世界服务可以包括用户对比如体育、商业或娱乐新闻等内容的请求。在股票交易应用中,特定的真实世界服务可以包括操作,比如接收股票报价、购买或出售股票。

商业事务

受监测环境提供的特定服务的商业事务表示提供了参与处理特定请求的各层的上下文中的性能数据的视图。商业事务表示用于在受监测环境中完成服务请求的端对端处理路径。因此,商业环境是受监测环境中的一种用户启动的动作,该用户启动的动作由入口点和跨应用服务器、数据库以及可能的许多其他基础架构组件的处理路径定义。商业事务的每个实例都是响应特定用户请求的该事务的执行。可以通过检测入口点处的传入请求并跟踪与始发层以及应用环境中的跨分布式组件处的请求相关联的活动来创建商业事务。可以为商业事务生成流程图,该流程图显示应用环境中的商业事务的接触点。

性能监测可以通过商业事务来定向,以从最终用户的角度关注应用环境中的服务性能。基于商业事务的性能监测可以提供关于服务是否可用的、用户的响应时间以及问题发生时的问题原因的信息(例如,用户可以登录、签出或查看其数据)。

商业应用

商业应用是应用智能模型中的顶级容器。商业应用包含一组相关服务和商业事务。在一些实施方式中,可能需要单个商业应用来对环境建模。在一些实施方式中,应用环境的应用智能模型可以分成若干商业应用。可以根据应用环境的具体情况以不同方式组织商业应用。一个考虑因素是以反映特定组织中的工作团队的方式组织商业应用,因为控制器ui中的基于角色的访问控制由商业应用定向。

节点

应用智能模型中的节点对应于应用环境中的受监测服务器或jvm。节点是建模环境的最小单元。通常,节点对应于安装了监测代理的单个应用服务器、jvm或clr。每个节点在应用智能模型中识别自身。安装在节点上的代理被配置为指定代理向控制器报告数据的节点名称、层和商业应用。

商业应用包含层,即,包括包括一个或多个节点的应用智能模型中的单元。每个节点代表仪表化服务(比如网络应用)。虽然节点可以是应用环境中的独特应用,但在应用智能模型中,节点是层的成员,该层可能与许多其他层一起构成整个逻辑商业应用。

可以根据受监测应用环境的心智模型在应用智能模型中组织层。例如,可以将相同的节点分组为单个层(比如冗余服务器的集群)。在一些实施方式中,可以对任何相同或不同的节点集进行分组,以将某些性能度量作为一个单元处理成单个层。

商业应用中的流量在层之间流动,并且可以使用层之间的线在流程图中可视化。此外,指示层之间的流量流的线可以用性能度量标注。在应用智能模型中,单个层中的节点之间可能不存在任何交互。此外,在一些实施方式中,应用代理节点无法属于多于一个层。类似地,机器代理不能属于多于一个层。但是,可以在机器上安装多个机器代理。

后端系统

后端是参与商业事务实例处理的组件。后端不由代理进行仪表化。后端可以是网络服务器、数据库、消息队列或其他类型的服务。代理识别来自仪表化代码(称为退出调用)的对这些后端服务的调用。如果服务未被仪表化且无法继续调用的事务上下文,则代理会确定该服务是后端组件。代理在后端的响应处获取事务上下文,并继续从那里跟踪事务的上下文。

性能信息可以用于后端调用。对于由后端处理的事务的分支的详细事务分析,数据库、网络服务或其他应用需要被仪表化。

基线和阈值

应用智能平台使用自学习基线和可配置阈值来帮助识别应用问题。复杂的分布式应用具有大量性能指标,并且每个指标在一个或多个上下文中都很重要。在这样的环境中,难以确定特定度量的正常值或范围;设置有意义的阈值,基于该阈值并接收相关警报;并在应用或基础架构发生变化时确定什么是“正常”度量。由于这些原因,所公开的应用智能平台可以基于动态基线或阈值执行异常检测。

所公开的应用智能平台自动地计算受监测的度量的动态基线,从而基于实际使用来定义每个度量的“正常”水平。应用智能平台使用这些基线来识别其值超出此正常范围的后续度量。不再需要设置起来单调乏味并且在快速变化的应用环境中容易出错的静态阈值。

所公开的应用智能平台可以使用可配置的阈值来维护服务水平协议(sla),并通过检测缓慢、非常慢和停滞的事务来确保你的系统的最佳性能水平。可配置的阈值提供了一种灵活的方法来将正确的商业环境与缓慢的请求相关联,以隔离根本原因。

健康规则、政策和动作

此外,可以利用条件设置健康规则,这些条件使用动态生成的基线来触发警报,或在性能问题发生或即将发生时启动更加严格的补救措施。

例如,动态基线可以用于自动确定被认为对特定应用正常的行为。政策和健康规则可以用于对抗特定应用的基线或其他健康指示器,以在用户受到影响之前检测问题并排除故障。健康规则可以用于定义要监测的度量条件,比如何时“平均响应时间比基线慢四倍”。可以基于受监测的应用环境创建并修改健康规则。

用于测试商业事务性能的健康规则的实例可以包括商业事务响应时间和商业事务错误率。例如,测试商业事务响应时间是否远高于正常水平的健康规则可以将临界条件定义为比默认基线大3个标准差的平均响应时间和比每分钟50个调用大的负载的组合。此健康规则可以将警告条件定义为比默认基线大2个标准差的平均响应时间和比每分钟100个调用大的负载的组合。测试商业事务错误率是否远高于正常水平的健康规则可以将临界条件定义为比默认基线大3个标准差的错误率和比每分钟10个错误大的错误率和比每分钟50个调用大的负载的组合。此健康规则可以将警告条件定义为比默认基线大2个标准差的错误率和比每分钟5个错误率大的错误率和比每分钟50个调用大的负载的组合。

策略可以被配置为在违反健康规则或发生任何事件时触发操作。触发的操作可以包括通知、诊断操作、自动扩展容量、运行修复脚本。

度量

大多数度量涉及应用或商业事务的总体性能(例如,负载、平均响应时间、错误率等)或应用服务器基础结构的总体性能(例如,cpu占用百分比、使用的内存百分比等)。控制器ui中的度量浏览器可以用于查看代理向控制器报告的所有度量。

此外,可以创建调用信息点的特殊度量来报告如何执行给定商业(与给定应用相反)。例如,可以监测某一产品或一组产品的总收入表现。此外,信息点可以用于报告如何执行给定代码,例如特定方法被调用多少次数以及执行调用花费多长时间。此外,可以创建使用机器代理的扩展来报告用户定义的自定义指标。这些自定义度量在控制器中作为基线并被报告,就像内置度量一样。

可以使用表述性状态传递(representationalstatetransfer)(rest)api以编程方式访问所有度量,该api返回javascriptobjectnotation(json)或可扩展标记语言(xml)格式。此外,restapi可以用于查询并操作应用环境。

快照

快照提供在特定时间点的给定应用的详细图片。快照通常包括调用图,该调用图允许向下钻取到可能导致性能问题的代码行。最常见的快照是事务快照。

应用智能平台的示例性实施方式

图3是如本专利文件中所公开的用于预测性汇总并缓存应用性能数据的示例性系统300的框图,包括关于图1a、1b、1c、1d和1e公开的技术。图3中的系统300包括客户端设备305和392、移动设备315、网络320、网络服务器325、应用服务器330、340、350和360、代理312、319、334、344、354和364、异步网络机器370、数据存储380和385、控制器390和数据采集服务器395。代理312、319、334、344、354和364可以包括预取系统或模块313、318、333、343、353和363,用于执行如本专利文件中公开的应用性能数据的预测性汇总和缓存。在一些实施方式中,控制器390还可以包括预取系统或模块396,用于执行如本专利文件中公开的应用性能数据的预测性汇总和缓存。例如,当预测性汇总并缓存跨越多个代理扩展的应用性能数据时,除了代理312、319、334、344、354和364中的预取系统或模块313、318、333、343、353和363之外或代替这些预取系统或模块,控制器可以包括预取系统或模块396。在一些实施方式中,预取系统或模块396、222可以在与托管控制器390的机器不同的单独机器(例如,服务器)中实施。

客户端设备305可以包括网络浏览器310并且可以被实施为计算设备,比如膝上型计算机、台式机、工作站或一些其他计算设备。网络浏览器310可以是用于通过网络320经由网络服务器325查看由应用服务器(比如应用服务器330)提供的内容的客户端应用。

网络浏览器310可以包括代理312。代理312可以作为网络浏览器附件(向服务器下载应用)安装在网络浏览器310和/或客户端305上,或者以某种其他方式。可以执行代理312以监测网络浏览器310、客户端305的操作系统以及客户端305的任何其他应用、api或其他组件。代理312可以确定网络浏览器导航定时度量、访问浏览器信息记录程序(cookie)、监测代码并且将数据发送到数据采集360、控制器390或另一设备。代理312可以执行与在客户端305处监测请求或网络相关的其他操作,如本文所讨论的。

移动设备315连接到网络320,并且可以被实施为适于通过网络发送和接收内容的便携式设备,比如移动电话、智能电话、平板电脑或其他便携式设备。客户端设备305和移动设备315都可以包括被配置为访问由网络服务器325提供的网络服务的硬件和/或软件。

移动设备315可以包括网络浏览器317和代理319。移动设备还可以包括客户端应用和可以由代理319监测的其他代码。代理319可以驻留在网络浏览器317中和/或与该网络浏览器通信,以及与移动设备315上的其他应用、操作系统、api和其他硬件和软件通信。代理319可以具有与本文针对客户端305上的代理312描述的功能类似的功能,并且可以将数据重新发送到数据采集服务器360和/或控制器390。

网络320可以有利于系统300的不同服务器、设备和机器之间的数据通信(一些连接用线路示出到网络320,一些未示出)。该网络可以被实施为专用网络、公共网络、内联网、因特网、蜂窝网络、wi-fi网络、voip网络或这些网络中的一个或多个的组合。网络320可以包括一个或多个机器,比如负载平衡机和其他机器。

网络服务器325连接到网络320,并且可以接收并处理通过网络320接收的请求。网络服务器325可以被实施为实施网络服务的一个或多个服务器,并且可以在与应用服务器330相同的机器或一个或多个单独的机器上实施。当网络320是因特网时,网络服务器325可以被实施为网络服务器。

应用服务器330与网络服务器325、应用服务器340和350以及控制器390通信。应用服务器330还可以与其他机器和设备(图3中未示出)通信。应用服务器330可以托管应用或分布式应用的部分。主应用332可以处于许多平台之一中,比如包括java、php、.net和node.js,可以被实施为java虚拟机,或者包括一些其他主机类型。应用服务器330还可以包括一个或多个代理34(即“模块”),包括语言代理、机器代理和网络代理以及其他软件模块。应用服务器330可以被实施为一个服务器或多个服务器,如图3所示。

可以使用字节代码插入或字节代码检测(bci)来仪表化应用332和应用服务器330上的其他软件,以修改应用或其他软件的目标代码。仪表化的目标代码可以包括代码,用于检测由应用332接收的调用、由应用332发送的调用,并且在执行应用期间与代理334进行通信。bci还可以用于监测应用和/或应用服务器的一个或多个套接字,以便监测套接字并捕获来自套接字的分组。

在一些实施例中,服务器330可以包括除虚拟机之外的应用和/或代码。例如,服务器330、340、350和360每个可以包括java代码、.net代码、php代码、ruby代码、c代码、c++或其他二进制代码以实施从远程源接收的应用和处理请求。关于应用服务器的对虚拟机的引用旨在仅用于示例性目的。

应用服务器330上的代理334可以被安装、下载、嵌入或以其他方式提供给应用服务器330。例如,可以通过目标代码的仪表化、将代理下载到服务器或以某种其他方式在服务器330中提供代理334。可以执行代理334以监测应用服务器330,监测在虚拟机332中运行的代码(或其他程序语言,比如php、.net或c程序)、机器资源、网络层数据,并且与应用服务器330上的字节仪表化代码和应用服务器330上的一个或多个应用通信。

代理334、344、354和364中的每一个可以包括一个或多个代理,比如语言代理、机器代理和网络代理。语言代理可以是适合在特定主机上运行的一种代理。语言代理的实例包括java代理、.net代理、php代理和其他代理。机器代理可以从安装它的特定机器采集数据。网络代理可以捕获网络信息,比如从套接字采集的数据。

代理334可以检测操作,比如通过应用服务器330接收调用和发送请求、资源使用和传入分组的操作。代理34可以接收数据,处理数据,例如通过将数据聚集成度量,并将数据和/或度量发送到控制器390。代理334可以执行与监测应用和应用服务器330有关的其他操作,如本文所讨论的。例如,代理334可以识别其他应用、共享商业事务数据、聚集检测到的运行时数据以及其他操作。

代理可以操作以监测节点、层或多个节点或其他实体。节点可以是软件程序或硬件组件(例如,存储器、处理器等)。一层节点可以包括多个节点,这些节点能够处理类似的商业交易,可以位于同一服务器上,可以以某种其他方式彼此相关联,或者可以不彼此相关联。

语言代理可以是适合于检测或修改、从主机采集数据并驻留在主机上的代理。主机可以是java,php、.net、node.js或其他类型的平台。语言代理可以采集流数据以及与特定应用的执行相关联的数据。语言代理可以仪表化最低级应用以采集流数据。流数据可以指示哪个层与哪个层以及在哪个端口上进行通信。在一些实例中,从语言代理采集的流数据包括源ip、源端口、目的地ip和目的地端口。语言代理可以向控制器报告应用数据并且调用链数据。语言代理可以向网络代理报告与特定应用相关的收集的流数据。

网络代理可以是驻留在主机上并采集网络流组数据的独立代理。网络流组数据可以包括源ip、目的地端口、目的地ip以及由上面装有网络代理的应用接收的网络流的协议信息。网络代理可以通过拦截来自一个或多个套接字并对来自一个或多个套接字的分组执行分组捕获来采集数据。网络代理可以从与要监测的应用相关联的语言代理接收流数据。对于与语言代理提供的流数据匹配的流组数据中的流,网络代理汇总流数据以确定度量,比如tcp通过量、tcp丢失、延迟和带宽。然后,网络代理可以向控制器报告度量、流组数据和调用链数据。网络代理还可以在应用服务器处进行系统调用以确定系统信息,比如主机状态检查、网络状态检查、套接字状态和其他信息。

机器代理可以驻留在主机上,并且采集关于实施主机的机器的信息。机器代理可以从比如处理器使用、存储器使用和其他硬件信息等的信息采集并生成度量。

语言代理、网络代理和机器代理中的每一个可以向控制器报告数据。控制器390可以被实施为与位于一个或多个服务器或机器上的代理通信的远程服务器。控制器可以接收度量,调用链数据和其他数据,将接收的数据关联作为分布式事务的一部分,并且在由一个或多个受监测的应用实施并且在一个或多个受监测的网络上发生的分布式应用的上下文中报告相关数据。控制器可以为用户提供报告、一个或多个用户界面和其他信息。

代理334可以为服务器330接收的请求创建请求标识符(例如,由与用户或另一个源相关联的客户端305或315接收的请求)。无论哪个设备发送请求,请求标识符都可以被发送到客户端305或移动设备315。在实施例中,可以在采集数据并针对特定商业交易进行分析时创建请求标识符。

应用服务器340、350和360中的每一个可以包括应用和代理。每个应用都可以在相应的服务器上运行。应用服务器340-360上的应用342、352和362中的每一个可以与应用332类似地操作并且执行分布式商业交易的至少一部分。代理344、354和364可以监测应用342-362,在运行时采集并处理数据,并与控制器390通信。应用332、342、352和362可以彼此通信,作为执行分布式事务的一部分。特别地,每个应用可以调用另一个虚拟机的任何应用或方法。

异步网络机器370可以参与与一个或多个应用服务器的异步通信,比如应用服务器350和360。例如,应用服务器150可以向异步网络机器发送若干调用或消息。异步网络机器可以处理消息并最终向应用服务器360提供响应,比如处理的消息,而不是与应用服务器350返回通信。因为没有从异步网络机器到应用服务器350的返回消息,所以它们之间的通信是异步的。

数据存储380和385均可以由应用服务器(比如应用服务器350)访问。应用服务器350还可以访问数据存储385。数据存储380和385中的每一个可以存储数据、处理数据并且返回从应用服务器接收的查询。数据存储380和385中的每一个可以包括或不包括代理。

控制器390可以控制并管理分布在应用服务器330-360上的商业事务的监测。在一些实施例中,控制器390可以从数据采集服务器360接收应用数据,包括与监测客户端305和移动设备315处的客户端请求相关联的数据。在一些实施例中,控制器390可以从代理312、319、334、344和354中的每一个接收应用监测数据和网络数据。控制器390可以关联商业交易数据的各部分,与代理通信以配置数据集合,并通过接口提供性能数据和报告。该界面可以被视为可由客户端设备392查看的基于网络的界面,客户端设备可以是移动设备、客户端设备或用于查看由控制器390提供的界面的任何其他平台。在一些实施例中,客户端设备392可以与控制器390直接通信以查看用于监测数据的接口。

客户端设备392可以包括任何计算设备,包括移动设备或客户端计算机,比如桌面、工作站或其他计算设备。客户端计算机392可以与控制器390通信以创建并查看定制界面。在一些实施例中,控制器390提供用于创建并查看作为内容页面(例如,网页)的自定义界面的界面,该内容页面可以被提供给客户端设备392上的网络浏览器应用并通过其呈现。

应用332、342、352和362可以是几种类型的应用中的任何一种。可以实施应用332-362的应用的实例包括java、php、.net、node.js和其他应用。

图4是用于实施本技术的计算机系统400的框图。图4的系统400可以在客户端305、392、移动设备315、网络服务器325、服务器330、340、350、360、同步网络机器370和控制器390等的上下文中实施。

图4的计算系统400包括一个或多个处理器410和存储器420。主存储器420部分地存储用于由处理器410执行的指令和数据。主存储器410可以在操作时存储可执行代码。图4的系统400进一步包括大容量存储设备430、便携式存储介质驱动器440、输出装置450、用户输入装置460、图形显示器470和外围设备480。

图4中所示的组件被描绘为经由单个总线490连接。然而,组件可以通过一个或多个数据传输装置连接。例如,处理器单元410和主存储器420可以通过本地微处理器总线连接,并且大容量存储设备430、外围设备480、便携式或远程存储设备440、显示系统470可以通过一个或多个输入/输出(i/o)总线连接。

可以用磁盘驱动器或光盘驱动器实施的大容量存储设备430是用于存储供处理器单元410使用的数据和指令的非易失性存储设备。大容量存储设备430可以存储用于实施本发明的实施例的系统软件,以便将该软件加载到主存储器620中。

便携式存储设备440与便携式非易失性存储介质(比如光盘、数字视频盘、磁盘、闪存等)一起操作,以向图4的计算机系统400输入和从该计算机系统输出数据和代码。用于实施本发明实施例的系统软件可以存储在这样的便携式介质上,并经由便携式存储设备440被输入到计算机系统400。

输入装置460提供用户界面的一部分。输入装置460可以包括用于输入字母数字和其他信息的字母数字小键盘,比如键盘,或者指示装置,比如鼠标、轨迹球、指示笔或光标方向键。另外,如图4所示的系统400包括输出装置450。合适的输出装置的实例包括扬声器、打印机、网络接口和监测器。

显示系统470可以包括液晶显示器(lcd)或其他合适的显示设备。显示系统470接收文本和图形信息,并处理该信息以输出到显示设备。

外围设备480可以包括任何类型的计算机支持设备,以向计算机系统添加附加功能。例如,外围设备480可以包括调制解调器或路由器。

包含在图4的计算机系统400中的组件可以包括个人计算机、手持计算设备、电话、移动计算设备、工作站、服务器、小型计算机、大型计算机或任何其他计算设备。计算机还可以包括不同的总线配置、联网平台、多处理器平台等。可以使用各种操作系统,包括unix、linux、windows、appleos和其他合适的操作系统,包括移动版本。

当实施比如智能电话或平板电脑等的移动设备时,图4的计算机系统400可以包括一个或多个天线、无线电和用于通过无线信号进行通信的其他电路,比如使用wi-fi、蜂窝电话或其他无线信号进行通信。

尽管该专利文件包含许多细节,但这些细节不应被解释为对任何发明或可要求保护的范围的限制,而是作为可以针对特定发明的特定实施例的特征的描述。在单独的实施例的上下文中在本专利文件中描述的某些特征也可以在单个实施例中组合地实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合来实施。此外,尽管上面的特征可以被描述为以某些组合起作用并且甚至最初这样要求保护,但是在某些情况下可以从组合中切除来自要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为要求以所示的特定顺序或按顺序执行这些操作,或者执行所有示出的操作,以实现期望的结果。此外,在本专利文件中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离。

仅描述了少数实施方式和实例,并且可以基于本专利文档中描述并示出的内容来进行其他实施方式、增强和变型。

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