一种抓取黑盒日志的方法、装置、设备及计算机存储介质与流程

文档序号:16134168发布日期:2018-12-01 00:43阅读:610来源:国知局

本发明涉及服务器监控管理技术领域,特别是涉及一种抓取黑盒日志的方法、装置、设备及计算机存储介质。

背景技术

随着用户对计算机的计算需求的提高,服务器的各项性能也越来越丰富。但是服务器在运行过程中会出现宕机等异常问题,所以需要在宕机等异常发生时抓取有效的cpu寄存器信息进行分析,这些有效的cpu寄存器信息通常叫做黑盒日志。

现有技术中,当需要抓取黑盒日志时,bmc(基板管理控制器)会分配相应数量的目标线程进行抓取,但是由于所抓取的cpu的寄存器数量较多而且较慢,因此,在抓取过程中通常采用目标线程阻塞的方式处理,导致其它操作请求无法进行。

由此可见,在抓取黑盒日志的过程中,如何降低对用户其它操作请求的影响是本领域技术人员亟待解决的问题。



技术实现要素:

本发明的目的是提供一种抓取黑盒日志的方法、装置、设备及计算机存储介质,用于在抓取黑盒日志的过程中,降低对用于其它操作请求的影响。

为解决上述技术问题,本发明提供一种抓取黑盒日志的方法,包括:

预先创建用于抓取黑盒日志的目标线程,并控制所述目标线程保持等待状态,其中所述目标线程的数量小于bmc可分配的全部线程的数量;

判断当前是否产生触发抓取操作的事件;

如果是,则产生目标信号量,并依据所述目标信号量控制所述目标线程开始抓取所述黑盒日志。

优选地,所述触发抓取操作的事件具体包括宕机事件或请求抓取黑盒日志的事件。

优选地,所述目标信号量表征产生所述宕机事件,则所述依据所述目标信号量控制所述目标线程开始抓取所述黑盒日志具体包括:

判断所述目标线程的数量是否大于或等于cpu寄存器的数量;

如果是,则控制相应数量的所述目标线程一对一同时抓取各所述cpu寄存器的所述黑盒日志;

如果否,则控制全部所述目标线程一对一同时抓取相应数量的所述cpu寄存器的黑盒日志,并在所述目标线程抓取完毕后继续抓取剩余的所述cpu寄存器的所述黑盒日志。

优选地,所述目标信号量表征产生所述请求抓取黑盒日志的事件,则所述依据所述目标信号量控制所述目标线程开始抓取所述黑盒日志具体包括:

解析所述请求抓取黑盒日志的事件中包含的cpu寄存器的名称与数量;

判断所述目标线程的数量是否大于或等于所述cpu寄存器的数量;

如果是,则依据所述名称控制相应数量的所述目标线程一对一同时抓取各所述cpu寄存器的所述黑盒日志;

如果否,则依据所述名称控制全部所述目标线程一对一同时抓取相应数量的所述cpu寄存器的黑盒日志,并在所述目标线程抓取完毕后继续抓取剩余的所述cpu寄存器的所述黑盒日志。

优选地,所述目标线程的数量具体依据所述bmc可分配的全部线程的数量以及cpu寄存器的数量确定。

优选地,在抓取所述黑盒日志完毕后,还包括:控制所述目标线程再次保持等待状态。

优选地,在抓取所述黑盒日志完毕后,且获取到预设释放指令后,还包括:释放全部所述目标线程。

为解决上述技术问题,本发明还提供一种抓取黑盒日志的装置,包括:

创建模块,用于预先创建用于抓取黑盒日志的目标线程,并控制所述目标线程保持等待状态,其中所述目标线程的数量小于bmc可分配的全部线程的数量;

判断模块,用于判断当前是否产生触发抓取操作的事件;

抓取模块,用于在所述判断模块的判断结果为是时,产生目标信号量,并依据所述目标信号量控制所述目标线程开始抓取所述黑盒日志。

