用于计算机器的自动控制的动态命令生成的制作方法

文档序号:20499398发布日期:2020-04-21 22:38阅读:282来源:国知局
用于计算机器的自动控制的动态命令生成的制作方法



背景技术:

问题可能会在用户正使用应用时发生,诸如在应用启动之后,该应用迅速退出。然后,提供方可能会接收到关于问题的反馈。例如,用户可以经由专用于提供反馈的工具来报告问题。然而,由于提供方没有关于该问题的任何日志,因此所接收的大多数反馈是不可动作的。而且,提供方可能会接收到来自正经历问题的应用的报告。然而,由于没有日志在应用报告问题时被接收到,因此这些问题仍然是不可动作的。

附图说明

图1描绘了根据一些实施例的用于自动收集遥测信息的简化系统。

图2描绘了根据一些实施例的用于生成命令的方法的简化流程图。

图3描绘了根据一些实施例的命令列表的示例。

图4描绘了根据一些实施例的用于取回命令的方法的简化流程图。

图5描绘了根据一个实施例的计算机器的更详细的示例。

图6描绘了根据一些实施例的用于收集运行时遥测信息的方法的简化流程图。

图7描绘了根据某些实施例的示例计算机系统的简化框图。

具体实施方式

服务器系统可以接收针对应用所发生的问题的信息。例如,服务器系统可以接收正在运行应用的计算机器的计算机器标识符(id),以及正在经历问题的应用的应用名称。然后,服务器系统可以动态发起针对该应用的遥测信息的收集。例如,服务器系统可以生成诸如遥控命令的命令,该命令远程地将计算机器配置成收集针对该问题的针对该应用的遥测信息。然而,服务器系统可以不将命令推送到计算机器。而是,服务器系统可以将命令存储在未决命令列表中。

服务器系统可以不将命令推送到计算机器,因为在一些示例中,服务器系统可能无法连接到计算机器,因为服务器系统仅接收到机器id和经历问题的应用的应用名称。但是,计算机器被配置成向服务器系统查询在未决命令列表中与该计算机器相关联的任何命令。例如,计算机器可以定期地查询服务器系统,诸如每天一次、每12小时一次、每小时一次等。查询可以包括计算机器标识符,计算机器标识符允许服务器系统在未决命令列表中定位与计算机器id相关联的任何命令。服务器系统取回命令并且将命令发送给计算机器。命令可以包括用以将计算机器配置成收集针对应用的遥测信息的信息,诸如计算机器标识符、应用名称、命令名称以及执行命令所需的其他参数。然后,计算机器可以执行命令,该命令可以使计算机器执行收集针对应用的遥测信息的一个或多个动作。

遥测信息的一些示例可以包括日志文件信息,该日志文件信息可以是应用运行于其中的操作系统的日志文件,或者是应用日志文件。附加地,在启动应用时,计算机器可以开启运行时代理来监测应用。然后,运行时代理可以从应用或操作系统收集运行时信息。然后,计算机器将所收集的遥测信息返回给服务器系统。

未决命令列表的使用允许服务器系统动态地改变计算机器的操作以及限定计算机器收集什么遥测信息。例如,在接收到命令后,该命令动态地改变计算机器收集什么以作为遥测信息。然后,遥测信息可以用于改进应用的操作,但可以不专门解决计算机器上的当前问题。而且,在一些实施例中,不收集用户的身份;而是,服务器系统知道计算机器id。这允许服务器系统使用户身份保持匿名,但仍使计算机器收集遥测信息。

概述

图1描绘了根据一些实施例的用于自动收集遥测信息的简化系统100。系统100包括服务器系统102和计算机器104-1至104-n。服务器系统102可以被实施在任何数目的计算设备中,并且将理解,所描述的功能可以跨多个计算设备分布或在单个计算设备上执行。计算机器104可以是能够执行应用112-1至112-n的计算设备,诸如个人计算机器、移动设备、平板设备或其他类型的计算设备。

