动态遥测消息剖析和调节转让专利

申请号 : CN201680005218.3

文献号 : CN107111540A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴顗磊E·M·伯泽罗P·A·古列维奇

申请人 : 微软技术许可有限责任公司

摘要 :

描述了这样的技术和系统,它们用于通过使得遥测消息能够自动被分析来改进计算设备遥测收集从而使得遥测收集规则能够自动地被调节。某些实现使用遥测服务来分析遥测消息,并且在客户端设备处引导经调节的规则,当接收到更加相关的遥测时自动地并且逐渐地细化遥测收集。可以对收集规则进行的动态调节包括例如对遥测消息的收集频率的改变、对在遥测消息中所发送的细节的水平的改变、以及对从其进行收集的目标(例如,应用、组件、设备)的改变。

权利要求 :

1.一种用于启用动态遥测消息剖析和调节的系统,所述系统包括:一个或多个计算机可读存储介质;

处理系统;

存储在所述一个或多个计算机可读存储介质上的用于遥测服务的程序指令,其中,所述指令当由所述处理系统执行时引导所述处理系统响应于接收到包括源标识符和状态信息的至少一个遥测消息而执行以下操作,所述状态信息例如是错误描述符、使用数据、以及性能数据中的一个或多个:确定将至少一个客户端设备定为目标的至少一个规则调节;并且将所述至少一个规则调节提供至所述至少一个客户端设备。

2.根据权利要求1所述的系统,其中,用于确定所述至少一个规则调节的程序指令包括引导所述处理系统对存储在所述一个或多个计算机可读存储介质上的多个遥测消息内容进行分析的指令。

3.根据权利要求1或2所述的系统,其中,用于确定所述至少一个规则调节的程序指令包括引导所述处理系统从一组规则调节中选择所述至少一个规则调节的指令,其中,所述一组规则调节中的每个成员被映射至一个或多个相关状态信息参数,其中,通过将所述至少一个遥测消息与所述一个或多个相关状态信息参数进行比较,所述一组规则调节被存储在所述一个或多个计算机可读存储介质上。

4.根据权利要求1-3中的任何一项所述的系统,其中,所述规则调节包括在以下方面中的一个或多个方面中的改变:遥测数据收集的冗长度、遥测数据收集的频率、遥测数据收集的时间、遥测数据收集的持续时间、以及遥测数据收集的目标。

5.根据权利要求1-4中的任何一项所述的系统,其中,所述至少一个客户端设备是由所述源标识符标识的。

6.根据权利要求1-4中的任何一项所述的系统,其中,所述源标识符包括多个个体的标识符,其中,所述至少一个客户端设备是由所述多个个体的标识符中的一个或多个标识的。

7.一种启用动态遥测消息剖析和调节的方法,所述方法包括:接收包括源标识符和状态信息的至少一个遥测消息;

分析多个遥测消息内容;

从一组规则调节中选择至少一个规则调节,其中,通过将所述至少一个遥测消息与一个或多个相关状态信息参数进行比较,所述一组规则调节中的每个成员被映射至所述一个或多个相关状态信息参数;

确定至少一个客户端设备以接收所述至少一个规则调节;以及

将所述至少一个规则调节提供至所述至少一个客户端设备。

8.根据权利要求7所述的方法,其中,所述状态信息包括错误描述符、使用数据、以及性能数据中的一个或多个。

9.根据权利要求7或8所述的方法,其中,所述规则调节包括在以下方面中的一个或多个方面中的改变:遥测数据收集的冗长度、遥测数据收集的频率、遥测数据收集的时间、遥测数据收集的持续时间、以及遥测数据收集的目标。

10.一种用于启用动态遥测消息剖析和调节的系统,所述系统包括:处理系统;

一个或多个计算机可读存储介质;

在所述一个或多个计算机可读存储介质上实施的存储装置,所述存储装置包括被映射至一个或多个所存储的遥测消息内容的多个规则调节;以及存储在所述一个或多个计算机可读存储介质上的用于遥测服务的程序指令,其中,所述程序指令当由所述处理系统执行时引导所述处理系统响应于接收到包含源标识符和状态信息的至少一个遥测消息而执行以下操作:将所述源标识符和所述状态信息与所述一个或多个所存储的遥测消息内容进行比较以从所述多个规则调节中确定至少一个特定的规则调节;

根据所述源标识符和所述状态信息以及所述至少一个特定的规则调节来确定至少一个目标客户端设备;以及将所述至少一个特定的规则调节提供至所述至少一个目标客户端设备。

11.根据权利要求10所述的系统,其中,用于将所述源标识符和所述状态信息与所述一个或多个所存储的遥测消息内容进行比较的程序指令包括引导所述处理系统查询所述一个或多个所存储的遥测消息内容的指令。

12.根据权利要求11所述的系统,其中,用于查询所述一个或多个所存储的遥测消息内容的程序指令包括引导所述处理系统执行以下操作中的至少一个操作的指令:选择所述一个或多个所存储的遥测消息内容中的特定的一个或多个的至少一部分;

对所述一个或多个所存储的遥测消息内容中的特定的一个或多个的至少一部分执行算术函数、逻辑运算、以及按位运算中的一个或多个;

对所述一个或多个所存储的遥测消息内容中的特定的一个或多个的至少一部分执行自定义函数;

对所述一个或多个所存储的遥测消息内容中的特定的两个或更多个执行连结;并且在所述至少一个遥测消息的所述源标识符与所述一个或多个所存储的遥测消息内容之间执行连结。

说明书 :

动态遥测消息剖析和调节

背景技术

[0001] 遥测是通过其在远程组件处收集数据并且将所述数据发送至接收组件以供监测的过程。今天的计算环境包括宽泛的多种计算设备,例如智能电话、平板计算机、膝上型计算机、以及可穿戴设备。遥测数据是从这些设备频繁需要的,例如,用于诊断软件或硬件中的错误或问题、或者用于收集关于使用模式的信息。然而,从这些设备远程地收集遥测数据常常受限于这样的因素,例如处理功率、电池、网络连通性、带宽、和/或数据计划。

发明内容