为解决上述技术问题,本发明还提供一种抓取黑盒日志的设备,包括存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述所述的抓取黑盒日志的方法的步骤。

为解决上述技术问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的抓取黑盒日志的方法的步骤。

本发明所提供的抓取黑盒日志的方法,包括预先创建用于抓取黑盒日志的目标线程,并控制目标线程保持等待状态,其中目标线程的数量小于bmc可分配的全部线程的数量;判断当前是否产生触发抓取操作的事件;如果是,则产生目标信号量,并依据目标信号量控制目标线程开始抓取黑盒日志。由此可见,依照上述方法,一方面预先创建的目标线程是专门用于抓取黑盒日志的,保证了黑盒日志抓取的可靠性,另外,还有剩余的线程用于处理用户的其它操作请求,即使在抓取黑盒日志的过程中,产生了其它操作请求,也有相应的线程进行处理,不会造成其它操作请求无法进行的困扰。

此外,本发明所提供的抓取黑盒日志的装置、设备及计算机存储介质,同样具有上述有益效果。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例提供的一种抓取黑盒日志的方法的流程图;

图2为本发明实施例提供的另一种抓取黑盒日志的方法的流程图;

图3为本发明实施例提供的另一种抓取黑盒日志的方法的流程图;

图4为本发明实施例提供的一种抓取黑盒日志的装置的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其它实施例,都属于本发明保护范围。

本发明的核心是提供一种抓取黑盒日志的方法、装置、设备及计算机存储介质,用于在抓取黑盒日志的过程中,降低对用于其它操作请求的影响。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

图1为本发明实施例提供的一种抓取黑盒日志的方法的流程图。如图1所示,该方法包括s10-s12,具体如下。

s10:预先创建用于抓取黑盒日志的目标线程,并控制目标线程保持等待状态,其中目标线程的数量小于bmc可分配的全部线程的数量。

可以理解的是,本发明提到的抓取黑盒日志的方法是由bmc控制实现的,bmc可分配的全部线程的数量并不是固定的,因此,目标线程的数量也是不固定的,但是需要保证目标线程的数量要小于全部线程的数量,使得除了目标线程外,还有剩余线程可以处理用户的其它操作请求。

在具体实施中,目标线程的数量依据bmc可分配的全部线程的数量以及cpu寄存器的数量确定。可以理解的是,如果当前服务器中的cpu寄存器的数量较多,则可以分配较多数量的目标线程用于抓取黑盒日志,相反,如果当前服务器中的cpu寄存器的数量较少,则可以分配较少数量的目标线程用于抓取黑盒日志。

在创建了目标线程之后,这些目标线程均处于等待状态,其用途只用于抓取黑盒日志,因此,在不需要抓取黑盒日志时,这些目标线程保持等待状态,期间,如果bmc接收到其它操作请求需要用到线程进行处理时,bmc会调用除了目标线程外的其余线程进行处理。

对于步骤s10来说,只要目标线程没被释放,则只需要执行一次即可,并不需要实时进行。

s11:判断当前是否产生触发抓取操作的事件,如果是,则进入s12。

本实施例中的触发抓取操作的事件不作限定,需要预先设置,bmc在运行过程中就会实时检测触发抓取操作的事件。作为优选地实施方式,触发抓取操作的事件可以包括宕机事件或请求抓取黑盒日志的事件。可以理解的是,以上两个事件只是一种具体实施方式,并不代表只有这两个事件。

在具体实施中,步骤s11通常是实时进行,但是也可以是以较快的频率执行,例如每秒进行一次。

可以理解的是,如果步骤s11的判断结果为否,则继续返回步骤s11进行判断。

s12:产生目标信号量,并依据目标信号量控制目标线程开始抓取黑盒日志。