应用112可以是在操作系统上运行的应用,可以是操作系统本身,或者可以是在操作系统上运行的应用的组合。在一些实施例中,操作系统可以由提供方操作的服务器系统102开发和拥有,并且在操作系统上运行的应用可以由提供方拥有或可以不由提供方拥有。而且,将理解,应用112可以在计算机器104上运行或与计算机器104远程地运行。不同的计算机器104也可以执行不同的应用112。

在应用112的执行期间,问题可能发生。例如,问题可以包括:应用在被启动后迅速关闭、操作缓慢、或者用户或应用可能经历的其他问题。在一些实施例中,发生的问题可能与崩溃不同,崩溃可以在应用停止工作并退出时发生。崩溃报告服务可以报告崩溃以及与此有关的任何细节。该报告可以在报告中包括用户id。但是,在当前环境中的应用发生问题时,命令引擎106接收问题的报告,该问题的报告具有应用名称和机器id的指示,但可以不接收用户id。在一些实施例中,命令引擎106不与问题的报告一起接收正在使用计算机器104的用户的用户id或身份的任何指示。针对问题的报告使用户保持匿名。然而,在一些实施例中,可以接收用户id。而且,在一些实施例中,命令引擎106接收发生的问题的指示,诸如问题的描述是应用在开始之后很快关闭。然而,在其他实施例中,命令引擎106不接收已发生什么问题的指示。即,报告仅陈述应用112具有问题,但不标识该问题。

命令引擎106可以以不同方式接收问题。例如,用户可以经由反馈工具(例如,反馈界面或页面)报告问题,反馈工具可以与应用112分离。反馈工具可以不提供任何日志,而仅提供机器id和应用名称发生的问题的指示。而且,操作系统或应用可以将该机器id和应用名称的问题的描述发送给命令引擎106。在一些实施例中,当问题的描述被发送时,操作系统或应用可以不发送任何日志。

命令引擎106然后可以自动评估问题并且生成针对计算机器104的命令。该命令可以是遥控命令,其可以是远程控制计算机器104来执行一些动作的命令。然后,命令引擎106将命令存储在未决命令列表108中。该命令可以使计算机器收集遥测信息,遥测信息可以是由计算机器104收集并且被发送给服务器系统102的任何信息。因为命令引擎106不推送命令,所以在某一时刻,计算机器104向服务器系统102发送对命令的请求。然后,服务器系统102确定哪些命令对应于哪些计算机器104,并且将相应的命令发送给计算机器104,诸如将命令列表#1发送给计算机器#1,并且将命令列表#n发送给计算机器#n。

命令生成

图2描绘了根据一些实施例的用于生成命令的方法的简化流程图200。在202处,命令引擎106接收针对在应用112处发生的问题的报告。信息可以如上所述地被接收,诸如通过反馈工具或从应用112接收。在204处,命令引擎106确定针对该问题的机器id和应用名称。例如,报告可以包括机器id和应用名称,但是不包括与计算机器104相关联的用户的标识信息。

在206处,命令引擎106基于所接收的报告自动评估问题。例如,报告还可以包括对发生的问题的描述。但是,该问题可以不包括来自经历该问题的特定机器的日志。而是,报告中包括问题的标识。命令引擎106可以解析报告并且将规则应用于报告中的信息。规则可以包括参量和要采取的对应动作(如果有的话)。规则的示例可以是:如果问题#x发生n次,则生成命令#x。

基于对规则进行应用,在208处,命令引擎106确定是否生成针对该问题的命令。例如,命令引擎106可能不会针对接收到的所有问题都使遥测信息被收集在计算机器上。如上所述,服务器系统102可以评估和改进应用112的操作。即,服务器系统102不是仅在发生问题的计算机器上解决当前的问题。而是,从计算机器104接收到的信息可以用于全局地改进应用112。因此,并非每个问题都可以使命令被生成。例如,问题可能必须发生超过阈值的次数。该阈值可以跨使用应用112的多个计算机器104被全局应用,或者可以必须在特定计算机器上发生多次。而且,注意,问题的单次发生也可以触发命令的生成。