[0002] 描述了这样的技术和系统,它们用于通过使得遥测消息能够自动被分析来改进计算设备遥测收集,从而使得遥测收集规则能够自动地被调节。
[0003] 遥测消息可以包括错误日志、来自调试程序的错误信息、使用数据、以及性能数据。遥测收集规则通知客户端设备或者应用多频繁地收集以及收集何种类型的遥测消息。可以将其用于收集规则的动态调节包括例如:对遥测消息的收集频率的改变、对在遥测消息中所发送的细节的水平的改变、以及对从其进行收集的目标(例如,应用、组件、设备)的改变。某些实现使用遥测服务(其可以是从客户端计算设备远程地托管的)来分析遥测消息并且在客户端计算设备处引导经调节的规则。
[0004] 提供了该发明内容以用简化的形式引入了在下文的具体实施方式中进一步描述的概念的选择。该发明内容不旨在标识所要求保护的主题的关键特征或本质特征,也不旨在用于限制所要求保护的主题的范围。

附图说明

[0005] 图1示出了针对动态遥测消息剖析和调节的示例组件环境。
[0006] 图2A-2C示出了针对动态遥测消息剖析和调节的示例过程流程。
[0007] 图3示出了框图,该框图示出了在所描述的遥测服务的一些实现中所使用的计算设备或系统的组件。
[0008] 图4示出了示例系统架构,其中可以实行针对动态遥测消息剖析和调节的技术的实现。

具体实施方式

