买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:微软技术许可有限责任公司
摘要:一种操作遥测系统的方法包括:使用遥测系统的日志库来自动填充事件定义的模式中的第一组字段,以及填充模式中和或由事件作者选择的第二组字段。
主权项:1.一种操作遥测系统的方法,所述遥测系统用于收集仪器化应用的遥测数据,所述方法包括:实现事件摄取流水线以通过所述遥测系统的多个组件来穿梭事件;通过将所述遥测数据摄取至事件定义中的模式的第一部分模式,确定所述事件摄取流水线的质量;使用所述遥测系统的日志库,利用来自所述仪器化应用的所述遥测数据来自动填充所述第一部分模式中的第一组字段,所述第一组字段包括对于流过所述遥测系统的事件而言通用的字段,在所述仪器化应用的开发之后,所述仪器化应用利用代码而被增强以生成用于监测或测量所述仪器化应用的具体用户活动的性能的数据;以及填充所述模式的第二部分模式中由应用开发人员在所述仪器化应用的所述开发期间选择的第二组字段。
全文数据:遥测定义系统背景技术[0001]为了提高软件应用的质量,软件开发人员试图理解应用在包括顾客和客户在内的用户的手中是怎样执行的。虽然在应用开发期间进行诸如调试和日志记录之类的实验室或开发测试对于提高质量很重要,但是对于许多现代应用来说单靠实验室测试还不够。现代软件应用尤其是移动应用是高度交互的,并且难以在实验室中或者在开发期间模拟全面的用户交互。此外,若干环境条件影响用户对应用的体验。例如,网络连接性、GPS信号质量和设备硬件均差别很大。一些平台API甚至可以取决于设备电池中剩余的功率量来改变行为。这些各异的环境条件难以在实验室中重现。因此,许多软件开发人员致力于从现场收集诊断和性能跟踪数据。[0002]然而,用于在现场中跟踪应用性能的平台支持通常不充分。包括移动平台在内的主要平台向开发人员提供应用崩溃日志,但开发人员报告难以从众多日志中标识崩溃原因。此外,可能还包括无响应事件和例外情况的这种数据在检测性能问题时没有提供多少帮助。分析框架被设计来收集诸如用户人口统计之类的使用分析而不是性能数据。该信息通常不会有效地提供关于应用内的具体用户活动的信息。[0003]代之,寻求有关应用性能的有意义信息的开发人员将在应用中包括自定义的跟踪代码,这不是一件容易的事。例如,即使应用中的简单用户请求触发了多个异步调用,其中在线程之间进行复杂的同步,而标识这种代码中的性能瓶颈也需要正确地追踪跨异步边界的因果关系。这项具有挑战性的任务变得更加困难,因为跟踪开销最好保持在最低限度,以避免对应用性能的影响并且限制诸如电池和网络带宽之类的稀缺资源的消耗。发明内容[0004]提供本发明内容是为了以简化形式介绍将在下文的具体实施方式中进一步描述的概念选择。本发明内容不旨在标识所要求保护的技术方案的关键特征或必要特征,也不旨在被用于限制所要求保护的技术方案的范围。[0005]描述了包括实现过程的遥测系统。遥测系统可以与一个或多个仪器化应用通信,以从现场收集有关事件的数据并将相关和合并的数据转发给分析应用,以进行丰富的分析。遥测系统被配置为利用具有一个或多个模式schema部分的事件定义来操作,一个或多个模式部分用于声明和填充来自事件的数据,事件是事件定义的实例化。事件定义可以捕获事件作者诸如应用开发人员)希望追踪的动作或交互。本公开还包括用于与遥测系统一起使用的系统、方法和计算机可读介质的若干方面,其可以包括使用日志库来自动地即,明确地填充事件定义的模式中的第一组字段。事件作者可以选择来自另一模式的第二组字段。[0006]事件定义可以包括被配置为包括来自事件的数据的多个模式部分。在示例中,事件定义包括第一部分模式,第一部分模式具有由日志库自动填充而不需要来自事件作者诸如应用开发人员)的输入的字段。例如,第一部分模式可以包括用于诸如系统数据之类的通用于所有事件的数据的系统模式。事件还可以包括第二部分模式,其包括由事件作者选择的字段。例如,域部分模式包括具有广泛适用性的字段。在一个示例中,事件作者可以选择零个或更多个域部分模式,但是事件作者不控制字段的名称或字段的数据类型。代之,日志库预定义所选择的域模式中的字段和类型,并且利用数据来填充字段。第二部分模式还可以包括具有由事件作者定义的字段和类型的自定义模式,这些字段和类型可以适用于事件但原本不被包括在系统模式和域模式中。在一个示例中,第一部分模式和域部分模式未利用事件定义来定义;它们对所有事件定义是共用的。[0007]仪器化应用可以包括遥测层。遥测层包括自动捕获的第一部分模式或系统模式,其自动捕获共用的相关数据并且可以捕获用遥测流水线的事件摄取组件注入的信息。事件作者可以将与事件域或含义对准的第二部分模式包括在自定义模式中,以及在自定义模式中创建字段,以包括与事件相关的应用特定信息。[0008]在一个示例中,遥测系统包括大容量、低延时的事件和遥测平台。可以将遥测系统应用于驱动一个或多个客户端和服务生态系统。本公开的示例系统或过程能够利用全面的批量遥测将来自顾客的实时、交互式、事件驱动的工作流统一unify到云或计算机网络,并且将其返回给顾客。具有用于充分描述数据的强类型的固定和灵活的数据字段的强大共用模式支持丰富的分析。所描述的系统和过程为应用开发人员提供了以相对低的开销快速且容易地创建新的仪器化点。强大共用模式提供了跨多个平台高效收集的数据。附图说明[0009]附图被包括在内以提供对实施例的进一步理解,并且被并入本说明书中且构成本说明书的一部分。附图图示了实施例并且与说明书一起用于解释实施例的原理。将容易理解其他实施例和实施例的许多预期优点,因为通过参考以下具体实施方式它们变得更好理解。附图的元素不一定相对于彼此成比例。相同的附图标记表示对应的相似部分。[0010]图1是图示了计算设备的示例的框图。[0011]图2是图示了并入了计算设备的示例遥测系统的框图。[0012]图3是图示了图2的遥测系统的示例过程的框图。[0013]图4是图示了图2的遥测系统的示例模式的框图。具体实施方式[00M]在以下具体实施方式中,参考了附图,附图形成本文的一部分,并且在附图中通过图示的方式示出了其中可以实践本发明的具体实施例。应当理解,在不脱离本发明的范围的情况下,可以利用其他实施例并且可以进行结构或逻辑的改变。因此,以下具体实施方式不应被视为具有限制意义,并且本发明的范围由所附权利要求限定。应当理解,除非另外特别指出,否则本文所述的各种示例性实施例的特征可以彼此组合。[0015]图1图示了可以在操作环境中采用并且用于托管或运行计算机应用的示例性计算机系统,该计算机应用被包括在存储用于控制计算机系统诸如计算机设备)的计算机可执行指令的一个或多个计算机可读存储介质上,以执行过程。计算机实现的过程的示例包括使用可以被存储在计算机存储器中的遥测模式来生成遥测数据。[0016]示例性计算机系统包括诸如计算设备100的计算设备。在基本硬件配置中,计算设备100通常包括具有存储器104和一个或多个处理单元(S卩,处理器102的处理器系统。作为示例,处理单元可以包括芯片上的两个或更多个处理核或者两个或更多个处理器芯片。在一些示例中,计算设备还可以具有一个或多个附加的处理或专用处理器未示出),诸如用于图形处理器单元上的通用计算的图形处理器,以执行从处理器102卸载的处理功能。存储器104可以按层次结构来布置,并且可以包括一级或多级高速缓存。取决于计算设备的配置和类型,存储器104可以是易失性的诸如随机存取存储器RAM、非易失性的诸如只读存储器ROM、闪存等)、或者二者的一些组合。计算设备100可以采取若干形式中的一种或多种。这样的形式包括平板计算机、个人计算机、工作站、服务器、手持设备、消费电子设备诸如视频游戏机或数字视频录像机或其他设备,并且可以是独立设备或者被配置为计算机网络、计算机集群、云服务基础设施或其他的一部分。[0017]计算设备100还可以具有附加的特征或功能。例如,计算设备100还可以包括附加的存储装置。这样的存储装置可以是可移除的和或不可移除的,并且可以包括磁盘或光盘、固态存储器或闪存存储设备,诸如可移除存储装置108和不可移除存储装置110。计算机存储介质包括以用于信息的存储的任何合适方法或技术实现的易失性和非易失性、可移除和不可移除介质,信息诸如计算机可读指令、数据结构、程序模块或其他数据。存储器104、可移除存储装置108和不可移除存储装置110均是计算机存储介质的示例。计算机存储介质包括RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字多功能碟DVD或其他光存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备、通用串行总线USB闪存驱动器、闪存卡或其他闪存存储设备、或者可以用于存储所需信息并可以由计算设备100访问的任何其他存储介质。因此,传播信号本身没有作为存储介质的资格。任何这样的计算机存储介质均可以是计算设备100的一部分。[0018]计算设备100通常包括诸如USB连接、显示端口、专有连接及其他的一个或多个输入和或输出连接,以连接到各种设备来对计算设备提供输入和输出。输入设备112可以包括诸如键盘、指点设备例如,鼠标)、笔、语音输入设备、触摸输入设备或其他的设备。输出设备111可以包括诸如显示器、扬声器、打印机等的设备。[0019]计算设备100通常包括允许计算设备100与其他计算机应用115通信的一个或多个通信连接114。示例的通信连接可以包括以太网接口、无线接口、总线接口、存储区域网络接口和专有接口。通信连接可以用于将计算设备100耦合到计算机网络,计算机网络可以根据诸如拓扑、连接方法和规模之类的各种各样的特征而被分类。网络是由支持通信的通信信道互连的计算设备和可能的其他设备的集合,并且允许在互连设备间共享资源和信息。计算机网络的示例包括局域网、广域网、互联网或其他网络。[0020]图2图示了计算机网络202中的示例遥测系统200,其可以包括诸如计算设备100之类的一个或多个计算设备。为了说明,示例遥测系统200可以与执行仪器化软件应用206a-206c的一个或多个客户端计算设备例如,客户端设备204a-204c通信,并且还可以与执行分析软件应用210a-210b的一个或多个订户设备(例如,订户计算设备208a-208b通信。在一个示例中,客户端设备204a-204c和仪器化应用206a-206c通过网络202发起与遥测系统200的通信。[0021]仪器化指的是用代码对应用进行增强,该代码生成可以用于监测或测量应用的性能和使用、诊断错误和写入跟踪信息等的数据。程序员以在系统中监测具体组件的代码指令的形式来实现仪器化。当应用包含仪器化代码时,可以使用管理工具来管理该应用,以检查应用的性能。应用可以被仪器化以用于日志记录和遥测,其通常在开发期间围绕应用的内部结构进行定位并且在应用发布给实际用户时收集数据。[0022]遥测是自动化的远程测量和数据收集。例如,遥测数据可以表示在应用开发期间不可发现的信息,诸如顾客更喜欢哪些配置,顾客怎样使用应用中的特征,围绕错误或崩溃的情形是什么以及其他信息。遥测数据可以包括匿名软件版本信息、资源使用、存储器访问、使用中的操作系统以及其他许多示例。遥测系统200提供了工具来收集数据并将收集的数据浓缩成分析或人类可判读的报告。[0023]在一些示例中,仪器化应用206a_206c的用户可以确定将哪些遥测信息提供给遥测系统200。例如,用户可以选择在本地保留特定的信息,诸如个人信息或敏感信息,并且允许向分析软件应用提供其他信息。用户可以选择不将这样的信息作为遥测数据上传,并且遥测系统200将不能访问个人或敏感数据。[0024]遥测设计导致仪器化将追踪的事件或动作,并且应用通常被仪器化以追踪应用的一系列不同动作或与应用的交互。遥测仪器化由诸如应用开发人员或组件开发人员的事件作者提供,并且在某些示例中被施加到事件处理程序。在一个示例中,应用开发人员可能希望追踪应用中的几十个事件。事件定义是对具体事件的描述,并且包括在被称为模式的合同中阐明的字段列表,在该示例中模式可以提供用于声明和填充结构化数据的系统。事件包括在事件定义中描述的一组数据的实际实例化,并且该组数据被日志记录并被传输给遥测系统200。事件响应于所选择的动作或交互而被发出,并且事件的数据有效载荷或事件有效载荷描述了关于触发其创建的刺激、事件影响或二者的属性和语义。事件作者创建事件定义和仪器化代码,以填充事件并将事件传输给遥测系统200。[0025]遥测系统200包括例如接收格式化系统220、日志库222、处理系统224、实时系统226和事件存储228。由客户端设备204a-204c发送的遥测数据在遥测系统200处被接收,遥测系统200然后可以以低延时将事件转发给订户设备208a-208b。订户使用分析应用210a-210b可以声明过滤器以接收相关数据。遥测系统200可以被配置为利用声明和填充结构化或非结构化数据中的一个或多个模式来操作。在一个示例中,接收格式化系统220可以是接受由客户端设备204a-204c通过互联网提供的事件的web服务。日志库222向接收格式化系统220上传数据。接收转发系统220可以向处理系统224提供数据,以用于丰富的分析、批处理和报告。接收转发系统220还可以或是备选地向实时系统226提供数据,以用于实时或接近实时的索引、查询、监测和报警。例如,实时系统226可以包括从事件到系统响应的大于即时的操作期限。事件存储228可以向遥测系统200提供关于事件的参考信息。[0026]图3图示了通过遥测系统200的多个组件来穿梭事件的事件摄取流水线300。事件有效载荷可以取决于其在流水线300内的阶段而变化。事件摄取流水线可以被实现为遥测系统200中的一个或多个计算设备100中的过程。在该示例中,在302处,诸如应用206a-206c之类的仪器化软件应用向日志库222发出应用事件格式。日志库222可以包括代码库,该代码库可以例如接受事件、对数据进行序列化以用于传送、并且将事件上传给接收格式化系统220。日志库222可以包括用于多个平台的日志库,诸如用于Java平台的Java日志库,用于Android平台的Android日志库,以及其他遥测客户端。事件定义的第一部分模式包括使用日志库被自动填充有数据的一组字段。在一些示例中,遥测系统200的其他方面也可以填充第一组字段。事件作者可以从另一模式中选择也在流水线中被填充的第二组字段。[0027]在304处,日志库222向接收格式化系统220发送客户端事件格式。在一个示例中,取决于平台的不同日志库可以包括用于描述事件定义的共用文件格式和用于序列化的格式。在一个示例中,用于描述事件定义的格式可以包括用于图解化数据的序列化框架,诸如可从微软公司获得的Bond。用于有效负载序列化的文件格式可以包括诸如JavaScript对象表示法或JSON的数据交换格式。在306处,接收格式化系统220发出所摄取的事件格式。模式的字段在摄取时可以继续被填充有数据。例如,摄取数据可以被提供给第一部分模式,以确定流水线的质量。所摄取的事件可以以JSON被格式化,并且在308处被提供给实时系统,或者在310处被提供给批处理系统,例如以允许分析应用210a-210b查询数据。[0028]图4图示了在遥测系统200中用作模式或合同的示例事件定义400,其定义了被组成到事件定义400中的字段列表。在该示例中,事件定义包括被组成到多个模式部分中的字段,多个模式部分在事件定义400中被称为第一部分模式402和第二部分模式404。在一个不例中,第一部分模式402包括具有系统字段422的系统模式412,而第二部分字段404可以进一步包括多个部分,诸如具有域字段424的域模式414和具有自定义字段426的自定义模式416,这在下文更详细地进行描述。然而,在备选示例中,事件可以仅包括来自第一部分402的字段,并且可以可选地包括来自第二部分404的字段。在该示例中,事件定义可以可选地包括来自域模式414的字段,可选地包括来自自定义模式416的字段,或者如事件定义400中指示的包括来自域模式414和自定义模式416二者的字段。事件定义400还可以包括可能不出现在实际事件数据中的注释,诸如描述、所有权信息和字段数据类型。此外,字段可以包括默认值。[0029]示例中的字段定义包括名称和类型。类型可以包括基本数据类型诸如布尔型、各种整数型、浮点数、字符串)、容器列表、向量、集合、映射)以及复杂类型。在一个示例中,可以从序列化框架中所支持的那些类型中选择类型。然而,并非序列化框架中所支持的所有复杂类型都以数据交换格式被支持。在这种情况下,序列化格式中的复杂类型可以被转换为字符串类型。[0030]以JSON表示的事件的示例包括:[0032]第一部分模式402包括由本地系统上存在的日志库222定义并自动填充的字段422,其中,事件在诸如在流水线300之类的流水线中被发送。在一个示例中,第一部分模式402捕获共用相关字段并且可以涉及诸如应用206a-206c之类的仪器化软件应用的系统,并且可以表示系统数据。第一部分模式402还可以捕获在流水线300中由事件摄取组件注入的信息。第一部分模式402包括通常适用于来自仪器化应用的所有事件的字段,并且可以包括诸如事件时间、事件名称和发送者的互联网协议地址之类的项。在一些示例中,除了被自动填充的值之外,第一部分模式402还可以包括日志库从调用程序获得的字段422。在一个示例中,所有事件使用相同的第一部分模式。[0033]第一部分模式402包括通用并且被应用于流过遥测系统200的所有事件的字段422,并且包括要包括的特定字段422的选择在内的模式402的设计可以通过各种原则来引导,诸如跨各种各样的应用和平台(诸如操作系统)的一致标识符以及对应用开销的影响的考虑。第一部分模式使能关联并且可用于使用日志库222的自动仪器化。在一个示例中,第一部分模式402可以包括事件包络语义和摄取部分。[0034]事件包络包括用于在流水线300的组件之间传输事件信息的数据有效载荷。有效载荷可以包括原始事件和所定义的一组事件部分。事件包络语义可以包括字段422,诸如模式版本、事件名称、时间(包括日期)、采样率、跟踪上传事件的顺序的序列、仪器化密钥、标志、对系统构建或硬件替换可以是弹性的设备标识符、操作系统、包括分支和构建信息的操作系统版本、应用标识符、应用版本、用户标识符、以及在一些示例中用于自定义日志库字段的属性包。[0035]摄取部分可以在摄取时间被填充。用于摄取部分的字段可以包括事件由接收格式化系统220接收的时间、事件被接受时由接收格式化系统220看到的远程地址、事件认证和事件质量。[0036]第二部分模式404包括可选的域模式414、自定义模式416或二者。第二部分模式404包括由事件作者写入的代码而不是日志库222填充的字段424、426。在一个示例中,第二部分模式404包括具有预定义字段424的域模式414,诸如由遥测系统200或其他中心化群组定义,并且事件作者不控制字段424的名称或字段424的数据类型。自定义模式416由事件作者创建,并且可以用于应用特定的且对其而言没有域字段424存在的事件的场景或方面。可以将模板应用于第二部分模式404,以支持通常跨数个事件定义的字段424、426的重复使用。在一个示例中,模板被用于域模式414。模板支持定义可以跨多个事件定义一致重复使用的一组字段,以及在一些示例中支持当多个事件定义包括不同的域字段424时这样做。[0037]在一个示例中,域模式414与跨许多不同应用共用的特定场景或事件方面相关。例如,域模式414中的字段424可以包括日志记录错误、应用开始事件、应用结束事件、web服务API应用程序接口)调用成功、API调用失败以及许多其他示例。各种各样的应用和事件可以定义来自域模式字段424的事件,并且因此包括类似的字段和数据。因此,可以构建一组共用的报告和分析,以消耗来自使用相同域模式414的平台上的所有应用的所有事件。事件模板类似于抽象类,其允许例如中心化群组共享若干相关事件所包括的一组字段。在一个示例中,域字段424可以在事件被定义时被延迟绑定和选择。[0038]域模式414被一般化,以实现广泛的适用性。例如,可以存在域模式MediaUsage媒体使用而不是诸如播放歌曲、停止歌曲、播放视频、停止视频等的更具体的域模式,其更具体但是例如按媒体播放器使用模式。以下包括用于MediaUsage示例的域模式结构的Bond表示。在以下示例中,字段名称以骆驼拼写法camelCasing,而结构体用于存储多于一个的值的记录)、名称空间和事件简称以帕斯卡拼写法PascalCasing。类型包括字符串、32位无符号整数、和64位无符号整数。[0039][0041]自定义模式416由事件作者创建和定义。在一个示例中,事件作者可以确定自定义字段426的名称和数据类型。事件作者还负责在事件被实例化时填充自定义字段426。[0042]事件的以下示例部分包括域模式414和自定义模式416:[0044]在该示例中,Played是遥测数据,其使用了被扩展以添加自定义字段sessionDurationSec的MediaUsage模板。[0045]在下面的示例中,事件的一部分被定义为包括域模式414但没有自定义模式416,以利用空字段声明仅引用Microsoft.Telemetry.Data〈T中的域模式:[0049]};[0050]在以下示例中,事件的一部分被定义为包括自定义模式416但没有域模式414。在该示例中,在用户将音量设置为最大水平时事件激发,并且事件作者将自定义模式416定义成:[0052]在上文的示例中,事件可以在没有域模式的情况下被定义,并且可以从Base被继承以仅给予该事件自定义字段426。[0053]虽然本文已经说明和描述了具体实施例,但是本领域的普通技术人员应该理解,在不脱离本发明的范围的情况下,各种各样的替代和或等同的实现可以替代所示出和描述的具体实施例。本申请旨在覆盖本文所讨论的具体实施例的任何修改或变化。因此,意图是本发明仅由权利要求及其等同物来限制。
权利要求:1.一种操作遥测系统的方法,所述方法包括:使用所述遥测系统的日志库,自动填充事件定义的模式中的第一组字段;以及填充所述模式中由事件作者选择的和或第二组字段。2.根据权利要求1所述的方法,其中填充所述第二组字段包括来自所述遥测系统的预选字段。3.根据权利要求2所述的方法,其中所述预选字段利用对多个应用共用的数据而被填充。4.根据权利要求2所述的方法,其中所述预选字段包括预定义的名称和数据类型。5.根据权利要求1所述的方法,其中填充所述第二组字段包括来自所述事件作者的自定义字段。6.根据权利要求5所述的方法,其中所述自定义字段包括自定义名称和自定义数据类型。7.根据权利要求1所述的方法,其中所述第一组字段利用对所有事件共用的数据而被自动填充。8.根据权利要求7所述的方法,其中所述对所有事件共用的数据包括客户端系统数据。9.根据权利要求1所述的方法,其中所述模式中的所述第一组字段包括事件包络语义。10.根据权利要求1所述的方法,其中填充所述第二组字段包括来自所述遥测系统的预选字段和来自所述事件作者的自定义字段。11.根据权利要求1所述的方法,其中事件以数据交换格式被表示。12.—种遥测系统,包括:包括处理器和存储器的计算设备,所述计算设备被配置为:使用所述遥测系统的日志库,自动填充事件定义的模式中的第一组字段;以及填充所述模式中由事件作者选择的和或第二组字段。13.根据权利要求12所述的遥测系统,其中所述遥测系统通过计算机网络与仪器化应用通信。14.根据权利要求13所述的遥测系统,其中所述仪器化应用发起与所述遥测系统的通{目。15.根据权利要求13所述的遥测系统,其中所述日志库包括与所述仪器化应用的平台相对应的代码库。
百度查询: 微软技术许可有限责任公司 遥测定义系统
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。