如果命令不应当被生成,则在210处,命令引擎106存储针对问题的信息。例如,可以针对该问题存储机器id和应用名称。该信息之后可以被用在关于是否针对当前接收到的问题来生成命令的评估中,或者被用在应用112的任何评估中。

如果命令应当被生成,则在212处,命令引擎106基于机器id、应用名称和规则来自动生成命令。例如,该命令可以是从可用命令中选择的特定命令,并且由包括机器id、应用名称、命令名称以及在评估期间被确定的任何额外参数的参数组成。如将在下面更详细地讨论的,命令可以使一个或多个动作在计算机器104上被执行。

在214处,命令引擎106将命令存储在命令列表108中。命令可以不被推送到计算机器104。而是,针对要被发送给计算机器104的命令,可能需要从计算机器104接收查询。

命令列表

图3描绘了根据一些实施例的命令列表108的示例。命令列表108可以包括针对多个机器id的命令。在其他实施例中,每个机器id可以有单独的命令列表108。命令列表108可以包括针对任何数目的机器id的任何数目的命令。而且,随着命令引擎106接收问题和生成命令,命令列表108可以动态地改变。

在302处,三个命令#1、#2和#3与机器id#1相关联。这些命令可以包括不同的命令名称#1、#2和#3。在这种情况下,命令可以使具有机器id#1的计算机器104针对相同的应用名称执行不同的动作。然而,在其他示例中,机器id#1可以与针对已经历了问题的多个应用的多个命令相关联。命令还可以包括可以被应用112用来收集遥测信息的任何参数。

在304处,示出了针对另一机器id#2的命令#10、#11和#12。这些可以是与上面描述的命令相同的命令,也可以是不同的命令。而且,这些命令可以针对相同的应用或针对不同的应用。

当命令引擎106从计算机器104接收到针对命令的请求时,该请求可以包括机器id。然后,命令引擎106可以从命令列表108中取回针对该机器id的命令。例如,命令引擎106使用机器id作为查询中的索引或参量,以从命令列表108中取回适用的命令。图4描绘了根据一些实施例的用于取回命令的方法的简化流程图400。在402处,命令引擎106从计算机器104接收对可用于与计算机器相关联的机器id的命令的查询。计算机器104可以定期发送查询,或者可以诸如在问题发生时触发查询。而且,该查询可以是由运行在计算机器104上的操作系统对任何命令的一般查询并且不与任何特定应用112有关,或者该查询可以请求针对特定应用112的命令。在一些示例中,提供方可以将操作系统配置成执行对命令列表的查询,并且命令引擎106利用操作系统中的该特征来改变计算机器104的操作以收集遥测信息。然后,在404处,命令引擎106用机器id来查询命令列表以取回针对该机器id的命令。例如,参考图3,如果机器id是机器id#1,则命令引擎106取回302处的命令。

在406处,命令引擎106将取回的命令发送给请求计算机器104。发送命令的方法可以基于接收到的查询。例如,查询可以包括允许命令引擎106联系计算机器104的信息,诸如该信息可以是计算机器104的地址。命令引擎106然后可以使用该地址来将命令发送给计算机器104。注意,命令引擎106先前可能无法将命令发送给计算机器104,因为命令引擎106不知道计算机器104的地址。

命令执行

在接收到命令之后,计算机器104可以执行命令以收集针对应用112的遥测信息。图5描绘了根据一个实施例的计算机器104的更详细的示例。代理110的动作可以被执行而无需用户执行任何动作。例如,代理110在操作系统510的后台被运行,并且在计算机器104请求和接收命令时被触发。在一些实施例中,用户可以选择允许代理110在后台运行。

代理110包括命令处理器502,命令处理器502响应于发送对命令的查询而接收命令列表。然后,命令处理器502可以解析命令列表以确定可以被执行的不同类型的命令,诸如运行时命令和日志文件命令。命令处理器502将日志文件命令发送给日志文件代理504,并且将运行时命令发送给运行时代理506。日志文件代理504和运行时代理506可以与操作系统510相关联,诸如两个代理可以与操作系统510一起被运送。