[0009] 描述了这样的技术和系统,它们用于通过使得遥测消息能够自动被分析来改进计算设备遥测收集从而使得遥测收集规则能够自动地被调节。遥测消息可以包括错误日志、来自调试程序的错误信息、使用数据、以及性能数据。遥测收集规则通知客户端设备或者应用多频繁地收集以及收集何种类型的遥测消息。
[0010] 某些实现使用遥测服务(其可以是从客户端计算设备远程地托管的)来分析遥测消息并且在客户端计算设备处引导经调节的规则。可以将其用于收集规则的动态调节包括例如:对遥测消息的收集频率的改变、对在遥测消息中所发送的细节的水平的改变、以及对从其进行收集的目标(例如,应用、组件、设备)的改变。
[0011] 涉及智能电话上的应用错误的简单的示例可以示出所描述的技术和系统的某些优点。在这里,响应于用户的动作,应用记录包含应用生成的错误代码的单个错误消息。所述错误消息是由遥测服务收集的,其通过应用的类型和错误代码来自动地分析错误消息。遥测从所述分析确定可能需要额外的数据来调试并纠正错误。
[0012] 遥测服务将经更新的遥测收集规则发送至智能电话,以引导其使能在几分钟的时段上更详细地记录应用的事件。当被请求时,智能电话设定新的规则、聚集详细的日志、并且将包含新的信息的消息发送至遥测服务。基于来自这些更加详细的日志的新的信息,遥测服务重复分析过程,有可能发送另一新的规则以请求甚至更加详细的日志、更长的收集时段、或者不同类型的记录或者对不同组件的记录。
[0013] 所描述的技术和系统的技术特征可以以几种方式来增强客户端计算设备和整体操作环境两者的功能。许多设备出于各种原因而具有有限的网络带宽,例如,设备连接至慢的或降级的网络、设备受限于由移动网络载波所施加的数据限流或节流、或者用户具有为了节约成本而自我施加的带宽限制。在内容方面频繁或繁重(例如,包含详细的操作日志或者大量状态数据)的遥测消息可能会影响设备以及所述设备与其交互的网络设备两者。繁重或频繁的遥测消息可能通过用与应用内容不相关的数据来阻塞网络从而影响受限网络上的其他设备。在具有受限带宽的设备上,设备上的其他主要网络功能(例如,从远程服务取回实际的应用内容)可能会在设备替代地忙于发送遥测消息时受到负面影响。
[0014] 此外,繁重的遥测收集可能具有处理系统影响。有时,大量处理系统循环用于收集、解析、和组合(assemble)遥测消息。在具有受限处理功率的设备上,影响可能成比例地更加显著。实际上,影响足够显著以使得在软件和系统架构中诊断日志的量相对于应用或组件的速度是频繁的设计折衷。
[0015] 所描述的技术和系统可以通过以下方式来改进网络性能和处理系统性能:动态地和自动地调节设备的收集规则以修改例如收集的数量和频率,并且具体地将收集什么定位目标。这些特征中支持“及时遥测”的任何一个或两者得出更好地工作的设备或网络。
[0016] 一开始,设备可以被配置为收集最小数量的遥测数据以使得遥测消息是小的和/或不频繁的。当问题被指出时,可以增加遥测数据的量。在具有受限的处理功率的设备上,这可以意味着设备的更加高效的操作,例如较少的处理系统循环用来在设备流畅的运行的过程中收集、解析、和组合遥测消息。此外,具体地使得遥测收集将相关的(例如,有错误的)组件定位目标确保大体上是最重要的遥测数据被聚集,并且网络和处理系统没有过度地受到外来的请求的拖累。
[0017] 此外,使用所描述的系统和技术,在遥测集合的数量/质量与性能影响之间的折衷不再一定要在系统编码阶段处被考虑,而是可以动态地和自动地被调节以匹配在需要的时间处需要的水平。对客户端设备的运行的影响是客户端设备以最大处理和网络效率执行,直到针对具体的信息收集场景而需要更多的处理器或网络资源的时刻为止。
[0018] 遥测数据的更好的目标也可以得出更加可靠的设备或具有增强的可靠性的应用。例如,自动化遥测消息处理可以在用户体验负面影响之前检测错误条件。使用所公开的技术和系统,对错误条件的分析和对遥测收集的增加和修改是以自动化的方式进行的。该快速的仪器化可以引起具有减少的设备或应用停机时间的问题诊断或系统校正;在一些情况下,甚至可以在终端用户意识到问题存在之前就采取补救动作。
[0019] 图1示出了针对动态遥测消息剖析和调节的示例组件环境。在图1中,遥测服务100实现某些技术,其用于如关于图2A-2C中的过程流程所描述的那样分析遥测数据并且创建规则调节。遥测服务100通过网络115与客户端设备110进行通信以接收遥测消息120并且将遥测规则121传送至客户端(例如,客户端设备110)。示出了客户端设备的其他实例110-B、110-C、和110-D以示出遥测服务110可以从多个客户端接收消息、当进行数据分析时可以分析来自多个客户端的消息120、并且可以将规则修改121传送至多个客户端。
[0020] 在某些实现中,遥测服务100可以包括一个或多个子组件,例如遥测数据分析器122,其用于对包含在一个或多个遥测消息中的数据实行遥测数据分析。遥测数据分析器
122对遥测消息120进行分析。遥测服务100还可以包括遥测目标引擎123,其标识根据由数据分析器122所执行的分析的规则修改121,并且将所述规则修改121发送至一个或多个客户端110。关于图2A-2C中的示例过程流程而更加全面地讨论了由遥测数据分析器122和遥测目标引擎123所执行的过程的方面。
[0021] “遥测消息”是来自包含一种或多种类型的遥测数据的客户端的信号。遥测消息可以包括错误日志、来自调试程序的错误信息、使用数据日志、以及性能数据。遥测消息包含遥测的源的指示符,其标识例如设备、用户、应用、组件、许可证码、应用或组件内的细分或类别、或者作为遥测消息的起源的其他信息。对遥测消息的源的知识允许将规则调节引导回原始的源处,或者在具有相同或类似的源标识符的其他目标处引导规则调节。
[0022] 在一些情况下,源标识符将由被组合以标识具有良好的精确度的源的一个或多个个体的标识符(例如,设备、应用、组件、和类别)组成。例如,设备标识符可以唯一地标识在其上发生错误的具体的设备。应用标识符描述生成错误的应用,组件标识符描述应用内的特定的模块、并且类别标识符描述组件内的具体的特征。单个标识符或标识符的组合在本文中可以被称为遥测消息“源标识符”。组成源标识符的标识符可以被称为“个体标识符”。
[0023] 遥测消息还包含“状态信息”,或者关于周围条件或环境的信息,例如错误或使用数据。状态信息可以根据遥测消息和系统的类型而变化很大,并且保存范围从简单的数字代码到在一时间点或者在一段时间内发生的活动或事件的详细日志。一些示例类型的遥测消息状态包括日志数据、事件数据、性能数据、使用数据、崩溃报告、错误报告、堆栈踪迹、寄存器状态、堆阵状态、处理器标识符、线程标识符、以及应用或组件等级的尝试/捕获块异常。遥测消息状态还可以包括实时性能信息,例如,网络负载或处理器负载。应当注意的是,这些类型的遥测消息状态仅仅是示例性的,并且能够从设备聚集的任何类型的信息可以潜在地被包含在遥测消息状态中,这取决于设备、应用、或组件的记录或遥测能力。自然地,特定的遥测消息的状态信息可以包括多于一种类型的状态信息。
[0024] 在许多情况下,代码或描述(例如,错误代码或描述)被包括在遥测消息中,其标识具有高粒度的问题、事件、或操作。有时,错误代码或描述是由操作系统标识的,而有时,错误代码或描述是针对特定的应用或组件的;在后者的情况下,源标识符指定了可能需要所述组件来识别错误条件。
[0025] 遥测消息状态还可以包含关于设备上的其他组件或应用的信息,即使当所述信息不是由引起所述消息的源生成或者从其聚集的。例如,有时设备上的多个应用可以组合以负面地交互并且引起错误;因此,如果一个应用经历了错误,则知道在设备上安装的所有其他应用是有用的。
[0026] 在遥测消息中还可以包含其他信息。例如,与相关的数据库进行通信的应用的非常详细的日志可以包含用于在特定的时间更新或取回具体的数据的结构化查询语言(SQL)命令的文本。遥测消息可以包含该日志的一部分,其可以用于当某些类型的数据在数据库中被不一致地更新时对问题进行诊断。
[0027] 遥测消息还可以包含关于设备上的应用或组件的使用数据。这样的使用数据可以对产品设计者对特征或用户界面进行细化是有用的。例如,具有使用数据的遥测消息可以具有在用户使用特定的特征的一段时间内在应用的用户界面中的用户的运动的详细日志。使用数据可以包含诸如鼠标运动或菜单/按钮点击之类的信息,其可以之后由产品设计者分析以确定是否可以使特征更加容易使用。
[0028] 在某些实施例中,遥测组件130被呈现在客户端110上,这促进规则和消息在客户端110与遥测服务100之间的传输。应当注意的是,遥测组件可以是由一个或多个免费或商业源(例如,针对特定类型的客户端设备110的操作系统提供者)提供的。遥测服务能够使用应用程序接口从遥测组件解译遥测消息或者向遥测组件发送规则调节。遥测服务可以与多个不同的遥测组件提供者交换消息和规则。
[0029] 客户端110上的遥测组件可以包括子组件或者与其他模块进行交互以执行各种处理功能。例如,充当规则管理器/分析器的组件可以从遥测服务接收规则、规则修改、以及规则调节,并且通过将特定的规则或规则调节转换成设备上的动作来在特定的设备的环境中启用所述规则,所述特定的规则或规则调节可以是以一般化的描述语言来写的。
[0030] 在某些实施例中,原始遥测数据在被发送至遥测服务100之前由客户端设备110上的遥测组件130处理到遥测消息120中。例如,数据记录器可以接入具体的应用、组件、或操作系统的仪器或记录能力以获得原始的遥测数据。动态数据收集器可以从设备组件收集具体的实时信息,例如处理器状态和存储器状态。实时的和经记录的信息可能需要被组合或被压缩以通过网络来发送。
[0031] 充当遥测传输器的组件可以例如将原始遥测数据解析、组合、重新封装、增强、和/或压缩成对遥测服务更易吸收的形式。遥测传输器可以将遥测消息组合在一起或者减少不必要的数据,以便在指定的时间处将遥测消息发送至遥测服务之前降低网络带宽。
[0032] 当遥测服务已经分析了一个或多个遥测消息的内容之后,遥测服务100可以生成“遥测规则”或者“规则调节”(即,修改现有遥测规则的规则)121。遥测规则121描述客户端上的遥测收集的参数。
[0033] 遥测规则121可以引导客户端修改其如何以几种方式收集遥测数据。例如,遥测规则121可以让客户端改变遥测消息的收集频率;在遥测消息中发送的细节的等级(“冗长度”),一起包括是启用还是禁用遥测收集;发起或结束遥测数据收集的时间;遥测数据收集的持续时间;以及从其收集遥测数据的目标(例如,应用、组件、设备)。
[0034] 当已经在设备上存在的先前的或默认的规则被来自遥测服务的随后的指令修改或变形时进行规则调节。在实际中,规则调节类似于替代旧规则的新规则。例如,客户端设备可以具有在例程操作期间进行最小遥测数据收集的某些默认规则。遥测服务100可以在产生问题之后发送规则调节以启用更加详细的遥测数据收集。在该情况下,“规则调节”实质上是替代先前的默认规则的新规则。
[0035] 在某些情况下,遥测服务100响应于已知的遥测消息而发布多个规则。所述多个规则可以修改例如遥测数据收集的多于一个方面和/或多于一个目标。例如,可以响应于来自应用的已知的消息而发布两个规则,其中第一规则引导客户端遥测组件130在具体的使用时段(例如,五分钟)内集中地记录应用的遥测。第二规则引导客户端遥测组件130记录来自应用所依赖的经共享的软件层(例如,经共享的数据访问组件)的信息。
[0036] 此外,取决于实现,规则可以相对基本,并且被组合在一起以形成更加复杂的指令集。这些基本规则的构建或组合可以是由遥测服务100生成的,其在一些情况下可以是由遥测组件130在客户端上顺序地或者并列地设定的。例如,一个规则可以引导客户端上的遥测组件130“在组件X中启用记录”;第二规则可以引导客户端“从组件X收集类别A特征区域上的遥测数据”;第三基本规则可以引导客户端“将在五分钟的时段内生成的来自类别A、组件X的所有遥测数据整合成单个遥测消息”。
[0037] 规则可以将看起来不连接至原始遥测消息的源的组件定为目标。例如,对具有特定类型的应用错误的遥测消息的接收可以向遥测数据分析器122指示诸如存储设备或盘之类的硬件组件发生故障。作为响应,遥测目标引擎123可以发布增加对客户端设备存储组件的诊断记录的规则121以便确定是否存在错误,即使存储组件不是具有错误的遥测消息的源。
[0038] 有时,多个规则可以将多于一个客户端设备定为目标。所述规则可以是不同的规则,或者是在匹配一个类型的几个客户端设备处引导相同的规则语言的多个副本。例如,对遥测消息的分析可以推断安装在多个客户端上的组件上的遥测数据收集改变是期望的,例如,运行特定的版本的应用的所有客户端设备。遥测服务100可以将规则调节引导至运行组件的多个客户端设备,而不是引导规则修改仅仅从经历问题的设备上的组件收集遥测数据,这是因为来自额外的客户端的信息可以在诊断问题时是有帮助的。
[0039] 在一些实现中,规则或规则调节121包括用于设定对一个或多个客户端组件的修复性动作的指令。修复性动作可以是以用于下载补丁或软件更新的指令为形式的。例如,有可能设备上的软件组件的某个组合引起由具有特定的错误代码的遥测消息120所指示的问题。软件组件供应商中的一个软件组件供应商具有改善所述问题的针对它们的软件的补丁。响应于接收到具有错误代码的遥测消息120,遥测服务100可以发布规则121,其包含用于下载软件组件供应商的补丁并且应用该补丁的指令。取决于客户端上的遥测规则处理的实现,遥测组件可以通过引导客户端上的其他组件(例如,软件更新组件)下载并更新所指示的软件补丁来设定修复性规则。
[0040] 可以以多种方式来描述遥测规则。一种常见的方式是使用标准化脚本语言,例如,JavaScript或者Perl。另一种方式是使用扩展标记语言(XML)来描述具有嵌套系列的元素和属性/特性的规则的数据结构。遥测服务100有时发送经修改的规则来替代已经在客户端设备110上存在的现有的规则。在一些情况下,发送引导客户端设备禁用和启用已经在客户端设备110上的规则的规则调节121。有时,整个新的规则可以被发送并且被添加至设备的遥测规则集。此外,遥测规则121可以以不同的格式或多个格式被发送至不同的客户端设备,这取决于遥测组件130的特定的实现和客户端设备110的类型。
[0041] 客户端设备110可以是或者可以包括计算系统或设备,例如膝上型计算机、台式计算机、平板计算机、阅读器、移动电话、智能电话、可穿戴设备、游戏控制器、智能电视、“物联网”设备、以及智能家电(例如,冰箱或智能家庭控制器)。基本上具有足够的网络接口和处理功能来记录遥测数据并且发送遥测消息的任何设备都可以是客户端设备。已知的客户端设备可以是图3中的系统300的实例化。
[0042] 图2A-2C示出了针对动态遥测消息剖析和调节的示例过程流程。图2A-2C中的过程流程可以例如由如在图1中所描述的遥测服务100来实现。
[0043] 图2A示出了较高级的过程流程,在一些实现中,其包括如在图2B和2C中所示出的子过程流程。从图2A开始,遥测服务100可以接收包含源标识符和状态信息的一个或多个遥测消息(200)。响应于接收了一个或多个遥测消息,遥测服务确定将至少一个客户端设备定为目标的至少一个规则调节(201)。接着,所确定的规则调节被提供至目标客户端设备(202)。现在将更加详细地探索这些处理步骤。
[0044] 对规则调节进行确定可以涉及对子阶段进行处理,例如遥测消息解析和分析,其还可以包括诸如查询包含所存储的遥测消息的数据存储的处理。该类型的处理可以适合于诸如遥测分析器122之类的子组件。可以被包括在对至少一个规则调节的确定中的处理是例如在图2B中所示出的子处理(203)。
[0045] 转到图2B,在一些情况下,遥测消息可以以已经可吸收的格式到达遥测服务100,以作为有可能由遥测组件130在客户端上所进行的处理的结果。然而,在一些实现中,遥测消息可以在到达之后从它们的本机消息来解析(210)以便使它们更加适合于分析。对遥测消息进行解析可以包括对消息的模式匹配或上下文分析以识别诸如相关状态信息或源标识符之类的内容。遥测服务100有时可以将所述内容的方面在数据存储(例如,相关数据库系统)中分离地存储为关于遥测消息数据或元数据,这是出于以下目的的,例如使得消息更容易找到、排序、实时分析,并且因此能够更容易地执行跨多个消息的之后的分析。
[0046] 不管遥测消息是否已经被解析并且以不同于已知实现中的遥测消息的本机格式的方式被存储,对一个或多个遥测消息的分析(211)提供用于确定和设定至少一个规则调节的能力。对遥测消息的分析得出关于规则调节的自动化决策或确定,它们接着被引导回一个或多个客户端设备处。
[0047] 分析(211)可以包括其他子过程(例如在图2C中所示出的查询),在一些实现中由图2B中的子过程指示符212将处理向其引导。简要地转到图2C,分析可以包括查询一个或多个遥测消息的消息内容(即,源标识符和状态信息)(221),其可以接着用于模式匹配或决策制定。查询可以可用于发现和排序所存储的遥测消息,并且发现和排序所存储的消息的源标识符或状态标识符内的内容。在一些实现中,查询可以跨具有所选择的标准的多个遥测消息执行或者在它们上执行,所述遥测消息例如具有某个源标识符的消息;具有源标识符内的一个或多个个体标识符的消息;具有特定的错误代码、描述、或者其他状态信息的消息;以及在特定的时间范围内到达的消息。
[0048] 可以以多种方式来实现用于启用遥测消息分析的查询能力。一个实现包括类似于结构化查询语言(SQL)的查询能力。类SQL查询功能的一些示例可以包括:选择所有或一部分的遥测消息;针对所有或一部分消息执行算术(例如,诸如求和、计数、平均、百分数、最大、最小之类的数学运算);针对所有或一部分消息执行逻辑运算(例如,大于、等于、小于大于或等于、以及小于或等于);针对所有或一部分消息执行按位运算(例如,左移、右移);针对所有或一部分消息执行自定义功能(例如,可以包括编程逻辑的用户定义的功能)。
[0049] 链接或者处理多个消息的查询功能也在一些实现中可用。这样的查询功能可以包括用于基于类似或相同的消息内容(即,状态信息和/或源标识符(例如,应用、机器、用户、组件))而跨消息创建连结(join)的能力。连结的类型可以包括左连结、右连结、左外连结、右外连结、内连结、以及全连结。一些类型的连结可以使用逻辑和算术操作数。应当注意的是,对功能进行查询的这些示例仅仅是示例性的,而不旨在定义查询能力的排他的集合。
[0050] 在上文中所描述的查询功能有时是使用相关数据库管理系统(RDBMS)来启用的,其示例是Microsoft SQL 在一些实例中,遥测服务可以使用RDBMS来存储遥测消息和相关联的元数据。在一些实例中,文本搜索引擎可以用于查询遥测消息内容。过程流程从图2C中的查询子过程经由返回指示符222而返回至在图2B中所示出的流程。
[0051] 特别地,在分析了遥测消息内容(211)之后,接着从可能的遥测规则的范围内选择一个或多个规则调节。使用查询功能来探索一个或多个遥测消息的内容可以向可以帮助确定规则调节的遥测分析器揭示与遥测数据相关的事实、模式、和关系。例如,在遥测消息中发现错误代码可以指示:与错误代码相关联或者由错误代码索引的规则调节应该被提供至发送遥测消息的客户端设备。针对具有相同的错误代码的遥测消息而对其他客户端的查询(其连结至由那些其他设备所体验的其他错误条件)可以通过揭示用于遥测收集的额外的相关区域而在确定规则调节的合适的集合时帮助遥测服务100。
[0052] 确定的一个阈值方面为是否应该从所述设备或者从其他设备收集更多的遥测数据。该确定可以使得例如规则调节启用(或禁用)对特定的设备、应用、或组件的遥测记录。
[0053] 确定的另一方面可以涉及收集哪个额外的遥测数据。该方面包括这样的决策,例如:从其收集更多遥测数据的具体的应用或设备区域/类别;从其收集更多遥测数据的具体的应用或设备过程;从其收集更多遥测数据的具体的应用或设备线程;从其收集更多遥测数据的具体的相关标识符(例如,基于任意标准指示一组设备(例如,测试用户分组)的标识符);从其收集更多遥测数据的具体的使用场景;以及从其收集更多遥测数据的具体的系统活动。
[0054] 确定的另一方面可以涉及哪个源标识符定义了规则调节应该在其处引导的目标客户端、应用、或组件的集合。这可以包括从其收集不同的遥测数据的具体的设备或设备的群体。例如,规则调节可以将具体的地点、语言、文化、产品版本、操作系统版本、设备形状因子等定为目标。
[0055] 确定的另一方面可以涉及应该何时收集遥测数据。该方面可以包括这样的决策,例如:应该收集某些遥测数据的具体的日期/时间或一天中的时间;以及可能发起遥测数据调节的具体的系统事件或触发(例如,两个应用的同时使用可以触发在同时使用期间应用中的一个应用额外的遥测)。时序/触发参数可以是具有其他规则参数的规则调节的一部分,或者可以是对现有的遥测收集过程的时序/触发修改。
[0056] 确定的另一方面可以涉及遥测收集的有效期。该方面可以包括这样的决策,例如,遥测收集停止的具体的日期和时间或时间跨度;以及可以终止遥测数据调节的具体的系统事件或触发。
[0057] 应当理解的是,在关于规则调节的确定中所涉及的方面或决策的示例不旨在将在确定中所涉及的决策的范围限制为仅仅这些示例。应当注意的是,在已知的实现、实例、或情况中,在关于规则调节的确定中可以涉及至少一个方面、仅仅一个方面、所有方面、或者方面的任何组合。
[0058] 可以利用各种技术来执行从分析来确定或选择合适的规则调节(213)。在一些情况下,可以由遥测服务100的子组件(例如,遥测目标引擎123)来确定规则调节和它们的目标。
[0059] 在一个实现中,可以将特定种类的遥测状态信息映射或索引至应该在目标客户端设备上设定的一个或多个规则调节。可以将这样的映射实现为状态信息参数(例如,错误代码、组件标识符、错误描述、硬件驱动版本等)与规则调节指令之间的一对多关系。另一实现可以使用机器学习技术来将遥测消息模式与规则调节相关联,例如使用人工神经网络、遗传算法、或者相似度学习技术。
[0060] 接着,确定用于接收规则调节的目标设备(214)。应当注意的是,可以将比发送遥测消息的客户端设备更多的客户端设备定为目标;实际上,发送所接收的遥测消息的客户端设备甚至不需要在针对规则调节而被定为目标的那些客户端之中。可以通过识别具有相同或相似的源标识符或者具有组成源标识符的相同或相似的个体标识符中的一个或多个个体标识符的客户端设备来确定目标客户端设备。例如,规则调节可以将使用具体版本的韩语版本的应用的客户端设备定为目标。
[0061] 现在转到图2A(经由返回步骤215),接着将所确定的规则调节提供至目标客户端设备(202)。已知规则调节可以通过遥测服务通过通信信道向客户端设备发布规则调节(“推送”通知)来进行,或者通过在发送至客户端设备的输出消息队列中排列规则调节来进行,所述输出消息可以在下一次客户端设备连接至遥测服务100时被传递至客户端设备(“拉取”通知)。一个或多个消息传递服务可以促进规则调节的传递。
[0062] 遥测消息的接收可能不是任何情况下都引起立即的规则调节。确定规则调节并且提供规则调节可以取决于遥测消息的性质和客户端设备的性质而在几秒、几分钟、或者更长的时段上进行。在所有情况下,规则调节的确定将由如关于图3所定义的系统上的处理组件自动地执行。
[0063] 可以从所公开的技术和系统受益的另一设备类型包括物联网(IoT)设备,其包括嵌入式设备和具有低功率无线电设备的设备。这样的设备的示例是联网门锁。具有该性质的嵌入式设备也常常被实现在具有受限的处理功率的低成本计算平台上,这既是因为这样的设备便宜也是因为低功率使用是对环境无害的。
[0064] 这样的设备可以具有各种诊断能力,但是仅仅使得处理和网络带宽每天一次地连接至遥测服务。设备每天一次地发送具有源标识符和作为状态信息的状态代码的单个遥测消息。关于门锁,一天状态代码指示错误状况:当被请求时锁无法关闭。利用所描述的系统和技术,遥测服务可以接收状态代码,并且响应于指示诊断性检查是必要的状态代码(例如,无法关闭代码),返回请求锁运行对锁的润滑油储存区中的润滑油水平进行诊断性检查的规则调节。增强的遥测被返回至所述服务,其可以引起通知被遥测服务或伙伴服务发送以通知门的主人或机械师。
[0065] 除了错误状态之外的其他类型的遥测数据(例如,使用数据)也可以从针对动态遥测调节的技术和系统受益。例如,考虑产品设计者想要使得应用中的特定的特征(例如,电子表格应用中的数据透视表)更容易使用的场景。所述特征一旦被激活便需要多个动作。
[0066] 遥测规则可以被发出给某些版本的应用的用户以引导客户端设备登记用户何时第一次使用所述特征,并且接着将该信息在遥测消息中发送回遥测服务。应当理解的是,遥测收集规则可以遵守隐私协议和许可(由服务、用户、或客户端设置)以约束和限制对私人信息的访问。遥测服务通过以下方式来对消息进行响应:返回规则调节以让设备的遥测组件在详细的使用数据日志中追踪接下来五次当用户激活特定的特征时应用用户界面中用户的鼠标运动。使用数据可以包含诸如鼠标运动或菜单/按钮点击之类的信息,其可以之后被产品设计者分析以确定是否可以使特征更容易使用。在这里,仅仅收集了用户的前几次特征使用,这是因为一旦用户变得对特征熟悉,则产品设计者在使得特征更加直观时不再认为用户的运动有趣。所描述的系统和技术允许对遥测数据的经改进的收集以及对设备的降低的网络和处理影响。
[0067] 图3示出了框图,该框图示出了在所描述的遥测服务的一些实现中所使用的计算设备或系统的组件。例如,用于运行遥测服务100的任何计算设备或者促进环境中的其他设备之间的交互的中间设备可以各自被实现为关于系统300所描述的那样,其可以本身包括一个或多个计算设备。系统300可以包括可以一个或多个刀片式服务器设备、独立服务器设备、个人计算机、路由器、集线器、交换机、桥接器、防火墙设备、入侵检测设备、大型计算机、网络附接存储设备、以及其他类型的计算设备。硬件可以根据诸如对称多处理(SMP)架构或者非统一存储器存取(NUMA)架构之类的任何合适的计算机架构而被配置。
[0068] 系统300可以包括处理系统301,其可以包括诸如中央处理单元(CPU)或者微处理器之类的处理设备以及从存储系统303取回并执行软件302的其他电路。处理系统301可以在单个处理设备内被实现,但是也可以跨在执行程序指令时协作的多个处理设备或子系统分布。
[0069] 处理系统301的示例包括通用中央处理单元、专用处理器、和逻辑设备,以及任何其他类型的处理设备、组合、或其变型。一个或多个处理设备可以包括多处理器或多核处理器,并且可以根据一个或多个合适的指令集来操作,所述合适的指令集包括但不限于精简指令集计算(RISC)指令集、复杂指令集计算(CISC)指令集、或其组合。在某些实施例中,一个或多个数字信号处理器(DSP)可以作为系统的计算机硬件的一部分而被包括,以替代或附加于通用CPU。
[0070] 存储系统303可以包括能够由处理系统301读取并且能够存储包括遥测服务100的软件302的任何计算机可读存储介质。存储系统303可以包括以用于存储信息(例如,计算机可读指令、数据结构、程序模块、或其他数据)的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质。
[0071] 存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、磁盘、光盘、CD、DVD、闪速存储器、固态存储器、相变存储器、或任何其他合适的存储介质。某些实现可以涉及虚拟存储器和非虚拟存储器中的一个或两者。存储介质在任何情况下都不由传播信号构成。在一些实现中,存储系统303除了存储介质之外还可以包括软件302可以通过其在内部或向外部传送的通信介质。
[0072] 存储系统303可以被实现为单个存储设备,但是也可以跨位于同一位置的多个存储设备或子系统分布或者彼此相对地分布。存储系统303可以包括能够与处理系统301进行通信的额外的元件,例如控制器。
[0073] 可以以程序指令实现的软件302和其他功能可以在一般地由系统300或者特别地由处理系统301执行时引导系统300或处理器系统301如在本文中所描述的那样操作,从而用于启用动态遥测消息剖析和调节。软件302可以提供实现遥测服务100或其子组件的程序指令304。软件302可以在系统300上实现以机器可读处理指令来实现在本文中被描述为由遥测服务100(例如,指令304)所执行的方法的组件、程序、代理、或层。
[0074] 软件302还可以包括额外的过程、程序、或者组件,例如操作系统软件、数据库管理软件、或者其他应用软件。软件302还可以包括固件或者能够由处理系统301执行的一些其他形式的机器可读处理指令。
[0075] 通常而言,软件302可以在被装载到处理系统301中并且被执行时将系统300整体从通用计算系统转换成自定义以促进动态遥测消息剖析和调节的专用计算系统。物理结构的具体的转换可以取决于该描述的不同的实现中的各种因素。这样的因素的示例可以包括但不限于用于实现存储系统303的存储介质的技术,而无论计算机存储介质被表征为主要存储还是次要存储。
[0076] 系统300可以表示任何计算系统,软件302在其上可以是分阶段的,并且软件302可以从其分配、传输、下载、或以其他方式提供至另一计算系统以用于部署和执行,或者额外的分配。
[0077] 在系统300包括多个计算设备的实施例中,一个或多个通信网络可以用于促进计算设备之间的通信。例如,一个或多个通信网络可以包括促进计算设备之间的通信的局域网、广域网、或者自组织网络。一个或多个直接通信链路可以被包括在计算设备之间。另外,在一些情况下,计算设备可以被安装在单个地理上分布的位置处。在其他情况下,多个计算设备可以被安装在单个地理位置处,例如服务器群或办公室。
[0078] 已知允许系统300与其他计算系统(未示出)通过通信网络或网络的集合(未示出)或者空气进行通信的通信连接和设备,可以包括通信接口305。一同允许系统间通信的连接和设备的示例可以包括网络接口卡、天线、功率放大器、RF电路、收发机、以及其他通信电路。连接和设备可以通过通信介质(例如,金属、玻璃、空气、或者任何其他合适的通信介质)进行通信以与其他计算系统或系统的网络交换通信。前述通信介质、网络、连接、和设备是公知的,并且不需要在这里详细讨论。
[0079] 应当注意的是,系统300的许多元件可以被包括在片上系统(SoC)设备中。这些元件可以包括但不限于处理系统301、通信接口305、以及甚至存储系统303的元件和软件302。
[0080] 图4示出了示例系统架构,其中,可以实行针对动态遥测消息剖析和调节的技术的实现。在图4中所示出的示例中,用于组合并发送遥测消息的遥测组件401可以被实现在客户端400上,其可以作为或者包括计算系统或设备,例如,膝上型计算机、台式计算机、平板计算机、阅读器、移动电话、可穿戴设备、“物联网”设备等。客户端400可以是系统300的实例化。多个客户端可以存在于任何操作环境中,如在图4中由客户端400后面的阴影方框所指示的。
[0081] 遥测服务411可以被实现为服务器410上的软件或硬件(或其组合),其可以是系统300的实例化。来自客户端400的遥测消息可以经由应用程序接口或者经由另一消息传送协议而被引导至遥测服务411。
[0082] 环境中的组件之间的数据的通信和交换可以通过网络450进行。网络450可以包括但不限于蜂窝网络(例如,无线电话)、点对点拨号连接、卫星网络、互联网、局域网(LAN)、广域网(WAN)、Wi-Fi网络、自组织网络、内联网、外联网、或其组合。网络可以包括一个或多个经连接的网络(例如,多网络环境),其包括诸如互联网之类的公共网络、和/或诸如安全企业私有网络之类的私有网络。
[0083] 可替代地或者另外地,在本文中所描述的功能、方法、和过程可以至少部分地由一个或多个硬件模块(或逻辑组件)来实现。例如,硬件模块可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、片上系统(SoC)系统、复杂可编程逻辑器件(CPLD)、以及现在已知或者之后开发的其他可编程逻辑器件。当硬件模块被激活时,硬件模块执行包括在硬件模块内的功能、方法、和过程。
[0084] 本发明的某些方面提供以下的非限制性实施例:
[0085] 示例1:一种用于启用动态遥测消息剖析和调节的系统,所述系统包括:一个或多个计算机可读存储介质;处理系统;存储在所述一个或多个计算机可读存储介质上的用于遥测服务的程序指令,其中,所述指令当由所述处理系统执行时引导所述处理系统响应于接收到包括源标识符和状态信息的至少一个遥测消息而执行以下操作,所述状态信息例如是错误描述符、使用数据、以及性能数据中的一个或多个:确定将至少一个客户端设备定为目标的至少一个规则调节;并且将所述至少一个规则调节提供至所述至少一个客户端设备。
[0086] 示例2:根据示例1的系统:其中,用于确定所述至少一个规则调节的程序指令包括引导所述处理系统对存储在所述一个或多个计算机可读存储介质上的多个遥测消息内容进行分析的指令。
[0087] 示例3:根据示例1或2的系统,其中,用于确定所述至少一个规则调节的程序指令包括引导所述处理系统从一组规则调节中选择所述至少一个规则调节的指令,其中,所述一组规则调节中的每个成员被映射至一个或多个相关状态信息参数,其中,通过将所述至少一个遥测消息与所述一个或多个相关状态信息参数进行比较,所述一组规则调节被存储在所述一个或多个计算机可读存储介质上。
[0088] 示例4:根据示例1至3中的任何一个的系统,其中,所述状态信息包括错误描述符、使用数据、性能数据中的一个或多个。
[0089] 示例5:根据示例1至4中的任何一个的系统,其中,所述规则调节包括在以下方面中的一个或多个方面中的改变:遥测数据收集的冗长度、遥测数据收集的频率、遥测数据收集的时间、遥测数据收集的持续时间、以及遥测数据收集的目标。
[0090] 示例6:根据示例1至5中的任何一个的系统,其中,所述至少一个客户端设备是由所述源标识符标识的。
[0091] 示例7:根据示例1至6中的任何一个的系统,其中,所述源标识符包括多个个体的标识符。
[0092] 示例8:根据示例7的系统,其中,所述至少一个客户端设备是由所述多个个体的标识符中的一个或多个标识的。
[0093] 示例9:一种启用动态遥测消息剖析和调节的方法,所述方法包括:接收包括源标识符和状态信息的至少一个遥测消息;分析多个遥测消息内容;从一组规则调节中选择至少一个规则调节,其中,通过将所述至少一个遥测消息与一个或多个相关状态信息参数进行比较,所述一组规则调节中的每个成员被映射至所述一个或多个相关状态信息参数;确定至少一个客户端设备以接收所述至少一个规则调节;以及将所述至少一个规则调节提供至所述至少一个客户端设备。
[0094] 示例10:根据示例9的系统,其中,所述状态信息包括错误描述符、使用数据、以及性能数据中的一个或多个。
[0095] 示例11:根据示例9或10的系统,其中,所述规则调节包括在以下方面中的一个或多个方面中的改变:遥测数据收集的冗长度、遥测数据收集的频率、遥测数据收集的时间、遥测数据收集的持续时间、以及遥测数据收集的目标。
[0096] 示例12:根据示例9至11中的任何一个的系统,其中,所述至少一个客户端设备是由所述源标识符标识的。
[0097] 示例13:根据示例9至12中的任何一个的系统,其中,所述源标识符包括多个个体的标识符,并且其中,所述至少一个客户端设备是由所述多个个体的标识符中的一个或多个标识的。
[0098] 示例14:一种用于启用动态遥测消息剖析和调节的系统,所述系统包括:处理系统;一个或多个计算机可读存储介质;在所述一个或多个计算机可读存储介质上实施的存储装置,其包括被映射至一个或多个所存储的遥测消息内容的多个规则调节;以及存储在所述一个或多个计算机可读存储介质上的用于遥测服务的程序指令,其中,所述程序指令当由所述处理系统执行时,引导所述处理系统响应于接收到包含源标识符和状态信息的至少一个遥测消息而执行以下操作:将所述源标识符和所述状态信息与所述一个或多个所存储的遥测消息内容进行比较以从所述多个规则调节中确定至少一个特定的规则调节;根据所述源标识符和所述状态信息以及所述至少一个特定的规则调节来确定至少一个目标客户端设备;以及将所述至少一个特定的规则调节提供至所述至少一个目标客户端设备。
[0099] 示例15:根据示例14的系统,其中,用于将所述源标识符和所述状态信息与所述一个或多个所存储的遥测消息内容进行比较的程序指令包括引导所述处理系统查询所述一个或多个所存储的遥测消息内容的指令。
[0100] 示例16:根据示例15的系统,其中,用于查询所述一个或多个所存储的遥测消息内容的程序指令包括引导所述处理系统选择所述一个或多个所存储的遥测消息内容中的特定的一个或多个的至少一部分的指令。
[0101] 示例17:根据示例15或16的系统,其中,用于查询所述一个或多个所存储的遥测消息内容的程序指令包括引导所述处理系统对所述一个或多个所存储的遥测消息内容中的特定的一个或多个的至少一部分执行算术函数、逻辑运算、以及按位运算中的一个或多个的指令。
[0102] 示例18:根据示例15至17中的任何一个的系统,其中,用于查询所述一个或多个所存储的遥测消息内容的程序指令包括引导所述处理系统对所述一个或多个所存储的遥测消息内容中的特定的一个或多个的至少一部分执行自定义函数的指令。
[0103] 示例19:根据示例15至18中的任何一个的系统,其中,用于查询所述一个或多个所存储的遥测消息内容的程序指令包括引导所述处理系统对所述一个或多个所存储的遥测消息内容中的特定的两个或更多个执行连结的指令。
[0104] 示例20:根据示例15至19中的任何一个的系统,其中,用于查询所述一个或多个所存储的遥测消息内容的程序指令包括引导所述处理系统在所述至少一个遥测消息的所述源标识符与所述一个或多个所存储的遥测消息内容之间执行连结的指令。
[0105] 示例21:一种用于启用动态遥测消息剖析和调节的系统,所述系统包括:用于接收包括源标识符和状态信息的至少一个遥测消息的模块;用于分析多个遥测消息内容的模块;用于从一组规则调节中选择至少一个规则调节的模块,其中,所述一组规则调节中的每个成员被映射至所述一个或多个相关状态信息参数;用于确定至少一个客户端设备以接收所述至少一个规则调节的模块;以及用于将所述至少一个规则调节提供至所述至少一个客户端设备的模块。
[0106] 示例22:根据示例21的系统,其中,用于选择所述至少一个规则调节的模块包括用于将所述至少一个遥测消息与所述一个或多个相关状态信息参数进行比较的模块。
[0107] 示例23:根据示例21或22的系统,其中,所述状态信息包括错误描述符、使用数据、以及性能数据中的一个或多个。
[0108] 示例24:根据示例21至23中的任何一个的系统,其中,所述规则调节包括在以下方面中的一个或多个方面中的改变:遥测数据收集的冗长度、遥测数据收集的频率、遥测数据收集的时间、遥测数据收集的持续时间、以及遥测数据收集的目标。
[0109] 示例25:根据示例21至24中的任何一个的系统,其中,所述至少一个客户端设备是由所述源标识符标识的。
[0110] 示例26:根据示例21至25中的任何一个的系统,其中,所述源标识符包括多个个体的标识符,并且其中,所述至少一个客户端设备是由所述多个个体的标识符中的一个或多个标识的。
[0111] 应当理解的是,在本文中所描述的示例和实施例仅仅是出于说明性目的的,并且根据其的各种修改或改变将被提议给本领域技术人员并且被包括在该申请的精神和范围内。
[0112] 尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解的是,在所附权利要求中所限定的主题不一定限于所描述的具体特征或动作。相反,在上文中所描述的具体特征和动作是作为实现所要求保护的实施例的示例形式而公开的,并且其他等同的特征和动作旨在处于权利要求的范围内。