一种基于决策树的问题定位方法和装置
技术领域
本说明书涉及互联网领域,尤其涉及一种基于决策树的问题定位方法和装置。
背景技术
在技术风险保障的日常工作中,技术人员需要对线上各种来源的监控报警保持极高的关注,目前虽然报警来源多种多样,但是造成当次报警行为的实际问题定位大多靠人工排查,将大量时间和精力投入在大量的线上报警定位上成为了日常面临的高频挑战。
以支付宝监控平台xflush进行举例说明,xflush是通过基于规则的日志采集统计方式来进行监控,当日志出现异常时,则通过报警输出该异常。这种方式能够帮助技术人员定位到一个问题的表现现象,但缺乏实际能够指导解决问题的根因定位能力。如报警信息中包含的是某个服务器的CPU异常信息,但造成该服务器CPU异常的根因还需要技术人员进行排查,通过查看多个相关监控数据、拉取线上日志、查看当前变更事件等操作来人工决策该问题的产生原因,进而解决该问题。这一系列动作耗时长、效率低,极有可能造成长时间线上问题影响的扩大化。
发明内容
针对上述技术问题,本说明书实施例提供一种基于决策树的问题定位方法和装置,技术方案如下:
根据本说明书实施例的第一方面,提供一种基于决策树的问题定位方法,该方法包括:
接收基于日志监控获取的异常信息后,根据所述异常信息确定异常场景;
在数据库中确定所述异常场景对应的风险决策树,根据所述异常信息和预定的规则信息配置所述风险决策树的决策路径与决策规则,其中,数据库中存储了对应不同异常场景的不同风险决策树;
执行所述风险决策树,根据决策树命中的最终结果为本次异常进行问题定位。
根据本说明书实施例的第二方面,提供一种基于决策树的问题定位装置,该装置包括:
异常信息接收模块:用于接收基于日志监控获取的异常信息后,根据所述异常信息确定异常场景;
决策树确定模块:用于在数据库中确定所述异常场景对应的风险决策树,根据所述异常信息和预定的规则信息配置所述风险决策树的决策路径与决策规则,其中,数据库中存储了对应不同异常场景的不同风险决策树;
决策树执行模块:用于执行所述风险决策树,根据决策树命中的最终结果为本次异常进行问题定位。
根据本说明书实施例的第二方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现一种基于决策树的问题定位方法,该方法包括:
接收基于日志监控获取的异常信息后,根据所述异常信息确定异常场景;
在数据库中确定所述异常场景对应的风险决策树,根据所述异常信息和预定的规则信息配置所述风险决策树的决策路径与决策规则,其中,数据库中存储了对应不同异常场景的不同风险决策树;
执行所述风险决策树,根据决策树命中的最终结果为本次异常进行问题定位:
本说明书实施例所提供的技术方案,在数据库中存储了对应不同异常场景的不同风险决策树,接收基于日志监控获取的异常信息后,根据所述异常信息确定对应的风险决策树,根据执行决策树命中的最终结果为本次异常进行问题定位。由于在各种指标特征相对明确的情况下,对问题排查的思路、步骤也是相对重复固定的,本申请通过自动化地执行预先配置的决策树逻辑给出定位结果,可以大幅降低人力排查成本,提高问题排查效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书一示例性实施例示出的基于决策树的问题定位方法的一种流程图;
图2是本说明书一示例性实施例示出的基于决策树的问题定位方法的一种示意图;
图3是本说明书一示例性实施例示出的基于决策树的问题定位方法的另一种流程图;
图4是本说明书一示例性实施例示出的基于决策树的问题定位方法的另一种流程图;
图5是本说明书一示例性实施例示出的基于决策树的问题定位方法的另一种流程图;
图6是本说明书一示例性实施例示出的基于决策树的问题定位装置的一种示意图;
图7是本说明书一示例性实施例示出的一种计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在技术风险保障的日常工作中,技术人员需要对线上各种来源的监控报警保持极高的关注,目前虽然报警来源多种多样,但是造成当次报警行为的实际问题定位大多靠人工排查,将大量时间和精力投入在大量的线上报警定位上成为了日常面临的高频挑战。
以支付宝监控平台xflush进行举例说明,xflush是通过基于规则的日志采集统计方式来进行监控,当日志出现异常时,则通过报警输出该异常。这种方式能够帮助技术人员定位到一个问题的表现现象,但缺乏实际能够指导解决问题的根因定位能力。如报警信息中包含的是某个服务器的CPU异常信息,但造成该服务器CPU异常的根因还需要技术人员进行排查,通过查看多个相关监控数据、拉取线上日志、查看当前变更事件等操作来人工决策该问题的产生原因,进而解决该问题。这一系列动作耗时长、效率低,极有可能造成长时间线上问题影响的扩大化。
针对以上问题,本说明书实施例提供一种基于决策树的问题定位方法,以及一种用于执行该方法的基于决策树的问题定位装置。
下面对本实施例涉及的基于决策树的问题定位方法进行详细说明,参见图1所示,该方法可以包括以下步骤:
S101,接收基于日志监控获取的异常信息后,根据所述异常信息确定异常场景;
以Xflush监控平台进行举例说明,Xflush监控平台是通过基于规则的日志采集统计方式来进行监控和预警,当正在监控的日志统计数据满足一定异常规则时,推送该日志异常信息。
S102,在数据库中确定所述异常场景对应的风险决策树,根据所述异常信息和预定的规则信息配置所述风险决策树的决策路径与决策规则,其中,数据库中存储了对应不同异常场景的不同风险决策树;
首先对本步骤涉及的决策树进行描述:决策树是一个树形的判决模型,其代表的是一套决策方案中的判断逻辑关系路径,树形结构内部每一个节点可对当前对象执行判决规则,每个分支代表一种判决结果的输出,对数据对象按规则进行分类。
监控平台接收异常信息后,提取异常信息中会包含的因此本次异常的源头信息,即报警源,根据报警源可确定本次异常的发生场景,并进而根据该异常场景确定对应的风险决策树。
其中,数据库中预先存储对应不同异常场景的不同风险决策树。该对应不同异常场景的不同风险决策树是根据具体应用场景预先配置的。
参考图2,本实施例应先针对问题系统的上下游系统进行依赖分析。即先根据异常信息确定本次异常变化的量级,若本次异常变化为业务量级的变化,则对当前异常系统的上游系统进行依赖分析,以确定所述上游系统对当前异常系统的影响。若本次异常变化为系统量级的变化,则对当前异常系统的下游系统进行依赖分析,以确定所述下游系统对当前异常系统的影响。依赖分析的上下游系统信息包括但不限于:业务/运维等变更信息,日志信息和活动信息。
举例说明决策树构成流程:监控平台接收异常报警信息后,根据该异常报警信息在数据库中读取异常信息所在的异常场景下唯一对应的决策树treeId;利用该treeId查询决策树根节点,使用查询到的根节点关联子节点,以此递归直到叶子节点,直到构造出一个树形的数据结构模型。决策树模型中的每一个节点中都存放有规则ruleId,使用该ruleId在数据库中查询规则信息,包括:需要检测的监控数据源、变更事件源、语义化的判别规则等等,将规则数据填充到对应到树节点中。
S103,执行所述风险决策树,根据决策树命中的最终结果为本次异常进行问题定位。
具体而言,本步骤执行风险决策树,根据决策树命中的最终结果为本次异常进行问题定位,参考图3,还可分为以下步骤:
S103a,读取决策树模型,从根节点出发,走入下一层决策节点;
S103b,读取决策节点关联的排查项数据,执行决策节点所关联的校验规则,根据执行结果确定下一步走入的决策树路径;
在本步骤中,排查项数据可以是监控数据、日志、变更事件等。
应用该实施例,对决策节点所关联的校验规则的执行结果进行判断,具体而言:
1)如果判断结果为true,则判定本次校验规则执行通过,继续执行后续步骤S103c;
2)如果判断结果为false,则判定本次校验规则执行不通过,跳出流程,停止走入该节点以后的路径。
S103c,判断当前执行的节点是否为叶子节点,若当前执行的节点是叶子节点,则结束递归,输出决策出的问题定位结论;若当前执行的节点不是叶子节点,则走入下一层决策树节点,重新执行步骤S103b;
需要说明的是,问题定位结论可以是没有结论、一个或多个结论。若存在多个结论,在可以结论集合的形式进行输出,该结论集合中可以包括故障根因的指导性描述、确定性恢复预案的执行方式和/或一个报警降级/屏蔽的降噪动作。
故障根因的指导性描述:即对查找到的问题根因的具有指导性的描述意见,该描述可以包括对故障的具体描述,该故障的形成原因,解决故障可以使用哪些方法等。
确定性恢复预案的执行方式:该确定性恢复预案可以包括具体的可执行恢复步骤。
在本说明书提供的其中一种实施例中,可以预先配置好确定性恢复预案的自动执行脚本,在问题定位结论中内包含确定性恢复预案时,自动查找该恢复预案对应的自动执行脚本,并运行该自动执行脚本,根据脚本依次执行恢复步骤。
报警降级/屏蔽的降噪动作:传统方案对于各类异常信息的报警是不做区分的,接收到异常信息后直接进行报警推送。但频繁报警容易分散、淹没重要关注点。需要有效的定位手段对排查到的异常信息进行分级推送或者屏蔽,以达到降噪的效果。
用户可根据应用场景,预先制定针对问题定位结论集合中结论的处理方式,具体而言:
a)若问题定位结论为无结论,即未定位到问题根因,则可立即报警,进一步地,可将该异常信息判定为疑难信息,加入疑难信息库,留待技术人员后续解决。
b)若问题定位结论为单一结论,则可针对该结论类型设置对应动作;
举例说明:当该结论为故障根因的指导性描述时,将该指导性描述推送给技术人员;当该结论为确定性恢复预案的执行方式时,自动执行该恢复预案并记录最终的执行结果;当该结论为报警降级/屏蔽的降噪动作时,执行警降级/屏蔽的降噪动作。
c)若问题定位结论为多个结论,则可预先为各个类型的结论设置执行优先级与对应的执行动作。如:先执行降噪后的报警动作,再自动执行确定性恢复预案并记录最终的执行结果。
具体地,执行风险决策树,根据决策树命中的最终结果为本次异常进行问题定位的具体方式可参考图4和图5,具体流程如下:
读取决策树根节点root,采用递归遍历的方式遍历根节点root的子节点c1,c2…cn;
进入子节点ci后,先判断当前异常数据对象是否满足执行校验规则的前置条件:若不满足执行校验规则的前置条件,则退出递归;若满足执行校验规则的前置条件,则继续执行。
若走入规则类型决策节点,则启用预定的规则引擎模块执行节点关联配置的校验规则,判断执行结果:若为false,则退出递归阻断该节点以后的路径;否则,继续执行;其中,该预定的规则引擎可以为Aviator规则引擎,也可以为Groovy、QLExpress等脚本引擎。
若走入答案类型决策节点,则将节点关联配置的决策结论加入到排查结果集合;
若走入子流程类型决策节点,则再次读取子流程决策树,获取子决策树根节点root’,针对子决策树重新执行本流程;
对每一个遍历节点执行完成后,需对当前节点进行判断:若为叶子节点,则退出递归;否则,取当前节点ci作为根节点rooti,重复至执行本流程第二步(判断当前异常数据对象是否满足执行校验规则的前置条件),继续遍历其下一层子节点。
完成决策树排查后,得到有效的定位结论集合,指导后续处理。
本说明书提供的问题定位方法的整体流程为:线上问题产生触发监控报警,接入报警数据进行自动化定位决策,由决策结果指导故障的恢复止血。可以看出,通常在各种指标特征相对明确的情况下,技术人员对问题排查的思路、步骤也是相对重复固定的,本说明书提供的方案,针对不同的异常场景配置对应的策略树,通过自动化执行问题定位的方式代替繁琐重复的人肉工作,既可以减少人员对日常报警排查的时间精力投入,又可以有效提高问题定位效率。
其中,用于排查的决策树路径、决策规则、排查项取自配置好的,基于专家经验的规则数据。并可根据最终在决策树中命中的确定性排查定位结果,指导出恢复故障的对应动作。
相应于上述方法实施例,本说明书实施例还提供一种基于决策树的问题定位装置,参见图6所示,所述装置可以包括:异常信息接收模块610,决策树确定模块620和决策树执行模块630;
异常信息接收模块610:用于接收基于日志监控获取的异常信息后,根据所述异常信息确定异常场景;
决策树确定模块620:用于在数据库中确定所述异常场景对应的风险决策树,根据所述异常信息和预定的规则信息配置所述风险决策树的决策路径与决策规则,其中,数据库中存储了对应不同异常场景的不同风险决策树;
决策树执行模块630:用于执行所述风险决策树,根据决策树命中的最终结果为本次异常进行问题定位。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述基于决策树的问题定位方法,所述方法至少包括:
接收基于日志监控获取的异常信息后,根据所述异常信息确定异常场景;
在数据库中确定所述异常场景对应的风险决策树,根据所述异常信息和预定的规则信息配置所述风险决策树的决策路径与决策规则,其中,数据库中存储了对应不同异常场景的不同风险决策树;
执行所述风险决策树,根据决策树命中的最终结果为本次异常进行问题定位。
图7示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的基于决策树的问题定位方法,所述方法至少包括:
接收基于日志监控获取的异常信息后,根据所述异常信息确定异常场景;
在数据库中确定所述异常场景对应的风险决策树,根据所述异常信息和预定的规则信息配置所述风险决策树的决策路径与决策规则,其中,数据库中存储了对应不同异常场景的不同风险决策树;
执行所述风险决策树,根据决策树命中的最终结果为本次异常进行问题定位。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。