
1.本申请总体上涉及由计算机系统生成的日志文件的分析。具体地,一些实施例采用机器学习技术将日志文件信息与已知系统行为的数据库相关。
背景技术:2.许多计算机系统在正常操作期间遇到异常状况。这些状况可以在日志文件中被注明。随着时间的流逝,描述在系统操作期间发生的各种状况的条目集合被创建。当系统无法正常执行其功能时,可以分析日志文件以确定问题的原因和可能的解决方案。但是,这种分析只有在问题已经发生之后才发生,这导致至少损失了系统的一些生产能力。因此,需要监测计算机系统的改进的方法。
技术实现要素:3.根据本公开的一些实施例,提供了一种方法,包括:基于准则,将多个日志消息分配给第一消息块;基于被分配给第一消息块的消息的内容,在向量空间中生成消息块向量;确定向量空间中的消息块向量的位置在向量空间中的经定义的体积内,经定义的体积与补救动作相关联;基于确定,执行补救动作。
4.根据本公开的另一些实施例,提供了一种包括指令的非瞬态计算机可读存储介质,该指令在被执行时将硬件处理电路配置为执行操作,操作包括:基于准则,将多个日志消息分配给第一消息块;基于被分配给第一消息块的消息的内容,在向量空间中生成消息块向量;确定向量空间中的消息块向量的位置在向量空间中的经定义的体积内,经定义的体积与补救动作相关联;基于确定,执行补救动作。
5.根据本公开的又一些实施例,提供了一种系统,包括:硬件处理电路;存储指令的一个或多个硬件存储器,该指令在被执行时将硬件处理电路配置为执行操作,操作包括:基于准则,将多个日志消息分配给第一消息块;基于被分配给第一消息块的消息的内容,在向量空间中生成消息块向量;确定向量空间中的消息块向量的位置在向量空间中的经定义的体积内,经定义的体积与补救动作相关联;基于确定,执行补救动作。
附图说明
6.在附图的各个图中以示例而非限制的方式图示了本公开,其中相似的附图标记指示相似的元素,并且其中:
7.图1是实现一个或多个所公开的实施例的示例系统的概览图。
8.图2是实现一个或多个所公开的实施例的示例接入点的框图。
9.图3a是示出对一个或多个所公开的实施例中的日志数据的处理的数据流程图。
10.图3b示出了示例网络管理装置。
11.图4示出了示例网络节点。
12.图5示出了示例通信设备。
13.图6a图示了可以被包括在一个或多个设备的系统日志中的示例消息600a。
14.图6b图示了来自在将上面讨论的一种或多种启发法应用于图6a中所图示的日志条目之后的、缩减的系统日志的示例消息。
15.图7a示出了由对图6b的消息的分析得出的示例表。
16.图7b图示了可以由一个或多个所公开的实施例生成的、消息块到消息块向量的示例映射。
17.图8是用于训练和信息存储过程的方法的流程图。
18.图9是可以在一个或多个所公开的实施例中实现的用于检测消息块的方法的流程图。
19.图10是用于生成针对消息块的消息块向量的方法的流程图。
20.图11是示出了在处理块中的每个消息时如何递增地更新消息块向量的序列图。
21.图12a是用于标识由于日志文件中包括的一个或多个消息而要被采取的补救动作的示例方法的流程图。
22.图12b是在一些实施例中用于生成消息块向量的示例方法的流程图。
23.图12c是在一些实施例中用于生成消息块向量的示例方法的流程图。
24.图13图示了可以由一个或多个所公开的实施例实现的示例数据结构。
25.图14图示了在其上可以执行本文所讨论的任何一种或多种技术(例如方法)的示例机器的框图。
具体实施方式
26.以下描述和附图充分图示了特定实施例,以使本领域技术人员能够实践它们。其他实施例可以并入结构、逻辑、电气、过程和其他变化。一些实施例的部分和特征可以被包括在其他实施例的那些部分或特征中,或代替其他实施例的那些部分或特征。权利要求中阐述的实施例涵盖那些权利要求的所有可用等效物。
27.提供所公开的实施例以用于对经由网络系统的日志消息所提供的信息的分析和表征。联网或分布式系统频繁提供系统日志。系统日志记录关于操作期间的系统操作的信息。在正常操作期间,可以生成一些日志消息以记录系统的操作参数。在特殊情形期间,生成附加日志消息以记录有助于诊断和解决可能存在的难题(issue)的信息。
28.当出现问题时,负责维护联网或分布式系统的工程师可以查阅系统日志以深入了解其操作,并制定故障排除策略。
29.提供所公开的实施例以用于向量空间中的这种系统日志的分析。在一些实施例中,个体日志消息被分组为相关消息的块。该分组可以基于每个消息的到达或生成时间。例如,彼此的阈值逝去时间内的消息可以被分组为一个块。备选地,可以基于消息本身的内容来对消息进行分组。例如,在一些方面,可以将由共同计算机/设备、共同软件组件或模块、或共同子系统所生成的消息分组为消息块。在一些情况下,基于消息满足多个准则(例如,在彼此的逝去时间内并由共同设备生成)来对消息进行分组。
30.可以对消息进行处理以从每个消息中移除不太相关的信息。例如,在一些方面,对消息进行处理以移除字段标签、标点符号或其他不太相关的信息。然后基于被分配给消息块的消息的内容生成向量。当附加消息被分配给特定块时,将重新生成针对消息块的向量。
31.针对消息块生成的向量对应于向量空间。在一些实施例中,消息块是特定的第一系统问题或难题的症状。通过将向量投影到向量空间中,可以在向量空间中定义包括该向量的体积(volume)。然后,该体积或集群可以与特定的系统问题或难题相关联。每个特定的问题或难题也可以与一个或多个补救动作相关联。因此,所公开的实施例还可以将一个或多个动作与向量空间中的体积或集群相关联。
32.因此,如果第二消息块(从第二系统难题中得出)被标识有也落入经定义的体积内的所得向量,则所公开的实施例可以推断:与第一难题类似的第二难题本身已经存在,并且与第一难题相关联的补救动作也适用于第二难题。
33.因此,提供所公开的实施例以用于在解决网络或分布式系统难题时的改进的响应时间。通过将块内的消息投影到向量空间中,可以关联类似的难题,使得共同的根本原因和/或补救动作可以被标识。
34.图1是实现一个或多个所公开的实施例的示例系统100的概览图。示例系统100包括:多个接入点(ap 1 142、
…
、ap x 144、ap 1'150、...、ap x'152),其中接入点可以是无线接入点、路由器、交换机或能够提供网络接入的任何其他设备;多个认证、授权和记账(aaa)服务器(作为示例仅示出一个aaa服务器110);多个动态主机配置协议(dhcp)服务器(作为示例仅示出一个dhcp服务器116);多个域名系统(dns)服务器(作为示例仅示出一个dns服务器122);多个web服务器(作为示例仅示出一个web服务器128)和网络管理系统(nms)136,例如,自动程式错误(bug)报告和解决系统(服务器),它们经由网络134(例如,互联网和/或企业内联网)而耦合在一起。网络134由许多路由器185和许多交换机180组成。网络通信链路(143、145、171、173)分别将接入点(ap 1 142、ap x 144、ap 1'150、ap x'152)耦合到网络134。网络通信链路111将aaa服务器(作为示例仅示出aaa服务器110)耦合到网络134。网络通信链路117将dhcp服务器(作为示例仅示出一个dhcp服务器116)耦合到网络134。网络通信链路123将dns服务器(作为示例仅示出一个dns服务器122)耦合到网络134。网络通信链路129将web服务器(仅示出一个web服务器128)耦合到网络134。系统100还包括多个用户装备设备(ue 1 138、...、ue z 140、ue 1'146、...、ue z'148)。用户装备设备是向诸如人之类的用户所使用的通信设备或诸如iot设备之类的自动化设备提供网络接入的任何有线、无线或光学装备。一些ue(138、140、146、148)是可以在整个系统100中移动的无线设备。
35.系统100接入点集位于不同的客户场所。例如购物中心的客户场所1 102包括接入点(ap 1 142、
…
、ap x 144)。例如体育场的客户场所2 104包括接入点(ap 1'150、
…
、ap x'152)。如图1中作为示例所示,ue(ue 1 138、
…
、ue z 140)当前位于客户场所1 102;ue(ue 1'146、
…
、ue z'148)当前位于客户场所2 104。服务器、路由器、交换机、ap、ue nms和附接到网络的其他服务器中的每一个可能而且经常包括系统日志或错误日志模块,其中这些设备中的每个设备都记录设备的状态,包括正常操作状态和错误状况。
36.图2是被配置为实现一个或多个所公开的实施例的示例接入点的框图。图2中所示的接入点200可以实现以上关于图1讨论的接入点ap 1 142、
…
、ap x 144、ap 1’150、
…
、ap x’152中的任何一个接入点。
37.接入点200包括:有线接口230;无线接口236、242;例如cpu的处理器206;存储器212;以及组件的组装件208(例如硬件组件的组装件、例如电路的组装件),它们通过总线
209耦合在一起,各种元件可以经由总线209互换数据和信息。有线接口230包括接收器232和发射器234。有线接口将接入点200耦合到图1的网络和/或互联网134。第一无线接口236(例如无线wi-fi接口、例如802.11接口)包括:耦合到接收天线239的接收器238,接入点可以通过接收天线239从例如无线终端的通信设备接收无线信号;以及耦合到发射天线241的发射器240,接入点可以通过发射天线241向例如无线终端的通信设备发射无线信号。第二无线接口242(例如蓝牙接口)包括:耦合到接收天线245的接收器244,接入点可以通过接收天线245从例如无线终端的通信设备接收无线信号;以及耦合到发射天线247的发射器246,接入点可以经由发射天线247向例如无线终端的通信设备发射无线信号。
38.存储器212包括例程214和数据/信息216。例程214包括组件的组装件218(例如,软件组件的组装件)和应用编程接口(api)220。数据/信息216包括:配置信息222;设备状态日志224,其包括被捕获为系统日志或错误日志中的消息的错误事件和正常事件;以及在发现不正常消息流的情况下要被采取的补救动作226的集合。
39.图3a是示出模型训练过程300和分类过程320的数据流程图。图3a示出了日志文件集302。日志文件302可以由一个或多个网络组件生成。如以上所讨论的的,日志文件存储与联网系统的操作有关的信息。日志文件可以存储与联网系统的错误和/或正常操作有关的信息。一些所公开的实施例可以处理日志文件302以提取对本文所公开的实施例有意义的数据。如下面更详细地讨论的,在一些实施例中,诸如词频率-逆文档频率(tfidf)之类的启发法和算法从日志文件302生成短语304的缩减的系统日志。短语由从日志文件中提取的有意义的关键字、消息或消息序列组成。在此上下文中,“有意义”指示:关键字、消息或序列提供对被监测网络系统正在发生的一个或多个问题的根本原因的指示。一旦已经处理日志文件以标识有意义的短语,则该短语被编码到向量空间306中。可以通过多种方法来执行编码。在一些示例实施例中,doc2vec被用来将短语编码到向量空间中。在一些其他实施例中,word2vec被用来将短语编码到向量空间中。短语到向量空间的编码是状态性的。换言之,随着编码的进行,向量空间编码的状态被维护,使得短语的后续编码受到短语到向量空间中的先前编码的影响。
40.一旦短语已经被向量化,向量的集群308就被标识。例如,在一些实施例中,彼此的阈值距离内的短语向量306可以被分组到集群308中。在一些实施例中,可以确定向量空间中的质心,其中质心的阈值距离内的向量被分组到集群308中的单个集群中。
41.在将向量集群为向量之后,确定与特定集群相关联的问题的一个或多个根本原因和/或解决方案是否被确定。在一些示例实施例中,这可以经由与缺陷数据库310的交互来达成。难题跟踪数据库可以提供api,提供该api以用于难题报告的编程性查询和键入。难题跟踪数据库的一个示例是jira。一些所公开的实施例可以与难题跟踪数据库接口以确定根本原因、问题和/或解决方案是否与特定集群相关联。例如,难题跟踪数据库可以被配置为记录向量空间内与问题、根本原因、修复和/或解决方案相关联的位置。如果没有记录与对应于向量集群的向量空间的特定区域相关联,则所公开的实施例可以在难题跟踪数据库中生成新记录。新记录可以存储与集群有关的信息,诸如与集群相关联的日志记录、与日志记录相关联的时间等。
42.图3a还图示了从健康检测组件322、自动日志收集组件324、日志处理组件326、集群标识组件328到缺陷数据库搜索和修复建议组件330的数据流。
43.图3b示出了示例网络管理装置300。在一个或多个所公开的实施例中,网络管理装置实现实时和/或预测性故障检测网络管理节点。在一些实施例中,网络管理装置300是网络管理节点,例如,诸如网络管理自动程式错误报告和解决服务器之类的网络管理服务器。在一些实施例中,图3b的网络管理装置300是图1的网络管理系统(nms)136。在一些实施例中,网络管理装置300是诸如通过图1中的示例所示的接入点或设备中的任何一个之类的接入点或接入点的一部分。
44.网络管理装置300包括:通信接口330;处理器306;输出设备308,例如显示器、打印机等;输入设备310,例如键盘、小键盘、触摸屏、鼠标等;存储器312;以及组件340的组装件,例如硬件组件的组装件,例如电路的组装件,它们经由总线309耦合在一起,各种元件可以经由总线309互换数据和信息。在一些实施例中,通信接口330包括以太网接口。通信接口330将网络监测系统300耦合到网络和/或互联网。通信接口330包括:接收器332,网络监测装置可以经由接收器332从诸如aaa服务器、dhcp服务器、web服务器、路由器、交换机之类的各种设备接收数据和信息,例如包括服务相关的信息,例如诸如在系统日志或错误日志中登记的消息之类的消息;以及发射器334,网络监测装置300可以经由发射器334发送数据和信息,例如包括配置信息和指令,例如对接入点、路由器、交换机或任何附接到网络的任何其他服务器的指令,以重启、改变操作参数、下载并安装另一sw版本等。
45.存储器312包括例程314和数据/信息317。例程314包括组件的组装件318(例如,软件组件的组装件)和应用编程接口(api)320。数据/信息317包括:配置信息322;系统日志中捕获的消息324,其包括消息和/或消息字段以及定时信息,例如消息在系统或错误日志中被登记的时间。存储器312还包括消息块集群相关的信息319,其包括消息块集群定义信息325、要被采取的动作信息326和针对对应集群的消息块id 327。在信息329中,第一行提供标题,而每个附加行提供针对一个消息块的信息。例如,第二行对应于针对第一消息块集群的消息块集群定义,该第一消息块集群由在信息319的第二行的第一元素中指定的体积所定义的第一消息块向量集群表示或与之相对应。作为示例,信息319的行2的第二列326示出了与发现消息块对应于消息块集群1时相对应的要被采取的动作,例如增加ap传输功率级别,并且第三列327示出了集群1对应于标签id 19864,其中标签或id可以用作进入诸如jira之类的程式错误跟踪系统的参考条目。信息319的行3包括针对消息块集群2的信息,该信息包括:定义对应于消息块2的、例如就n个维度的体积而言的、消息块向量集群的信息,以及消息块集群2还对应于标签id 72956的指示,其中标签或id可以用作进入诸如jira服务之类的程式错误跟踪系统的参考条目。附加信息和动作可以被包括并且通常被包括在针对与不良服务相对应的其他消息块的信息319中。针对与良好服务相关联的消息块的消息块定义信息也可以被包括在信息319中,但对于被包括在信息319中的与良好服务相对应的消息块,可以省略并且通常省略补救动作信息。
46.补救动作可以由系统管理员基于过去的经验来配置。根据一些示例实施例,可以将补救动作下载到特定的ap。根据其他实施例,一旦不正常消息流被也可以驻留在存储器312中的消息传送模型327检测到,就自动调用补救动作。
47.存储器312还包括被检测到的用于一个或多个消息序列(例如,通信控制相关的消息块)的消息块信息350。在一些实施例中,每个消息块可以标识始发该块中包括的消息的设备。在一些实施例中,消息块可以进一步指示与始发设备通信的其他设备。在一些实施例
中,除了标识消息块中所涉及的设备的信息之外,消息块信息350还包括针对每个消息块的当前消息块向量值。该值通常将在接收到对应块中的消息时被更新,其中将该值与消息块集群定义信息进行比较,以确定该消息块是否与可以由落在被用来定义信息319中的消息块集群的消息块向量集群体积之内的、消息块的消息块向量所指示的、经定义的消息块集群相匹配。作为示例,消息块信息350被示为包括针对多个消息块(例如,消息块1到消息块x)的消息块信息(351、
…
、353)。
48.图4示出了示例网络节点400。在一个或多个所公开的实施例中,网络节点400实现附接到网络134的设备或服务器,例如,路由器、交换机、aaa服务器、dhcp服务器、dns服务器、web服务器等,或诸如例如路由器185、交换机180等之类的网络设备。在一些实施例中,图4的网络节点400可以是图1的服务器110、116、122、128或图1的路由器185、交换机180。例如服务器的网络节点400包括:通信接口402,例如以太网接口;处理器406;输出设备408,例如显示器、打印机等;输入设备410,例如键盘、小键盘、触摸屏、鼠标等;存储器412;以及组件的组装件416,例如硬件模块的组装件,例如电路的组装件,它们经由总线409耦合在一起,各种元件可以通过总线409互换数据和信息。通信接口402将网络节点400耦合到网络和/或互联网。尽管作为示例仅示出了一个接口,但是本领域技术人员应该认识到,路由器和交换机可以并且通常确实具有多个通信接口。通信接口402包括:接收器420,网络节点400(例如服务器)可以经由该接收器420来接收数据和信息,例如包括操作相关的信息,例如注册请求、aaa服务、dhcp请求、简单通知服务(sns)查找和网页请求;以及发射器422,网络节点400(例如服务器)可以通过该发射器422发送数据和信息,例如包括配置信息、认证信息、网页数据等。
49.存储器412包括例程428和数据/信息430。例程428包括组件的组装件432(例如,软件组件的组装件)和数据信息430。数据信息430包括系统日志和/或错误日志。
50.图5示出了示例通信设备500。在一个或多个所公开的实施例中,通信设备500可以实现用户装备(ue)设备,诸如用户装备ue 1 138、
…
、ue z 140、ue 1'146、
…
或ue z'148中的任何一个或多个。通信设备500(例如,ue)包括:有线接口502;无线接口504;处理器506,例如cpu;存储器512;以及组件的组装件516,例如硬件模块的组装件,例如电路的组装件,它们经由总线509耦合在一起,各种元件可以通过总线509互换数据和信息。有线接口502包括接收器520和发射器522。有线接口502将通信设备500(例如,ue)耦合到图1的网络和/或互联网134。
51.无线接口504包括蜂窝接口524、第一附加无线接口526(例如802.11wifi接口)和第二附加无线接口528(例如蓝牙接口)。蜂窝接口524包括:耦合到接收器天线533的接收器532,通信设备500(例如ue)可以通过该接收器天线533从例如ap 1 142、
…
、ap x 144、ap 1'150、
…
、apx'152的接入点接收无线信号;以及耦合到发射天线535的发射器534,通信设备500(例如ue)可以通过该发射天线535向例如ap 1 142、
…
、ap x 144、ap 1'150、
…
、apx'152的ap发射无线信号。第一附加无线接口526(例如wi-fi接口,例如802.11接口)包括:耦合到接收天线537的接收器536,通信设备500(例如ue)可以经由接收天线537从通信设备(例如ap)接收无线信号;以及耦合到发射天线539的发射器538,通信设备500(例如ue)可以经由发射天线539向通信设备(例如ap)发射无线信号。第二附加无线接口528(例如蓝牙接口)包括:耦合到接收天线541的接收器540,通信设备500(例如ue)可以经由接收天线541从
通信设备(例如ap)接收无线信号;以及耦合到发射天线543的发射器542,通信设备500(例如ue)可以经由发射天线543向通信设备(例如ap)发射无线信号。
52.存储器512包括例程528和数据/信息517。例程528包括组件的组装件515,例如软件组件的组装件。数据/信息517可以包括配置信息以及ue 500的正常操作所需的任何其他信息。数据信息还包括系统日志或错误日志。
53.图6a图示了可以被包括在一个或多个设备的系统日志中的示例消息600a。设备可以包括图1的系统中的ue、ap、服务器、路由器、交换机等中的任何一个或多个。消息601、602、
…
607中的每一个均以时间戳开始。例如,消息601以时间戳610a开始,并且消息602以时间戳610b开始。消息607以时间戳610c开始。为了保持附图清晰,未具体标识用于其他消息的其他时间戳。
54.图6b图示了来自在将以上讨论的一种或多种启发法应用于图6a中图示出的日志条目之后的、缩减的系统日志的示例消息600b。例如,在示例消息600b中,诸如时间戳610a-b之类的、图6a的时间戳被替换为自紧接的先前消息以来的时间增量620b。来自图6a的时间戳610a被替换为预定特殊字符,其在图6b中被图示为负号(-)、被标识为620a。这是针对日志文件中的第一消息的特殊情况,如消息601和601r所表示。
55.如以上所解释的,日志文件可以最初包括使系统日志被人类可读的单词或词语。如本文所述,为了完全训练机器学习模型以生成结果,可能不需要这些词语。例如,在日志文件中的位置足以传达信息的含义的情况下,可以移除描述该含义的单词和/或词语,以缩减日志文件的整体大小和复杂性。这一点的示例在比较图6a与图6b时被示出。在图6a-图6b中,消息601被映射为缩减的消息601r,消息602被映射为缩减的消息602r,消息603被映射为缩减的消息603r,消息604被映射为缩减的消息604r,消息605被映射为缩减的消息605r,消息606被映射为缩减的消息606r,并且消息607被映射为缩减的消息607r。
56.一些所公开的实施例分析了两个消息之间的时间差,例如,作为示例,该时间差在图6b的日志文件中被示为620b。与消息603和604之间的增量相比,消息601、602和603之间的时间增量被更紧密地分组在一起(作为示例,对于消息604r和605r,被示为条目620d和620e)。
57.这样,所公开的实施例可以将消息601、602和603包括在第一块中,而将消息604、605和607包括在第二块中。
58.图7a示出了由对600b的消息的分析得出的示例表700a。该分析将图6b的在消息块中具有其相应位置的消息映射为消息向量。每个消息向量包括多个元素。每个元素的值对应于缩减的消息块向量的n个维度之一。
59.在图7a的表700a中作为示例示出的信息集中,第一行720包括针对每列的标题。第一列710存储消息的消息id。例如,图6b的第一消息601r可以被分配等于一(1)的值的消息标识符,第二消息602r可以用具有二(2)的值的第二消息标识符来标识等。备选地,在一些实施例中,表700a可以包含整个消息,而不仅仅是消息标识符。
60.第二列712存储针对在列710中标识的消息的向量。行721、722、
…
749中的每一行存储从系统日志的不同消息导出的数据。如以上所解释的,这些消息中的每一个都由至少一些所公开的实施例进行处理以生成列712中所图示的向量。每个向量的各个值基于每个消息出现在缩减的消息日志中的次数和消息在日志文件中的按消息次序的位置。尽管图7a
图示了五(5)维的向量,但是各种实施例可以包括任何次序并且实际上任何维数的向量。
61.图7b图示了消息块到消息块向量的示例映射700b,该消息块向量可以由一个或多个所公开的实施例生成。图7b的表700b示出了第一行750,其包括针对每列的标题。第一列780提供针对消息的消息块id。列782指示被分配给由列780标识的消息块的消息的序列。每个消息块中分配的消息的数目可以不同。例如,第一消息块751包括八个消息,第二消息块752包括六个消息,第三消息块753包括四个消息,并且第四消息块754包括八个消息。
62.第三列784指示针对由列780标识的消息块而生成的向量。可以使用下面将更详细讨论的机器学习方法来生成向量。被存储在列784中的向量可以包括n个维度;为了解释的简明性和清楚性,图7b使用n=5。
63.图8是用于训练过程和信息存储过程的流程图800。下面关于图8和过程800讨论的一个或多个功能可以由硬件处理电路执行。例如,一个或多个硬件存储器可以存储指令,该指令在被执行时将硬件处理电路配置为执行一个或多个功能。
64.一些所公开的实施例使用过程800的输出来对消息块进行集群,并且将消息块与补救动作相关联。如以上所解释的,对应于共同根本原因的块被分组成集群。然后,每个集群被分配补救动作,当在被监测的系统中标识该集群时可以采取该补救动作。
65.集群可以通过其质心来标识。质心可以被表示为向量。在一些实施例中,向量的元素表示针对属于该集群的块向量的平均值。备选地,集群可以通过该集群所占据的向量空间中的体积的边界来定义。其他实施例可以以某种其他方式表示块的集群。
66.过程800在开始操作805处开始,并且然后移至操作810,该操作810标识消息序列。在一些示例实施例中,操作805还可以确定每个消息相对于其他经标识消息的位置。
67.在操作811中,将经标识消息序列存储在训练集数据中。训练集数据可以稍后被用来训练机器学习模型。
68.在操作812中,将一种或多种启发法应用于到805的消息序列。在一些示例实施例中,一种或多种启发法可以移除消息的被分类为冗余的部分,诸如单词或词语。例如,在一些示例实施例中,经标识消息内的数据可以通过数据在消息本身内的相对位置而被标识。在这种情况下,标识该数据的人类可读标签可能是冗余的,或者至少对于进一步处理而言是不必要的。为了缩减由本公开的实施例处理的数据的大小,在一些实施例中,该冗余数据被移除。上面关于相对于图6a的图6b图示了移除消息部分的示例。
69.在操作813中,生成被观察消息的词典,该词典具有针对经标识消息的条目。在考虑消息定时的实施例中,可以生成词典以包括指示每个经标识消息被创建的时间的信息。如以上所讨论的,一些实施例在将消息集群为块时考虑消息之间的逝去时间。在一些方面,在操作813中生成的词典可以包括在图6b中作为示例示出的词典600b的特性和/或数据字段中的一个或多个。
70.在操作814中,消息块边界被标识。例如,如上所述,一些所公开的实施例可以基于消息之间的逝去时间来标识消息块边界。例如,在第一阈值时间段内生成的消息可以被分配给共同块,而在第二阈值时间段之后生成的消息可以被分配给不同的块。在一些示例实施例中,可以动态地确定消息到消息块的分配。例如,可以确定第一消息集之间的逝去时间的移动平均值。当后续块在例如大于移动平均值的一个标准偏差的逝去时间处被生成时,后续块可以被分配给与第一消息集不同的块。在一些实施例中,系统可以使用除了消息之
间的定时之外的启发法。例如,在一些实施例中,过程800标识表示消息块的开始的预定条件或表达式(例如,由正则表达式定义所指定的)。这些表达式包括但不限于“pc在...处”或“lr在
…
处”。
71.在操作815中,针对词典中包括的每个消息或消息/定时组合生成消息向量。所生成的消息向量包括n个维度。n个元素中的每一个基于消息的特定的一个或多个特征而被生成。这些特征可以包括:消息的频率、消息在消息块内的相对位置、消息与在前消息之间的定时、消息的特定字段的值或其他特征。在一些示例实施例中,使用诸如doc2vec()或word2vec()之类的向量化库来生成消息向量。在这些示例实施例中,向量的维度可以各自基于消息的整体。在一些示例实施例中,消息向量被存储在类似于图6b的示例的数据结构中。
72.操作进行到操作820,在操作820中,生成训练数据集中的个体消息块的消息块向量。消息块可以通过各种设备而被写入到系统日志中。一些消息块表示设备的标称操作,而其他消息块表示作为整体而被设备或系统遇到的异常状况。
73.日志中的历史消息被用来有利于训练。在一些实施例中,在训练之前,系统监测特定设备的系统(或错误)日志中的消息。根据另一实施例,诸如图1的网络之类的网络中的所有或一些设备将其系统日志转发给图1的网络管理系统136。根据又一实施例,仅在错误状况被检测到时,设备才将其日志转发给网络管理系统以进行分析。系统日志的监测在一个时间段内发生。在该时间段期间,可以存储属于多个不同消息块的消息。
74.如以上所讨论的,可以通过至少一些所公开的实施例自动确定将多个消息的一部分集群成单个消息块。例如,如上所述,一些实施例可以采用启发法将消息集群成块,或以其他方式对消息进行分组,例如基于(多个)消息的创建时间。在一些实施例中,以时间集群的消息可以与共同消息块相关联。在一些示例实施例中,可以根据生成消息的技术功能或组件来对消息进行集群。例如,由特定网络接口、特定设备或特定软件组件所生成的消息可以被集群到第一消息块中,而由第二设备、接口或软件组件所生成的消息可以被集群到第二消息块中。备选地,在一些实施例中,可以执行消息与消息块的手动关联。例如,可以显示用户界面,其中用户界面被配置为接收指示关联的输入。图6b图示了基于消息的创建时间将消息集群到消息块中的示例。
75.在一些实施例中,针对特定消息块的消息块向量的生成基于该块的每个消息的创建日期。在一些示例实施例中,消息块向量可以基于每个消息的创建日期的相对次序。
76.在操作820中生成消息块向量之后,过程800移至操作825,操作825将消息块向量进行集群。在操作825中,可以使用各种集群技术中的任何一种,诸如用于机器学习的那些集群技术,以将消息块向量映射到集群中。在一些示例实施例中,可以使用机器学习模型来对消息块进行集群。在一些示例实施例中,对消息块进行集群可以包括:在两个或更多个消息块向量的预定义距离内的向量空间中定义质心点。然后,可以定义向量空间内的体积以包含预定义距离内的向量。然后,该体积定义集群。落在经定义的体积内的任何消息或消息块向量都被认为被包括在由该体积定义的集群中或与之相关联。
77.在操作825中的集群的结果是诸如图3b的消息块集群317之类的多个消息块集群定义,其在操作826中被存储。消息集群定义可以包括并且有时确实包括:针对消息块向量的n个元素中的每一个元素的个体值,以及指示与仍然属于集群的消息可能发生的、元素值
之间的允许偏差的范围。
78.在一些实施例中,如以上所讨论的,集群定义定义了向量空间内的体积。落在经定义的体积内的向量被包括在集群中或与集群相关联。
79.在操作827中,每个消息集群与标称系统操作或异常状况相关联。在一些示例实施例中,标称操作指示:被监测的系统正操作在服务级别协议内、或者正操作在系统规范所指定的参数内。当系统性能偏离可接受的参数值或被指定为标称的范围时,可能会发生异常状况。在一些实施例中,可以自动完成每个消息集群的这种分类。例如,在一些示例实施例中,低于预定义级别的、针对与集群中的消息块相对应的通信会话的服务级别度量可以被认为与良好服务级别集群相对应,该预定义级别被用来标识被认为不与故障设备相对应的其余消息块集群的故障设备。尽管在一些实施例中,消息块集群的标记是自动执行的(无需人类输入)。在一些其他实施例中,可以提供手动标记以将消息块集群与系统行为和/或性能的分类相关联。
80.对于与异常状况相关联的消息块集群,消息块集群中包括的大多数甚至所有消息都可能是异常状况的指示,并且还可能指示异常状况的根本原因。因此,补救动作可以与集群相关联。
81.在操作835中,诸如图3b的动作326之类的补救动作与至少一些与异常状况相关联的集群相关联。集群与补救动作之间的关联被存储在数据库中。可以在日志文件分析期间依赖数据库以确定在检测到消息块集群时要采取的补救动作。
82.因此,过程800生成被提供以用于要被实时处理的消息块的信息,该信息被检查以确定消息块是否对应于要对其采取补救动作的消息块向量集群。通过实时采取补救动作,可以改善或避免一些异常状况。例如,在一些情况下,在系统的用户注意到任何性能下降之前,异常状况的“主导指标”可以被检测并改善。这将在下面进一步讨论。
83.图9是可以在一个或多个所公开的实施例中实现的用于检测消息块的过程的流程图。在一些示例实施例中,下面讨论的一个或多个功能可以由硬件处理电路来执行。在一些示例实施例中,存储在电子硬件存储器中的指令将硬件处理电路配置为执行以下讨论的功能中的一个或多个功能。在一些示例实施例中,指令被包括在网络管理系统136中。在一些实施例中,以下关于图9讨论的功能中的一个或多个功能可以由被配置为收集系统或错误日志的设备执行,或者在附接到网络的任何其他服务器上被执行。在一些示例实施例中,可以与消息在系统或错误日志中的存储并行地执行过程900。在这些示例实施例中,过程900可以例如在消息块的日志记录进行中的同时实时地检测和校正可能导致诸如图1中描述的网络之类的网络的用户所遇到的不良的设备或网络性能的故障或问题。
84.流程图900中所示的方法以开始操作905开始,操作905与网络管理系统的处理器相对应,操作905开始执行例如由网络管理系统300的处理器306执行的实时监测和网络管理例程的指令,其可以被用作并且有时被用作通过图1中作为示例所示出的系统的网络管理系统136。
85.方法900从开始操作905进行到操作910,该操作910从日志中获取消息。该日志可以是系统日志或错误日志。如上所述,在一些实施例中,来自错误日志的消息指示消息在日志中被登记或被创建的时间。提供该指示以用于确定序列中的消息之间的次序和/或逝去时间。该定时信息与其他启发法一起使用,以确定该消息所对应的特定消息块。在至少一些
实施例中,如先前所讨论的,个体消息块对应于特定设备中的特定模块的状态。在网络管理系统被实现为特定设备的一部分的实施例中,系统可以在消息被登记在该特定设备的系统或错误日志中时监测消息。
86.在监测操作910中对消息的检测在进行中的基础上被执行,该监测使操作关于从操作910到操作915的个体的检测到的消息进行。在操作915中,由操作910中执行的监测所检测到的消息与新的或进行中的消息块相关联。在操作915中,如果观察到的消息是开始新消息块的消息,则存储指示从其登记消息块的特定设备和/或模块的信息。当检测到与相同消息块相对应的附加消息时,存储并更新针对每个消息块的信息。可以通过比较连续消息之间的时间间隔或通过使用如上所述的其他启发法来执行消息与消息块的匹配。
87.方法900进行到操作916,在操作916中,诸如上述那些启发法之类的启发法被应用于原始消息,并且被用来剥离以下消息元素:这些消息元素传达很少甚至不传达关于特定设备或整体系统的底层状态的信息。通常,被移除的消息单词或词语是已被添加到系统或错误日志中、以使其易于被诸如it技术员之类的人员阅读的消息元素。
88.方法900从操作916进行到操作917,在操作917中,基于消息来更新消息块向量。在一些示例实施例中,消息块向量的生成是状态性的。状态基于在当前消息被处理之前的、其他消息的先前生成。在一些示例实施例中,可以与以下关于图11所讨论的过程1100实质上一致地执行消息块向量生成。
89.操作918确定所生成的消息块向量是否与任何经定义的消息块集群相关联。在一些示例实施例中,通过确定所生成的消息块向量中的每个值是否落在被用来定义消息块集群的值的范围内来进行确定。例如,消息块向量的n个元素值中的每一个元素值是否落在消息集群定义中的对应元素值的值范围内。在一些其他示例实施例中,所公开的实施例可以在向量空间内定义多个体积,每个体积与特定消息块集群相关联。在一些示例实施例中,可以经由训练过程来定义体积。在这些示例实施例中,操作918通过确定消息块向量的向量是否被包含在与特定消息块集群相关联的体积内,来确定消息块向量是否与特定消息块集群相关联。
90.操作920确定所生成的消息块向量是否对应于与标称性能或异常状况相关联的消息块集群。判定操作925评估集群。如果集群与标称操作相关联,则处理返回到操作910,在操作910中,附加消息被处理。否则,如果集群与异常状况相关联,则方法900从判定操作925移动到操作930。
91.在操作930中,校正动作被标识,即,通过访问存储器来确定与消息块与之匹配的消息块向量集群相关联的补救动作,并且然后,在操作950中,校正动作例如补救动作被实施。该动作可以包括并且有时确实包括自动重启特定设备的组件或模块、重启整个设备、切换到备用元件、改变至少一个设备的操作参数等。在一些实施例中,当没有指定具体补救动作时,该方法进行到操作950而不采取任何具体动作。
92.操作900从操作950进行到操作952,其中生成报告并将其传达给用户和/或系统管理员。在一些实施例中,操作952的报告包括生成问题、难题或程式错误报告。报告的生成可以包括在诸如jira之类的程式错误报告工具中自动打开程式错误报告。程式错误报告的打开还可以包括生成具有建议动作和对其他类似根本原因的参考的错误消息。方法900的一些实施例可以不执行操作952。
93.除了操作952中的自动采取校正动作之外或作为其备选方案,一些所公开的实施例生成指示问题和潜在校正动作的标识的警报。警报可以是文本消息、snmp警报消息、电子邮件消息或在指明用户的终端上的弹出用户界面的形式。例如,在一些实施例中,可以在图5的用户显示器508上显示用户界面,从而通知系统管理员,例如通过在图1的nms 136的显示器308上呈现消息。通过这种方式,可以使用户或管理员以自动化的方式了解问题,并且采取校正动作或实施系统维护,该系统维护可能是并且有时是附加于自动实施的或建议的校正动作。
94.校正消息可以通过以下方式来执行:将消息发送给图2的ap 200的处理器206,并且用新的操作参数对其进行重新配置,下载较新的sf版本,重启给定ap中的特定无线电,以及重启ap之一或网络服务器之一。类似地,校正措施可以通过以下方式来执行:将消息发送给诸如附接到网络的任何故障服务器之类的触犯(offending)设备400的处理器406,或发送给有利于这种故障设备的操作的电源。
95.操作900从操作952进行到操作910,在操作910中,执行对下一消息的监测。在跳过或不执行操作952的那些实施例中,操作900从操作950进行到操作910。
96.图10是用于生成针对消息块的消息块向量的方法1000的流程图。在一些示例实施例中,图8的操作820可以执行下面关于图10讨论的功能中的一个或多个功能。过程1000根据消息块中包括的消息来生成消息块向量。
97.在开始块1001之后,方法1000移动至操作1002。在操作1102中,消息块中包括的消息被标识。在操作1004中,针对经标识消息的消息向量被标识。在操作1006中,基于在操作1004中标识的消息向量来更新针对消息块的消息块向量。
98.在操作1006中,基于在操作1004中标识的消息向量来更新针对消息块的向量。在一些示例实施例中,操作1006利用递归神经网络(rnn)来生成消息块向量。rnn可以维护方法1000的每次迭代所依赖的消息块向量的状态信息。
99.在各种实施例中,针对消息块的消息块向量将包括与被用来生成消息块向量的消息向量相同数目的维度,并且因此包括相同数目的元素和对应值。因此,在一些实施例中,当使用n维的消息向量时,消息块向量也将包括n个维度。
100.图11是示出在处理块中的每个消息被处理时如何递增地更新消息块向量的序列图1100。在一些示例实施例中,更新图11中所图示的消息块向量与上面关于图10讨论的方法1000的操作一致。
101.序列图1100的行1114和列1102提供列和行标签,以有利于理解在每个列和行中作为示例示出的信息。例如,行1114以消息块向量vec的形式示出了在给定时间处的消息块状态,该消息块向量vec是针对所指示的消息时间t0、t1、t2、t3或t4的更新的消息块向量。
102.行1116示出了在给定时间处的机器模型的输入和输出。行1118的每一列示出了与在行1120的相应列中作为示例示出的消息相对应的消息向量,该消息是例如在行1122中作为示例示出的时间处的、例如序列中的消息位置处的、检测到的块中的消息。为了说明的缘故,本示例中的消息块取自图7b的行751(作为示例,仅示出消息块中的前五个消息)。
103.列1104、1106、1108、1110、1112中的每一列图示了对消息块中的单个消息的处理。在一些示例实施例中,序列表1100中的消息处理的时间次序等同于在日志中创建每个消息的第二时间次序。图11示出了:针对时间t的消息块向量被用作针对时间t+1的消息块向量
更新的输入。因此,当图10的方法1000迭代与单个消息块相关联的消息时,方法1000更新消息块向量。消息块向量的状态影响消息块向量的下一版本的生成。
104.图11图示了:在一些示例实施例中,响应于在时间t0处检测到消息msg 11,方法1000使用消息向量v
msg 11
作为到rnn的输入来生成初始向量。由于msg 11是消息块中的第一消息,因此rnn在处理针对msg 11的消息向量(v
msg 11
)时具有初始默认状态。在一些示例实施例中,初始消息块向量状态等同于消息块向量的每个元素处的零值。然后,rnn生成对应的消息块向量状态vect0。在时间t1处处理下一消息msg 34。针对消息msg 34的消息向量v
msg 34
被提供作为到rnn的输入,然后,rnn生成状态向量vect1。注意,状态向量vect
t1
的生成依赖于在处理前一消息之后生成的状态,即vec
t0
。方法1000继续,直到与消息块相关联的所有消息都被处理。
105.应该理解,在训练阶段期间,完整的消息块可用于处理。但是,在使用过程中,针对消息块的消息向量在个体消息被观察到时、例如实时地被生成和更新,而无需在尝试基于消息块向量来确定消息块向量是否对应于与设备故障相关联并且还与校正动作相关联的消息块向量集群之前等待完整的消息块被接收(或被记录在系统日志中)。
106.在一些实施例中,响应于检测到消息块的开始,例如,如上所述,检测到个体消息之间的较大时间间隙或通过使用其他启发法检测到,将消息块向量设置为初始起始值。消息块中的附加消息被用来更新针对正被处理的消息块的消息块向量,直到训练数据库中针对检测到的消息块的完整消息集已被处理并被用来更新消息块向量,并且从而获得针对消息块的最终消息块向量。
107.图12a是用于标识由于日志文件中包括的一个或多个消息而要被采取的补救动作的方法的流程图。在一些示例实施例中,图12的方法1200可以在消息被生成时操作来分析日志文件中的消息。换言之,可以在消息进入日志文件中的一小段有限时间内(例如,少于五秒、少于一秒、少于30秒等)对消息进行处理。在一些示例实施例中,当使条目进入到日志文件(消息被写入)时,可以触发事件。该事件还可以发起方法1200的操作。
108.备选地,消息可以例如周期性地被批量处理,诸如每10分钟、30分钟、一个小时等。
109.该方法在操作1202处开始并且进行到操作1205,在操作1205中,消息被接收。如以上所讨论的,可以从日志文件接收消息。在一些示例实施例中,接收消息包括读取消息。在操作1205中接收到的消息可以包括以上关于图6a和/或图6b所示的任何消息的任何一个或多个字段。在一些示例实施例中,操作1205可以包括基于消息生成消息向量。在一些示例实施例中,可以基于被提供用于数据的向量化的库来生成消息向量。例如,在一些示例实施例中,消息向量可以由doc2vec或word2vec库生成,但是所公开的实施例不限于这些特定的向量化库。在操作1205中执行的向量化可以在向量空间内生成向量。向量化可以是状态性的,因为先前的向量化影响1205中接收到的消息的向量化的结果。向量化的状态性性质被提供以用于记住消息上下文。因此,例如,如果特定的消息序列与特定类型的系统问题相关联,则向量化的状态性性质至少部分地表示此上下文。
110.一些所公开的实施例可以实现关于日志文件消息的发布/订阅模型。因此,当消息被发布到日志文件时,生成发布事件。发布事件的订户将接收到通知。在这些实施例中,方法1200,特别是操作1205可以响应于接收到事件通知而操作。
111.判定操作1212确定消息是否为新消息。在一些示例实施例中,判定操作1212在先
前处理的消息、消息块和消息集群的数据库中搜索与在操作1205中接收到的消息等同或至少相似的消息。在一些实施例中,对相似消息的搜索可以掩盖消息中对于标识相似消息而言不那么重要的一个或多个字段。在一些方面,编辑距离可以被用来测量两个消息之间的相似性。
112.如果判定操作1212未找到相似或等同消息,则方法1200从判定操作1212移动至操作1215,操作1215基于新消息发起训练操作。发起训练操作可以包括:生成针对新消息的消息向量,以及标识与该消息相关联的消息块。对操作1215的一个实施例的描述产生了源自错误日志或系统日志的消息块的向量模型。关于上面的图8对此进行了描述。在用新消息重新运行训练过程的结论处,新消息及其对应的消息向量可用于进一步处理和确定对应的消息块向量。根据一些实施例,新调用的训练过程包括标识针对底层难题的新的根本原因以及配置对应的补救动作。
113.在操作1220中,将在操作1205中接收到的消息与消息块相关联。在一些实施例中,消息经由一种或多种启发法与消息块相关联。例如,如以上所讨论的,以时间分组的消息可以与共同消息块相关联。在一些情况下,消息共享等同的关键字、源设备(生成消息的设备)或生成消息的子系统/软件组件/模块。在一些实施例中,启发法可以使用这些消息属性的组合来将共享属性的消息分组到消息块中。
114.如下面关于图13所讨论的,一些实施例定义消息块开始、维持或终止准则或条件中的一个或多个(例如,字段1334、1336和/或1338)。因此,在这些实施例中,针对在操作1205中接收的消息来评估这些条件,以确定块定义表1330的块定义中的哪些条件被满足。如上所述,条件可以定义块中包括的消息之间的最大逝去时间、生成消息的设备或软件组件、消息中包括的关键字、或针对块的其他开始、维持或终止条件。
115.操作1230确定消息是否能够与现有消息块相关联,或者是否要生成新块。如果消息与现有消息块相关联,则过程直接进行到操作1235。否则,如果消息与现有消息块相关联,则过程1200从操作1230移动至操作1235。如果新块是合适的,则过程1200从判定操作1230移动至操作1232,操作1232生成新块并将在操作1205中接收的消息添加到新块。如以上所讨论的,在至少一些方面中,将消息添加到消息块包括:将块中包括的消息(包括新添加的消息)的内容编码到向量空间中。然后,处理从操作1232前进到判定操作1235。
116.判定操作1235确定消息块是否与消息块集群相关联。在一些示例实施例中,操作1235包括:将包括接收到的消息的消息块的向量空间内的位置与一个或多个集群定义进行比较。集群定义定义了向量空间内的体积。如果消息块向量落在与特定集群相关联的体积内,那么判定框1235确定消息块与消息块集群“相关联”。因此,如果从消息块(包括1205的消息)产生的向量在该集群所定义的体积内,则该消息块与该集群相关联。如果消息块与集群相关联,则过程1200移动至操作1245。
117.在操作1245中,执行与集群相关联的补救动作。补救动作可以包括例如以下中的一个或多个:特定组件的重启、改变操作参数、或将软件组件从第一版本升级到第二版本。可能的补救动作不限于这些示例。在一些示例实施例中,补救可以包括在程式错误报告数据库中提交新的程式错误报告。在一些示例实施例中,可以通过由程式错误报告数据库提供的api来输入新的程式错误报告。
118.图12b是用于生成消息块向量的方法的流程图。该事件还可以发起方法1250的操
作。在一些方面,下面关于图12b讨论的一个或多个功能可以被包括在图12a的操作1220中。
119.在操作1262中,从消息内容生成消息向量。例如,如下面所讨论的,至少在一些实施例中,可以过滤日志消息中包括的内容以移除不太相关的信息。然后将其余内容提供给机器学习算法,以生成向量空间中的向量。在一些实施例中,机器学习算法是word2vec()或doc2vec()。然后,在一些实施例中,消息向量被存储。例如,如下面关于图13所讨论的,一些实施例维护唯一地标识日志消息的消息表(例如,表700a和下面的表1300)。消息表存储从消息的内容所生成的消息向量(例如,在字段1306中)。
120.在操作1264中,确定要与(操作1262的)消息相关联的消息块。在一些实施例中,基于一个或多个准则来确定消息与消息块之间的关联。例如,如下面关于图13所讨论的,一些实施例维护消息块定义,诸如下面关于表1330所描述的那些。至少在一些实施例中,针对特定块的消息块定义定义了针对块的开始准则(例如,满足针对块的开始准则的消息指示该块中的第一消息)、维持准则(例如,满足维持准则的消息指示该块中包括的消息,但不指示表示该块的开始或该块的结束的消息)、或终止准则(例如字段1338)。终止准则定义以下消息:该消息指示消息块中的最后消息。
121.在操作1266中,消息和消息块之间的关联被存储。例如,在一些实施例中,关联被存储在与表700b或消息表1300中的数据结构类似的数据结构中。如下面所讨论的,提供字段1308以用于与特定消息相关联的块的标识。
122.在操作1268中,基于与块相关联的消息的向量来生成消息块向量。因此,操作1268标识与特定消息块相关联的任何消息,以及从那些消息的内容所生成的消息向量。这些消息向量在生成针对消息块的消息块向量时被用作输入。在一些实施例中,机器学习算法被用来生成消息块向量。例如,针对被分配给消息块的个体消息的向量被提供给机器学习算法,而机器学习算法基于这些输入向量及其在消息块中的位置来提供消息块向量。这种方法考虑了被提供给机器学习算法的消息的序列,因为如果两个消息向量的次序被交换,则机器学习算法会生成不同的输出。该序列可以等同于相应消息在日志中被生成的序列。
123.在一些其他实施例中,通过对消息向量中的对应元素值进行平均来生成消息块向量。
124.图12c是用于生成消息块向量的方法的流程图。在一些方面,下面关于图12c讨论的一个或多个功能被包括在图12a的操作1220中。
125.在开始操作1275之后,过程1270移动至操作1277,操作1277确定要与消息相关联的消息块。如以上至少关于图12b所讨论的,在一些实施例中,基于一个或多个准则来确定消息与消息块之间的关联。例如,如下面关于图13所讨论的,一些实施例维护消息块定义,诸如下面关于表1330所描述的那些。至少在一些实施例中,针对特定块的消息块定义定义了针对块的开始准则(例如,满足针对块的开始准则的消息指示该块中的第一消息)、维持准则(例如,满足维持准则的消息指示该块中包括的消息,但不指示表示该块的开始或该块的结束的消息)、或终止准则(例如字段1338)。终止准则定义了以下消息:该消息指示消息块中的最后消息。在一些实施例中,以时间被分组的消息与消息块相关联。在一些实施例中,由共同设备或软件模块生成的消息与共同消息块相关联。
126.在操作1278中,消息和消息块之间的关联被存储。例如,在一些实施例中,关联被存储在与消息表1300的数据结构类似的数据结构中。如下面所讨论的,提供字段1308以用
于与特定消息相关联的块的标识。
127.在操作1280中,基于与消息块相关联的消息的内容来生成消息块向量。因此,在一些实施例中,消息的内容被提供作为机器学习模型(例如,doc2vec()或word2vec())的输入,该机器学习模型生成消息块向量作为输出。操作1280与操作1268相反,因为在生成消息块向量之前,消息的内容没有首先被映射到向量中。换言之,在操作1280中,消息块向量并不是如在操作1268中那样基于消息向量。在操作1281之后,过程1270在操作1281处结束。
128.图13图示了可以由一个或多个所公开的实施例实现的示例数据结构。虽然下面图13的讨论将所图示的数据结构称为关系数据库表,但是本领域技术人员将理解,各种实施例可以使用各种技术来组织数据,包括例如非结构化数据存储库、诸如链表、树、图、阵列之类的传统存储器结构或其他结构,并且所公开的实施例不限于任何特定的数据结构组织。
129.图13图示了消息表1300、消息块表1310、集群表1320和消息块定义表1330。在一些示例实施例中,消息表1300、消息块表1310、集群表1320或消息块定义表1330中的一个或多个可以被存储在大容量存储装置1416中。
130.消息表1300包括消息标识符1302、消息内容字段1304、消息向量字段1306和消息块标识符字段1308。消息标识符字段1302唯一地标识特定消息。消息内容字段1304存储消息的一个或多个字段的值。例如,消息内容字段1304可以存储以上关于图6a-图6b讨论的消息字段中的一个或多个。消息向量字段1306存储针对由消息标识符字段1302和/或消息内容字段1306所标识的消息的消息向量。消息块标识符字段1308标识与该消息相关联的消息块。消息块标识符字段1308可以与下面讨论的消息块标识符字段1312交叉引用。
131.消息块表1310包括消息块标识符字段1312、消息块类型标识符1313、块向量字段1314和集群标识符字段1316。消息块标识符字段1312唯一地标识消息块。消息块类型标识符字段1313标识由消息块标识符字段1312所标识的块的类型。例如,在一些实施例中,消息块类型标识符字段1313交叉引用在消息块类型定义表1330中的消息块类型(例如,经由下面讨论的字段1332)。块向量字段1314存储定义向量空间中的向量的值。基于消息块中包括的消息的内容来生成向量。集群标识符1316标识与(经由1312标识的)消息块相关联的消息块集群。集群标识符字段1316可以与下面讨论的集群标识符字段1322交叉引用。
132.集群表1320包括集群标识符字段1322、集群范围字段1324和补救动作字段1326。集群标识符字段1322唯一地标识消息块集群,并且可以与集群标识符字段1316交叉引用。在一些示例实施例中,集群范围字段1324定义针对消息向量的一个或多个维度的值范围。在这些示例实施例中,如果消息块向量的维度值落在由集群范围/集群体积字段1324所指定的范围内,则与消息块向量相关联的对应消息块也可以与(经由集群id字段1322标识的)集群相关联。在一些其他示例实施例中,集群范围/集群体积字段1324定义与经由集群标识符1322所标识的集群相关联的向量空间中的体积。位于由集群范围/集群体积字段1324定义的体积内的消息块向量被所公开的实施例认为与集群“相关联”。因此,当所公开的实施例遇到映射到这些消息块向量的消息块时,它们可以引起如下所述的与集群相关联的(多个)补救动作1226的调用。
133.(多个)补救动作字段1326标识在检测到与(经由集群id字段1322标识的)集群相关联的事件时可以被执行的一个或多个补救动作。补救动作可以包括以下中的一项或多项:重启或重置组件或设备、改变一个或多个组件或设备的操作参数、升级在一个或多个网
络组件或设备上运行的软件、打开难题跟踪数据库中的难题报告、通知系统管理员、或其他补救动作。
134.消息块定义表1330存储定义消息块的边界的条件。消息块定义表1330包括:块类型id字段1332、(多个)开始条件字段1334、(多个)维持条件字段1336和(多个)终止条件字段1338。块类型标识符字段1332唯一地标识特定字段块类型,即由字段1334、1336和1338中的条件所定义的块。(多个)开始条件字段1334标识指示消息块的开始的一个或多个准则或条件。一些所公开的方面可以评估由(多个)开始条件字段1334所定义的条件,以检测由块类型标识符字段1332所标识的类型的消息块的开始。(多个)维持条件字段1336定义针对消息的条件,提供该条件以用于要被包括在由块类型标识符字段1332定义的类型的块中的消息。(多个)终止条件字段1338定义以下准则或条件:该准则或条件定义由该块类型标识符字段1332所标识的类型的块的结束。
135.图14图示了示例机器1400的框图,在其上可以执行本文所讨论的任何一种或多种技术(例如方法)。机器(例如,计算机系统)1400可以包括硬件处理器1402(例如,中央处理单元(cpu)、图形处理单元(gpu)、硬件处理器核或其任意组合)、主存储器1404和静态存储器1406,其中一些或全部可以经由互连链路(例如,总线)1408彼此通信。
136.主存储器1404的特定示例包括随机存取存储器(ram)和半导体存储器设备,其在一些实施例中可以包括诸如寄存器之类的半导体中的存储位置。静态存储器1406的具体示例包括非易失性存储器,诸如半导体存储器设备(例如,电可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom))和闪存设备;磁盘,诸如内部硬盘和可移动磁盘;磁光盘;ram;以及cd-rom和dvd-rom磁盘。
137.机器1400还可以包括显示设备1410、输入设备1412(例如,键盘)和用户界面(ui)导航设备1414(例如,鼠标)。在示例中,显示设备1410、输入设备1412和ui导航设备1414可以是触摸屏显示器。机器1400可以另外包括大容量存储装置(例如,驱动单元)1416、信号生成设备1418(例如,扬声器)、网络接口设备1420以及一个或多个传感器1421,诸如全球定位系统(gps)传感器、指南针、加速度计或其他任何传感器。机器1400可以包括输出控制器1428,诸如串行(例如,通用串行总线(usb)、并行或其他有线或无线(例如,红外(ir)、近场通信(nfc)等)连接,以传送或控制一个或多个外围设备(例如,打印机、读卡器等)。在一些实施例中,处理器1402和/或指令1424可以包括处理电路和/或收发器电路。
138.存储设备1416可以包括机器可读介质1422,在其上存储了一个或多个数据结构或指令1424集(例如,软件),这些数据结构或指令1424被本文描述的任何一种或多种技术或功能所体现或利用。指令1424还可以在它们被机器1400执行期间完全或至少部分地驻留在主存储器1404内、静态存储器1406内或硬件处理器1402内。在示例中,硬件处理器1402、主存储器1404、静态存储器1406或存储设备1416的一个或任何组合可以构成机器可读介质。
139.机器可读介质的具体示例可以包括:非易失性存储器,诸如半导体存储设备(例如,eprom或eeprom)和闪存设备;磁盘,诸如内部硬盘和可移动磁盘;磁光盘;ram;以及cd-rom和dvd-rom磁盘。
140.虽然机器可读介质1422被图示为单个介质,但是术语“机器可读介质”可以包括被配置为存储一个或多个指令1424的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的缓存和服务器)。
141.机器1400的装置可以是以下中的一个或多个:硬件处理器1402(例如,中央处理单元(cpu)、图形处理单元(gpu)、硬件处理器核或其任意组合)、主存储器1404和静态存储器1406、传感器1421、网络接口设备1420、天线1460、显示设备1410、输入设备1412、ui导航设备1414、大容量存储装置1416、指令1424、信号生成设备1418以及输出控制器1428。装置可以被配置为执行本文公开的方法和/或操作中的一个或多个。装置可以旨在用作机器1400的组件,以执行本文公开的一种或多种方法和/或操作,和/或执行本文公开的一种或多种方法和/或操作的一部分。在一些实施例中,装置可以包括用于接收电力的引脚或其他装置。在一些实施例中,装置可以包括功率调节硬件。
142.术语“机器可读介质”可以包括能够存储、编码或携带指令或者能够存储、编码或携带由此类指令使用或与之关联的数据结构的任何介质,该指令用于由机器1400执行并且使机器1400执行本公开的任何一种或多种技术。非限制性机器可读介质示例可以包括固态存储器以及光学和磁性介质。机器可读介质的特定示例可以包括:诸如半导体存储器设备的非易失性存储器(例如,电可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom))和闪存设备;磁盘,诸如内部硬盘和可移动磁盘;磁光盘;随机存取存储器(ram);以及cd-rom和dvd-rom磁盘。在一些示例中,机器可读介质可以包括非瞬态机器可读介质。在一些示例中,机器可读介质可以包括不是瞬时传播信号的机器可读介质。
143.还可以利用多种传输协议(例如,帧中继、互联网协议(ip)、传输控制协议(tcp)、用户数据报协议(udp)、超文本传输协议(http)等)中的任何一种经由网络接口设备1420使用传输介质在通信网络1426上发射或接收指令1424。示例通信网络可以包括局域网(lan)、广域网(wan)、分组数据网络(例如互联网)、移动电话网络(例如蜂窝网络)、普通老式电话(pots)网络、和无线数据网络(例如,称为的电气和电子工程师协会(ieee)802.11系列准则、称为的ieee 802.16系列准则)、ieee 802.15.4系列准则、长期演进(lte)系列准则、通用移动电信系统(umts)系列准则、对等(p2p)网络等。
144.在示例中,网络接口设备1420可以包括一个或多个物理插孔(例如,以太网、同轴电缆或电话插孔)或一个或多个天线,以连接到通信网络1426。在示例中,网络接口设备1420可以包括一个或多个天线1460,以使用单输入多输出(simo)、多输入多输出(mimo)或多输入单输出(miso)技术中的至少一种进行无线通信。在一些示例中,网络接口设备1420可以使用多用户mimo技术进行无线通信。术语“传输介质”应被认为包括能够存储、编码或携带由机器1300执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以有利于这种软件的通信。在另一个实施例中(未示出)中,网络接口设备1420直接连接/耦合到网络1426,
145.如本文所述,示例可以包括或可以操作在逻辑或多个组件、模块或机制上。模块是能够执行指定操作的有形实体(例如,硬件),并且可以以某种方式被配置或布置。在示例中,可以以指定的方式将电路(例如,内部地或相对于诸如其他电路之类的外部实体)布置为模块。在示例中,一个或多个计算机系统(例如,独立的、客户端或服务器计算机系统)或一个或多个硬件处理器的全部或部分可以由固件或软件(例如,指令、应用部分或应用)配置为执行指定操作的模块。在示例中,软件可以驻留在机器可读介质上。在示例中,软件在由模块的基础硬件执行时,使硬件执行指定的操作。
146.相应地,术语“模块”应被理解为包括有形实体,是被物理地构造、具体地配置(例
如,硬接线)或临时(例如暂时地)配置(例如,编程)为以指定的方式进行操作或执行本文描述的任何部分或全部操作的实体。考虑到其中模块被临时配置的示例,每个模块都不需要在任何时刻被实例化。例如,在模块包括使用软件配置的通用硬件处理器的情况下,通用硬件处理器可以在不同时间被配置为相应的不同模块。软件可以相应地配置硬件处理器,例如,以在一个时间实例上构成特定的模块,并在不同的时间实例上构成不同的模块。
147.一些实施例可以全部或部分地以软件和/或固件来实现。该软件和/或固件可以采取包含在非瞬态计算机可读存储介质中或上的指令的形式。然后,可以由一个或多个处理器读取和执行那些指令,以使得能够执行本文所述的操作。指令可以是任何合适的形式,诸如但不限于源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。这种计算机可读介质可以包括任何有形的非瞬态介质,用于以一个或多个计算机可读的形式存储信息,诸如但不限于只读存储器(rom);随机存取存储器(ram);磁盘存储介质;光学存储介质;闪存等。
148.如本文所述,示例可以包括或可以操作在逻辑或多个组件、模块或机制上。模块是能够执行指定操作的有形实体(例如,硬件),并且可以以某种方式被配置或布置。在示例中,可以以指定的方式将电路(例如,内部地或相对于诸如其他电路之类的外部实体)布置为模块。在示例中,一个或多个计算机系统(例如,独立的、客户端或服务器计算机系统)或一个或多个硬件处理器的全部或部分可以由固件或软件(例如,指令、应用部分或应用)配置为执行指定操作的模块。在示例中,软件可以驻留在机器可读介质上。在示例中,软件在由模块的基础硬件执行时,使硬件执行指定的操作。
149.示例1是一种方法,包括:基于准则,将多个日志消息分配给第一消息块;基于被分配给第一消息块的消息的内容,在向量空间中生成消息块向量;确定向量空间中的消息块向量的位置在向量空间中的经定义的体积内,经定义的体积与动作相关联;基于确定,执行动作。
150.在示例2中,示例1的主题可选地包括:针对多个日志消息中的每个日志消息,生成消息向量,其中消息块向量的生成基于消息向量中的每个消息向量。
151.在示例3中,示例1-2中任何一个或多个的主题可选地包括:接收第一日志消息;将第一日志消息分配给第二消息块;基于分配,基于被分配给包括第一日志消息的第二消息块的消息,在向量空间中生成第二消息块向量;第二确定向量空间中的第二消息块向量的第二位置不在向量空间中的经定义的体积内;以及响应于第二确定,禁止任何补救动作的执行。
152.在示例4中,示例3的主题可选地包括:基于第二准则,将第二多个消息分配给第二消息块;基于第二多个消息和第一日志消息,生成第三消息块向量;第三确定向量空间中的第三消息块向量的第三位置在向量空间的第二经定义的体积内;以及响应于第三确定,选择性地执行与第二体积相关联的第二动作。
153.在示例5中,示例3-4中任何一个或多个的主题可选地包括:从第一日志消息中剥离信息,其中第二消息块向量的生成基于所剥离的日志消息。
154.在示例6中,示例1-5中任何一个或多个的主题可选地包括:其中消息块向量的生成包括:将多个日志消息的内容提供给机器学习算法,并且机器学习算法输出消息块向量。
155.在示例7中,示例6的主题可选地包括word2vec()或doc2vec()。
156.在示例8中,示例1-7中任何一个或多个的主题可选地包括:其中准则标识:在时间窗内生成的日志消息、或包括多个关键字的日志消息。
157.在示例9中,示例1-8中任何一个或多个的主题可选地包括:其中补救动作重启计算机、升级网络设备的软件、改变网络设备的操作参数、或注释难题跟踪数据库中的难题报告。
158.在示例10中,示例1-9中的一个或多个示例的主题可选地包括:第一确定第一日志消息不满足准则,并且第二确定第一日志消息满足与第二消息块相关联的第二准则,以及响应于第一确定和第二确定,将第一日志消息与第二消息块相关联。
159.示例11是一种包括指令的非瞬态计算机可读存储介质,该指令在被执行时将硬件处理电路配置为执行操作,操作包括:基于准则,将多个日志消息分配给第一消息块;基于被分配给第一消息块的消息的内容,在向量空间中生成消息块向量;确定向量空间中的消息块向量的位置在向量空间中的经定义的体积内,经定义的体积与动作相关联;基于确定,执行动作。
160.在示例12中,示例11的主题可选地包括:操作还包括:针对多个日志消息中的每个日志消息,生成消息向量,其中消息块向量的生成基于消息向量中的每个消息向量。
161.在示例13中,示例11-12中任何一个或多个的主题可选地包括:操作还包括:接收第一日志消息;以及将第一日志消息分配给第二消息块;基于该分配,基于被分配给包括第一日志消息的第二消息块的消息,在向量空间中生成第二消息块向量;第二确定向量空间中的第二消息块向量的第二位置不在向量空间的经定义的体积内;以及响应于第二确定,禁止任何补救动作的执行。
162.在示例14中,示例13的主题可选地包括:操作还包括:基于第二准则,将第二多个消息分配给第二消息块;以及基于第二多个消息和第一日志消息,生成第三消息块向量;第三确定向量空间中的第三消息块向量的第三位置在向量空间的第二经定义的体积内;以及响应于第三确定,选择性地执行与第二体积相关联的第二动作。
163.在示例15中,示例13-14中任何一个或多个的主题可选地包括:操作还包括:从第一日志消息中剥离信息,其中第二消息块向量的生成基于所剥离的日志消息。
164.在示例16中,示例11-15中任何一个或多个的主题可选地包括:其中消息块向量的生成包括:将多个日志消息的内容提供给机器学习算法,并且机器学习算法输出消息块向量。
165.在示例17中,示例16的主题可选地包括word2vec()或doc2vec()。
166.在示例18中,示例11-17中的一个或多个示例的主题可选地包括:其中准则标识:在时间窗内生成的日志消息、或包括多个关键字的日志消息。
167.在示例19中,示例11-18中的任何一个或多个的主题可选地包括:其中执行补救动作重启计算机、升级网络设备的软件、改变网络设备的操作参数或注释难题跟踪数据库中的难题报告。
168.在示例20中,示例11-19中的一个或多个示例的主题可选地包括:操作还包括:第一确定第一日志消息不满足准则,并且第二确定第一日志消息满足与第二消息块相关联的第二准则,以及响应于第一确定和第二确定,将第一日志消息与第二消息块相关联。
169.示例21是一种装置,包括:用于基于准则将多个日志消息分配给第一消息块的模
块;以及用于基于被分配给第一消息块的消息的内容在向量空间中生成消息块向量的模块;用于确定向量空间中的消息块向量的位置在向量空间中的经定义的体积内的模块,该经定义的体积与动作相关联;用于基于确定来执行动作的模块。
170.在示例22中,示例21的主题可选地包括用于针对多个日志消息中的每个日志消息生成消息向量的模块,其中消息块向量的生成基于消息向量中的每个消息向量。
171.在示例23中,示例21-22中的任何一个或多个的主题可选地包括:用于接收第一日志消息的模块;用于将第一日志消息分配给第二消息块的模块;用于基于该分配、基于被分配给包括第一日志消息的第二消息块的消息、在向量空间中生成第二消息块向量的模块;用于第二确定向量空间中的第二消息块向量的第二位置不在向量空间中的经定义的体积内的模块;以及响应于第二确定而禁止执行任何补救动作的模块。
172.在示例24中,示例23的主题可选地包括:用于基于第二准则将第二多个消息分配给第二消息块的模块;以及用于基于第二多个消息和第一日志消息生成第三消息块向量的模块;用于第三确定向量空间中的第三消息块向量的第三位置在向量空间中的第二经定义的体积内的模块;以及响应于第三确定而选择性地执行与第二体积相关联的第二动作的模块。
173.在示例25中,示例23-24中的任何一个或多个的主题可选地包括用于从第一日志消息中剥离信息的模块,其中用于生成第二消息块向量的模块被配置为将生成基于所剥离的日志消息。
174.在示例26中,示例21-25中的一个或多个示例的主题可选地包括:其中用于生成消息块向量的模块被配置为将多个日志消息的内容提供给机器学习算法,并且机器学习算法输出消息块向量。
175.在示例27中,示例26的主题可选地包括word2vec()或doc2vec()。
176.在示例28中,示例21-27中的一个或多个示例的主题可选地包括:其中准则标识:在时间窗内生成的日志消息、或包括多个关键字的日志消息。
177.在示例29中,示例21-28中的一个或多个示例的主题可选地包括,其中用于执行补救动作的模块被配置为重启计算机、升级网络设备的软件、改变网络设备的操作参数,或注释难题跟踪数据库中的难题报告。
178.在示例30中,示例21-29中的一个或多个示例的主题可选地包括:用于第一确定第一日志消息不满足准则的模块,以及用于第二确定第一日志消息满足与第二消息块相关联的第二准则的模块,以及用于响应于第一日志消息满足第二准则而将第一日志消息与第二消息块相关联的模块。
179.示例31是一种系统,包括:硬件处理电路;存储指令的一个或多个硬件存储器,该指令在被执行时将硬件处理电路配置为执行操作,操作包括:基于准则,将多个日志消息分配给第一消息块;以及基于被分配给第一消息块的消息的内容,在向量空间中生成消息块向量;确定向量空间中的消息块向量的位置在向量空间中的经定义的体积内,经定义的体积与动作相关联;基于确定,执行动作。
180.在示例32中,示例31的主题可选地包括:针对多个日志消息中的每个日志消息生成消息向量,其中消息块向量的生成基于消息向量中的每个消息向量。
181.在示例33中,示例31-32中的任何一个或多个的主题可选地包括:接收第一日志消
息;将第一日志消息分配给第二消息块;基于该分配,基于被分配给包括第一日志消息的第二消息块的消息,在向量空间中生成第二消息块向量;第二确定向量空间中的第二消息块向量的第二位置不在向量空间的经定义的体积内;响应于第二确定而禁止任何补救动作的执行。
182.在示例34中,示例33的主题可选地包括:基于第二准则,将第二多个消息分配给第二消息块;以及基于第二多个消息和第一日志消息,生成第三消息块向量;第三确定向量空间中的第三消息块向量的第三位置在向量空间的第二经定义的体积内;以及响应于第三确定,选择性地执行与第二体积相关联的第二动作。
183.在示例35中,示例33-34中的一个或多个示例的主题可选地包括:从第一日志消息中剥离信息,其中第二消息块向量的生成基于所剥离的日志消息。
184.在示例36中,示例31-35中的一个或多个示例的主题可选地包括:其中消息块向量的生成包括:将多个日志消息的内容提供给机器学习算法,以及机器学习算法输出消息块向量。
185.在示例37中,示例36的主题可选地包括word2vec()或doc2vec()。
186.在示例38中,示例31-37中的一个或多个示例的主题可选地包括:其中准则标识:在时间窗内生成的日志消息、或包括多个关键字的日志消息。
187.在示例39中,示例31-38中的任何一个或多个的主题可选地包括:其中补救动作重启计算机、升级网络设备的软件、改变网络设备的操作参数、或注释难题跟踪数据库中的难题报告。
188.在示例40中,示例31-39中的任何一个或多个的主题可选地包括:第一确定第一日志消息不满足准则,并且第二确定第一日志消息满足与第二消息相关的第二准则,以及响应于第一确定和第二确定,将第一日志消息与第二消息块相关联。
189.各种实施例可以全部地或部分地以软件和/或固件来实现。该软件和/或固件可以采取被包含在非瞬态计算机可读存储介质中或上的指令的形式。然后,可以由一个或多个处理器读取和执行那些指令,以使得能够执行本文所述的操作。指令可以是任何合适的形式,诸如但不限于源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。这种计算机可读介质可以包括任何有形的非瞬态介质,用于以一个或多个计算机可读的形式存储信息,诸如但不限于只读存储器(rom);随机存取存储器(ram);磁盘存储介质;光学存储介质;闪存等。
190.本文将某些实施例描述为包括逻辑或多个组件、模块或机制。模块可以构成软件模块(例如,体现在机器可读介质上或传输信号中的代码)或硬件模块。硬件模块是能够执行某些操作的有形单元,并且可以以某种方式被配置或布置。在示例实施例中,一个或多个计算机系统(例如,独立的、客户端或服务器计算机系统)或计算机系统的一个或多个硬件模块(例如,处理器或处理器群组)可以由软件(例如应用或应用部分)配置为操作以执行此处所述的某些操作的硬件模块。
191.在各种实施例中,可以机械地或电子地实现硬件模块。例如,硬件模块可以包括专用电路或逻辑,该专用电路或逻辑被永久配置(例如,作为专用处理器,诸如现场可编程门阵列(fpga)或专用集成电路(asic))来执行某些操作。硬件模块还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路(例如,如通用处理器或其他可编程处理器内所包
含的)。将意识到,可以在成本和时间方面考虑下驱动以机械方式在专用且永久配置的电路中还是在临时配置的电路中(例如,由软件配置)来实现硬件模块的决定。
192.因此,术语“硬件模块”应被理解为包括有形实体,是被物理地构造、永久地配置(例如,硬连线)或临时地配置(例如,编程)为以某种方式进行操作和/或执行本文所述的某些操作的实体。考虑其中硬件模块被临时配置(例如,编程)的实施例,每个硬件模块不需要在任何时间的任何时刻被配置或实例化。例如,在硬件模块包括使用软件配置的通用处理器的情况下,通用处理器可以在不同时间被配置为相应的不同硬件模块。软件可以相应地配置处理器,例如,以在一个时间实例上构成特定的硬件模块,并在不同的时间实例上构成不同的硬件模块。
193.硬件模块可以向其他硬件模块提供信息并从其他硬件模块接收信息。因此,所描述的硬件模块可以被认为是通信耦合的。当多个这样的硬件模块同时存在时,可以通过信号传输(例如,通过连接硬件模块的适当的电路和总线)来实现通信。在其中在不同时间配置或实例化多个硬件模块的实施例中,可以例如通过在多个硬件模块可以访问的存储器结构中存储和取回信息来实现这种硬件模块之间的通信。例如,一个硬件模块可以执行操作并将该操作的输出存储在其通信耦合到的存储器设备中。然后,另一硬件模块可以在以后的时间访问该存储器设备以取回和处理所存储的输出。硬件模块还可以发起与输入或输出设备的通信,并且可以在资源(例如,信息的集合)上进行操作。
194.本文所述的示例方法的各种操作可以至少部分地由一个或多个(例如,由软件)临时配置或永久配置为执行相关操作的处理器执行。无论是临时配置还是永久配置,这样的处理器都可以构成处理器实现的模块,这些模块操作来执行一个或多个操作或功能。在一些示例实施例中,本文所称的模块可以包括处理器实现的模块。
195.类似地,本文描述的方法可以至少部分地由处理器实现。例如,一种方法的至少一些操作可以由一个或多个处理器或处理器实现的模块来执行。可以将某些操作的执行分布在一个或多个处理器之间,不仅驻留在单个计算机内,而且可以部署在多个计算机上。在一些示例实施例中,一个或多个处理器可以位于单个位置(例如,在家庭环境、办公室环境或服务器场内),而在其他实施例中,处理器可以被分布在多个位置上。
196.一个或多个处理器还可以操作来在“云计算”环境中或作为“软件即服务”(saas)支持相关操作的执行。例如,至少一些操作可以由计算机群组(作为包括处理器的机器的示例)执行,可以经由网络(例如,互联网)和经由一个或多个适当的接口(例如,api)访问这些操作。
197.示例实施例可以以数字电子电路、或以计算机硬件、固件或软件、或以它们的组合来实现。可以使用计算机程序产品来实现示例实施例,该计算机程序产品例如是有形地体现在信息载体中例如机器可读介质中的计算机程序,以由数据处理设备执行或控制数据处理设备的操作,数据处理设备例如是可编程处理器、一个计算机或多个计算机。
198.可以以任何形式的编程语言(包括编译或解释语言)编写计算机程序,并且其可以以任何形式进行部署,包括作为独立程序或作为模块、子例程或其他适于在计算环境中使用的单元。可以将计算机程序部署为在一个站点上的一个计算机或多个计算机上被执行,或者被分布在多个站点上并通过通信网络互连。
199.在示例实施例中,可以通过执行计算机程序以通过对输入数据进行操作并生成输
出来执行功能的一个或多个可编程处理器来执行操作。方法操作也可以由专用逻辑电路(例如,fpga或asic)执行,并且示例实施例的装置可以被实现为专用逻辑电路(例如,fpga或asic)。
200.计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是借助于在相应的计算机上运行并彼此具有客户端-服务器关系的计算机程序产生的。在部署可编程计算系统的实施例中,将认识到,硬件和软件架构两者都值得考虑。具体地,将认识到,选择是在永久配置的硬件(例如,asic)中、在临时配置的硬件(例如,软件和可编程处理器的组合)中、还是在永久配置和/或临时配置的硬件组合中实现某些功能性可能是设计选择。
201.尽管已经参考特定示例实施例描述了本公开的实施例,但是显而易见的是,可以对这些实施例进行各种修改和改变,而不背离本发明主题的更广范围。因此,说明书和附图应被认为是说明性的而不是限制性的。形成其一部分的附图通过图示而非限制的方式示出了可以在其中实践本主题的特定实施例。足够详细地描述了所图示的实施例,以使本领域技术人员能够实践本文所公开的教导。可以使用其他实施例并从其中得出其他实施例,使得可以在不背离本公开的范围的情况下进行结构和逻辑上的替换和改变。因此,不应在限制的意义上理解此详细描述,并且各种实施例的范围仅由所附权利要求以及这些权利要求所赋予的等同物的全部范围来限定。
202.仅是为了方便,本发明主题的这些实施例可以在本文中单独地和/或整体地由词语“发明”来指代,并且不旨在将本申请的范围自动限制为任何单个发明或发明概念——如果实际上公开了多个。因此,尽管本文中已经图示和描述了特定实施例,但是应当理解,为实现相同目的而策划的任何布置都可以代替所示的特定实施例。本公开旨在覆盖各种实施例的任何和所有修改或变型。在查阅以上描述后,以上实施例的组合以及本文中未具体描述的其他实施例对于本领域技术人员将是显而易见的。
203.本文档中引用的所有出版物、专利和专利文件均通过引用整体并入本文,就好像通过引用各个地并入那样。在本文档与通过引用方式并入的那些文档之间用法不一致的情况下,则应将所并入的引用中的用法视为对本文档的补充;对于不可调和的不一致之处,以本文档中的用法为准。
204.在本文档中,如在专利文件中常见的,词语“一”或“一个”被使用以包括一个或多个,与“至少一个”或“一个或多个”的任何其他情况或用法无关。在本文档中,术语“或”被用来指代非排他性的,使得“a或b”包括:“a但非b”、“b但非a”以及“a和b”,除非另有说明。在所附权利要求中,术语“包括”和“其中”被用作相应术语“包含”和“在其中”的简明英语等效物。此外,在所附权利要求中,术语“包括”和“包含”是开放式的;也就是说,除权利要求中在此词语之后列出的元素之外还包括其他元素的系统、设备、物品或过程仍被认为属于该权利要求的范围。