当产生触发抓取操作的事件后,bmc就会生成目标信号量,目标信号量生成后就可以触发目标线程开始抓取黑盒日志。本实施例中,由于触发抓取操作的事件的类型不同,所以生成的目标信号量也有所差异,需要根据目标信号量的不同,采用不同的控制方法抓取黑盒日子。例如,如果目标信号量表征出现宕机事件,则需要抓取全部cpu寄存器的黑盒日志,如果目标信号量表征出现请求抓取黑盒日志的事件,则表示并不需要抓取全部cpu寄存器的黑盒日志,而是抓取事件中指定的某些cpu寄存器的黑盒日志。

在具体实施中,按照上述步骤抓取黑盒日志,一方面,预先创建的目标线程是专门用于抓取黑盒日志的,保证了黑盒日志抓取的可靠性,另外,还有剩余的线程用于处理用户的其它操作请求,即使在抓取黑盒日志的过程中,产生了其它操作请求,也有相应的线程进行处理,不会造成其它操作请求无法进行的困扰,实质上是一种异步抓取黑盒日志的方法。用户的其它操作请求可以包括请求bmc进行配置网络等,本实施例不再赘述。

需要说明的是,对于硬件上的要求,服务器必须搭配bmc,并提供bmc的物理链路。在软件实现方面,需要编写bmc创建抓取黑盒日志线程,并编写检测触发抓取操作的事件的程序,同时,还要编写出现目标信号量的生成以及控制目标线程抓取操作的程序。由于硬件和软件上的实现,是本领域技术人员所熟知的内容,本发明不再赘述。

本发明实施例提供的抓取黑盒日志的方法,包括预先创建用于抓取黑盒日志的目标线程,并控制目标线程保持等待状态,其中目标线程的数量小于bmc可分配的全部线程的数量;判断当前是否产生触发抓取操作的事件;如果是,则产生目标信号量,并依据目标信号量控制目标线程开始抓取黑盒日志。由此可见,依照上述方法,一方面预先创建的目标线程是专门用于抓取黑盒日志的,保证了黑盒日志抓取的可靠性,另外,还有剩余的线程用于处理用户的其它操作请求,即使在抓取黑盒日志的过程中,产生了其它操作请求,也有相应的线程进行处理,不会造成其它操作请求无法进行的困扰。

在上述实施例中,提到的目标信号量表征的事件不同,则对应的抓取方式也是不同的。具体的,当目标信号量表征产生宕机事件时,则依据目标信号量控制目标线程开始抓取黑盒日志具体包括:

判断目标线程的数量是否大于或等于cpu寄存器的数量。

如果是,则控制相应数量的目标线程一对一同时抓取各cpu寄存器的黑盒日志。

如果否,则控制全部目标线程一对一同时抓取相应数量的cpu寄存器的黑盒日志,并在目标线程抓取完毕后继续抓取剩余的cpu寄存器的黑盒日志。

在具体实施中,如果bmc可分配的线程数量较多,且cpu寄存器的数量较少时,则可以分配与cpu寄存器的数量相同的目标线程。此时,目标线程的数量与cpu寄存器的数量相同,且出现的是宕机事件,需要抓取全部cpu寄存器的黑盒日志,因此,采用一个目标线程对应一个cpu寄存器的方式抓取,可以保证抓取操作的实时性。例如,有10个目标线程,有10个cpu寄存器,则二者是一一对应的关系,至于哪个目标线程对应哪个cpu寄存器本实施例不作限定。

同样的,如果目标线程数量大于cpu寄存器的数量,则不需要全部目标线程都参与抓取操作,只是相应数量(与cpu寄存器的数量相同)的目标线程参与即可。例如,有10个目标线程,有8个cpu寄存器,则二者不是一一对应的关系,只需要其中的8个目标线程参与即可,剩余的2个目标线程不参与,至于参与抓取操作的8个目标线程中哪个目标线程对应哪个cpu寄存器本实施例不作限定。