不同类型的命令可以执行不同的动作。例如,日志文件命令可以使日志文件代理504执行与诸如从日志中取回所存储的信息有关的动作。日志文件命令可以取回基于应用112和/或操作系统510的执行而已被保存的信息。而且,运行时命令可以使运行时代理506在应用112在计算机器104上运行时收集运行时信息。运行时命令动态地收集应用112在执行期间生成的信息。

日志文件代理504可以收集不同类型的日志。在一些实施例中,日志文件代理504可以收集操作系统日志。例如,日志文件代理504可以启用日志存储装置508中的存储器内记录,日志存储装置508可以是跟踪应用112的操作的循环缓冲器。日志可以是基于操作系统510跟踪应用112执行时发生的事件。可能发生的事件的示例包括针对应用迅速关闭问题的应用112关闭。事件的日志被存储到针对操作系统的日志文件中。日志文件代理504还可以收集应用特定的日志。例如,每个应用可以具有其自己的特定数据,这些特定数据在执行期间被记录。日志文件代理504可以使用软件跟踪来跟踪应用112的执行以确定应用特定的事件。事件的日志被存储到针对应用的日志文件中。

操作系统510可以基于所接收的运行时命令来调用运行时代理506。例如,运行时命令可以在应用112被启动时启动(或激活)运行时代理506,并且在应用112被关闭时关闭(或去激活)运行时代理510。运行时代理506可以包括监测代理,监测代理能够监测应用112的运行时执行。运行时代理506的一个示例是应用编程接口(api)记录器,其记录应用112调用的每一个操作系统api调用的返回代码。这可以是问题在何时/何处发生的良好的指示器。尽管描述了以上日志文件和运行时信息,但是代理110可以收集其他遥测信息或针对应用112的遥测。

在基于命令收集遥测信息后,代理110将遥测信息发送给服务器系统102或另一遥测设备。在一些示例中,用于发送遥测信息的触发器可以基于特定时间、周期性定时器、诸如应用迅速关闭等在计算机器104上发生的事件、允许用户选择按钮来提供反馈信息的反馈应用,或者在代理110检测到问题何时发生时。

图6描绘了根据一些实施例的用于收集运行时遥测信息的方法的简化流程图600。在602处,运行时代理506接收针对应用112的运行时命令。在604处,运行时代理506检测应用112何时被启动,并且然后运行时代理506针对应用112被启动。例如,操作系统510可以监测应用112何时被启动,并且当应用112的启动被检测到时,运行时代理506被启动。

在606处,运行时代理506在应用112正运行时收集运行时信息。运行时信息可以基于应用112在执行期间执行一些动作。

在608处,运行时代理506检测应用112何时被关闭。然后,在610处,运行时代理506被关闭。在612处,代理110将运行时信息返回给服务器系统102,或者存储该信息以供之后返回。

遥测信息评估

当服务器系统102从代理110接收到信息时,服务器系统102可以评估遥测信息。在一些实施例中,从多个计算机器104接收遥测信息。而且,遥测信息可以是匿名的并且不与特定用户相关联。但是,服务器系统102可以使用命令名称和机器id使遥测信息与原始问题相关。例如,机器id和命令名称可以用于查找使命令被生成的问题。在一些示例中,可能已经向多个计算机器104提供了针对应用的相同命令名称。服务器系统102可以针对该问题聚合来自多个计算机器104的遥测信息。然后,服务器系统102可以基于遥测信息来评估针对应用112的问题。注意,由于遥测信息的匿名性质,服务器系统102可以不专门解决计算机器104上的问题。即,如果机器id#1发送回遥测信息,则服务器系统102不会尝试修复该计算机器上的单个问题。而是,该遥测信息与针对应用112的其他遥测信息一起被评估,以解决关于应用112已发生的问题。然后,可以发布对应用112的更新以全局地修复该问题。

结论