最后,如果目标线程数量小于cpu寄存器的数量,则一次无法实现对全部cpu寄存器的黑盒日志的抓取,需要分次进行。具体是先将全部目标线程投入抓取操作,与相应数量的cpu寄存器(与目标线程的数量相同)一一对应进行抓取,而剩余的cpu寄存器的黑盒日志需要等目标线程抓取完毕后,再进行分配抓取。例如,有10个目标线程,15个cpu寄存器,则先将10个目标线程抓取其中的10个cpu寄存器的黑盒日志,剩余的5个cpu寄存器的黑盒日志等待10个目标线程完成之后,再进行抓取。

在上述实施例中,提到的目标信号量表征的事件不同,则对应的抓取方式也是不同的。具体的,当目标信号量表征产生请求抓取黑盒日志的事件时,则依据目标信号量控制目标线程开始抓取黑盒日志具体包括:

解析请求抓取黑盒日志的事件中包含的cpu寄存器的名称与数量。

判断目标线程的数量是否大于或等于cpu寄存器的数量。

如果是,则依据名称控制相应数量的目标线程一对一同时抓取各cpu寄存器的黑盒日志。

如果否,则依据名称控制全部目标线程一对一同时抓取相应数量的cpu寄存器的黑盒日志,并在目标线程抓取完毕后继续抓取剩余的cpu寄存器的黑盒日志。

由于请求抓取黑盒日志的事件可能不需要抓取全部cpu寄存器的黑盒日志,而是抓取其中若干个,因此,抓取黑盒日志的事件中包含有cpu寄存器的名称与数量,这里的名称主要是为了明确抓取哪个cpu寄存器的黑盒日志。

在具体实施中,如果bmc可分配的线程数量较多,且cpu寄存器的数量较少时,则可以分配与cpu寄存器的数量相同的目标线程。首先获取需要抓取的cpu寄存器的数量,如果目标线程的数量与需要抓取的cpu寄存器的数量相同,则采用一个目标线程对应一个cpu寄存器的方式抓取,可以保证抓取操作的实时性。例如,有10个目标线程,需要抓取10个cpu寄存器的黑盒日志,则二者是一一对应的关系,至于哪个目标线程对应哪个cpu寄存器本实施例不作限定。

同样的,如果目标线程数量大于需要抓取的cpu寄存器的数量,则不需要全部目标线程都参与抓取操作,只是相应数量(与cpu寄存器的数量相同)的目标线程参与即可。例如,有10个目标线程,有8个cpu寄存器,则二者不是一一对应的关系,只需要其中的8个目标线程参与即可,剩余的2个目标线程不参与,至于参与抓取操作的8个目标线程中哪个目标线程对应哪个cpu寄存器本实施例不作限定。

最后,如果目标线程数量小于需要抓取的cpu寄存器的数量,则一次无法实现对全部cpu寄存器的黑盒日志的抓取,需要分次进行。具体是先将全部目标线程投入抓取操作,与相应数量的cpu寄存器(与目标线程的数量相同)一一对应进行抓取,而剩余的cpu寄存器的黑盒日志需要等目标线程抓取完毕后,再进行分配抓取。例如,有10个目标线程,15个cpu寄存器,则先将10个目标线程抓取其中的10个cpu寄存器的黑盒日志,剩余的5个cpu寄存器的黑盒日志等待10个目标线程完成之后,再进行抓取。

图2为本发明实施例提供的另一种抓取黑盒日志的方法的流程图。在上一实施例的基础上,在抓取黑盒日志完毕后,还包括:

s20:控制目标线程再次保持等待状态。

为了能够保证下一次成功抓取黑盒日志,本实施例中,需要控制参与抓取操作的目标线程保持等待状态。可以理解的是,这一步骤后需要返回至s11。

图3为本发明实施例提供的另一种抓取黑盒日志的方法的流程图。在上一实施例的基础上,在抓取黑盒日志完毕后,还包括:

s30:获取到预设释放指令后,释放全部目标线程。

由于目标线程是专用于抓取黑盒日志的,在某些情况下,需要全部线程参与某种操作,如果母线线程不被释放,则严重影响当前操作的执行效率,因此,本实施例中,可以根据预设释放指令释放全部目标线程。可以理解的是,预设释放指令的触发可以由用户自行设定,本实施例不再赘述。

上文中描述了抓取黑盒日志的方法的具体实施方式,本发明还提供一种与该方法对应的抓取黑盒日志的装置。该装置是基于功能模块话的角度进行说明。

图4为本发明实施例提供的一种抓取黑盒日志的装置的结构图。如图4所示,该装置包括:

创建模块10,用于预先创建用于抓取黑盒日志的目标线程,并控制目标线程保持等待状态,其中目标线程的数量小于bmc可分配的全部线程的数量。

判断模块11,用于判断当前是否产生触发抓取操作的事件。

抓取模块12,用于在判断模块的判断结果为是时,产生目标信号量,并依据目标信号量控制目标线程开始抓取黑盒日志。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

本发明实施例提供的抓取黑盒日志的装置,包括创建模块、判断模块和抓取模块。上述各模块用于:预先创建用于抓取黑盒日志的目标线程,并控制目标线程保持等待状态,其中目标线程的数量小于bmc可分配的全部线程的数量;判断当前是否产生触发抓取操作的事件;如果是,则产生目标信号量,并依据目标信号量控制目标线程开始抓取黑盒日志。由此可见,依照上述装置,一方面预先创建的目标线程是专门用于抓取黑盒日志的,保证了黑盒日志抓取的可靠性,另外,还有剩余的线程用于处理用户的其它操作请求,即使在抓取黑盒日志的过程中,产生了其它操作请求,也有相应的线程进行处理,不会造成其它操作请求无法进行的困扰。

此外,本发明还提供一种抓取黑盒日志的设备的具体实施方式。需要说明的是,抓取黑盒日志的设备的也是与抓取黑盒日志的方法对应,只不过是从硬件的角度进行描述。

该设备具体包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序时实现如上述实施例中的抓取黑盒日志的方法的步骤。

本发明实施例提供的抓取黑盒日志的设备,包括存储器和处理器。处理器能够实现如下方法:预先创建用于抓取黑盒日志的目标线程,并控制目标线程保持等待状态,其中目标线程的数量小于bmc可分配的全部线程的数量;判断当前是否产生触发抓取操作的事件;如果是,则产生目标信号量,并依据目标信号量控制目标线程开始抓取黑盒日志。由此可见,依照上述方法,一方面预先创建的目标线程是专门用于抓取黑盒日志的,保证了黑盒日志抓取的可靠性,另外,还有剩余的线程用于处理用户的其它操作请求,即使在抓取黑盒日志的过程中,产生了其它操作请求,也有相应的线程进行处理,不会造成其它操作请求无法进行的困扰。

最后本发明还提供一种计算机可读存储介质的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述实施例中的抓取黑盒日志的方法的步骤。

上述实施例中的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明实施例提供的计算机可读存储介质,存储有计算机程序,能够实现如下方法:预先创建用于抓取黑盒日志的目标线程,并控制目标线程保持等待状态,其中目标线程的数量小于bmc可分配的全部线程的数量;判断当前是否产生触发抓取操作的事件;如果是,则产生目标信号量,并依据目标信号量控制目标线程开始抓取黑盒日志。由此可见,依照上述方法,一方面预先创建的目标线程是专门用于抓取黑盒日志的,保证了黑盒日志抓取的可靠性,另外,还有剩余的线程用于处理用户的其它操作请求,即使在抓取黑盒日志的过程中,产生了其它操作请求,也有相应的线程进行处理,不会造成其它操作请求无法进行的困扰。

以上对本发明所提供的一种抓取黑盒日志的方法、装置、设备及计算机存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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