因此,一些实施例提供了一种动态过程,其可以使应用112收集遥测信息。通过使用使代理110向服务器系统102发送对命令的查询的、计算机器104上的功能,服务器系统102可以引起对计算机器104的动态改变而不必联系计算机器104。而且,命令可以用于收集针对计算机器的遥测信息,而无需知道用户的身份。而是,针对一问题,可以仅知道机器id和应用名称。这使用户信息保持匿名。而是,对从计算机器104接收到的查询的响应被用来改变计算机器104的行为。

示例计算机系统

图7描绘了根据某些实施例的示例计算机系统700的简化框图。计算机系统700可以用于实施前述公开中描述的任何计算设备、系统或服务器。如图7中所示,计算机系统700包括一个或多个处理器702,一个或多个处理器702经由总线子系统704与多个外围设备通信。这些外围设备包括存储子系统706(包括存储器子系统708和文件存储子系统710)、用户接口输入设备712、用户接口输出设备714和网络接口子系统716。

总线子系统704可以提供用于使计算机系统700的各个组件和子系统按预期彼此通信的机制。尽管总线子系统704被示意性地示为单个总线,但是总线子系统的备选实施例可以利用多个总线。

网络接口子系统716可以用作用于在计算机系统700与其他计算机系统或网络之间传送数据的接口。网络接口子系统716的实施例可以包括例如以太网卡、wi-fi和/或蜂窝适配器、调制解调器(电话、卫星、电缆、isdn等)、数字用户线(dsl)单元等等。

用户接口输入设备712可以包括键盘、指向设备(例如,鼠标、轨迹球、触摸板等)、被合并到显示器中的触摸屏、音频输入设备(例如,语音识别系统、麦克风等)和其他类型的输入设备。通常,术语“输入设备”的使用旨在包括用于将信息输入到计算机系统700中的所有可能类型的设备和机制。

用户接口输出设备714可以包括显示子系统、打印机或诸如音频输出设备等的非视觉显示器。显示子系统可以是例如诸如液晶显示器(lcd)或有机发光二极管(oled)显示器的平面面板设备。通常,术语“输出设备”的使用旨在包括用于从计算机系统700输出信息的所有可能类型的设备和机制。

存储子系统706包括存储器子系统708和文件/磁盘存储子系统710。子系统708和710表示非瞬态计算机可读存储介质,其可以存储提供本公开的实施例的功能性的程序代码和/或数据。

存储器子系统708包括多个存储器,该多个存储器包括用于在程序执行期间存储指令和数据的主随机存取存储器(ram)718和其中存储固定指令的只读存储器(rom)720。文件存储子系统710可以为程序和数据文件提供持久(即非易失性)的存储,并且可以包括磁性或固态硬盘驱动、光驱动以及相关联的可移除介质(例如,cd-rom、dvd、蓝光等)、基于可移除闪存的驱动或卡和/或本领域已知的其他类型的存储介质。

应当理解,计算机系统700是说明性的,并且具有比系统700更多或更少的组件的许多其他配置是可能的。

上面的描述说明了本公开的各种实施例以及这些实施例的各方面可以如何被实施的示例。以上示例和实施例不应当被认为是仅有的实施例,并且被呈现以说明如由所附权利要求限定的本公开的灵活性和优点。例如,尽管已经关于特定的工艺流程和步骤描述了某些实施例,但是对于本领域技术人员而言明显的是,本公开的范围并不被严格地限制于所描述的流程和步骤。被描述为顺序的步骤可以被并行执行,步骤的次序可以被改变,并且步骤可以被修改、组合、添加或省略。作为另一示例,尽管已经使用硬件和软件的特定组合描述了某些实施例,但是应当认识到,硬件和软件的其他组合也是可能的,并且被描述为以软件实施的特定操作也可以以硬件实施,反之亦然。

因此,说明书和附图应当被认为是说明性而非限制性的。对于本领域技术人员而言,其他布置、实施例、实施方式和等价物将是明显的,并且可以在不脱离如所附权利要求书中阐述的本公开的精神和范围的情况下被采用。

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