一种基于日志数据确定诊断处理措施的方法
技术领域
本发明涉及海量计算机数据处理领域,尤其涉及一种基于日志数据确定诊断处理措施的方法。
背景技术
现有的日志分析方法和系统主要有两种。一种是手动式日志分析,由管理员在系统出错后,有针对性有目的的检索日志文件从而得到所需要的信息;另一种则是在某些日志条目中设置错误标志,从而由计算机自动检索出带有错误标志的日志。
这两种方法都有着明显的缺点和不足。手动式处理方法需要在由管理员在日志中主动发起检索,当数据量上升为海量时,由于日志文件巨大,检索效率变得十分低下;而且由于缺乏明确的检索目标,会有巨大的漏检可能,造成错误排查不全面、系统不够健壮;另外,手动处理方法是“出错后再补救”的方法,无法做出提前诊断,而一旦错误发生则可能造成较大经济损失。
计算机主动检索方法虽然提高了检索效率,但是仍旧只能够检索出带有错误标志的日志条目,而对于潜在的错误难以发现,有漏检可能;而且它也是“出错后再补救”的方法,可能造成较大经济损失。
因此现有技术还存在缺陷,亟待改进。
发明内容
为克服现有技术的不足,本发明提供一种基于日志数据确定诊断措施的方法及装置。
根据本发明的一方面,提供一种基于日志数据确定诊断措施的方法,所述方法包括:获取一时间段的日志数据;针对一种或多种特征,在获取的日志数据中进行统计;利用统计的结果,构建所述一时间段的日志特征;从所述一时间段之前的各个时间段中识别出具有与确定的日志特征相同或者相似的时间段;获取针对识别的时间段的日志数据所作出的诊断处理措施;将获取的诊断处理措施确定为针对所述一时间段的日志数据的诊断处理措施。
优选地,所述在获取的日志数据中进行统计的步骤包括:解析获取的日志数据中每条日志条目包含的每个字段信息;分别统计所述一种或多种特征在解析的信息中出现的次数;将针对所述一种或多种特征统计的次数作为增量信息分别与所述一时间段相邻的上一个时间段中针对所述一种或多种特征统计的次数合并。
优选地,所述方法还包括:存储统计的结果,以便对与所述一时间段相邻的下一个时间段的日志数据进行统计。
优选地,所述从所述一时间段之前的各个时间段中识别出具有与确定的日志特征相同或者相似的时间段的步骤包括:采用聚类分析的方法,从所述一时间段之前的各个时间段中识别出具有与确定的日志特征相同或者相似的时间段。
优选地,所述聚类分析的方法为DBSCAN聚类算法。
优选地,所述一种或多种特征为以下信息中的一个或多个:错误、警告、通知、调试、网络地址、统一资源定位符、所属区域、客户端、线程号、文件名、行号、函数名。
优选地,所述方法还包括:采用预定的报表形式,来显示统计的结果。
优选地,所述预定的报表形式为以下形式之一:饼图、柱状图、线形图。
本发明不仅可以从多个维度对日志数据进行智能分析,而且还有效地克服了手动处理日志的效率低下、容易漏检等缺点。此外,本发明还可根据当前日志分析的结果采取及时的诊断处理措施,以克服系统潜在的问题或者缺陷。
附图说明
图1是示出根据本发明的示例性实施例的分析日志数据的方法的流程图。
具体实施方式
以下,参照附图来详细说明本发明的实施例。
图1示出了本发明一种分析日志数据的方法的优选实施例的流程图。
参照图1,在步骤110中,获取一时间段的日志数据。
在一个可选的实施例中,可通过特定的API(Application ProgrammingInterface,应用程序编程接口)接口获取所述一时间段的日志数据。具体实施时,可在需要做日志记录地方(如:某个模块、函数或者代码行等)调用该接口,以便将运行的日志数据写入指定位置的存储单元中。例如,在基于RESTful的软件架构中,可调用如下形式的API接口获取日志数据:
http://<ip>:<port>/<website>/log?log=<message>
通过上述API接口,可将web应用在运行过程中的日志数据通过http协议发送至于指定的后台设备中。
从上述内容可知,运行的日志数据通常被写入指定位置的存储单元(例如,某个文件、数据库等)中,例如,可在日志文件中写入有运行的日期、时间、线程号、文件名、行号、函数名、IP、客户端类型、URL、错误级别等信息。因此,除了上述方法外,还可直接从指定位置的日志文件或者数据库中,读取所述一时间段的日志数据。
在步骤120中,针对一种或多种特征,在获取的日志数据中进行统计分析。
这里,所述的特征可以是各种类型的错误(error)、警告(warning)、通知(info)、调试(debug)、网络地址(IP)、统一资源定位符(URL)、所属区域、客户端、线程号、文件名、行号、函数名等信息。
在一个可选的实施中,可对上述特征的信息在获取的日志数据中出现的次数进行统计。具体实施时,可解析获取的日志数据中每条日志条目包含的每个字段信息,分别统计所述一种或多种特征在解析的信息中出现的次数。
以下分别从多个不同的特征对获取的日志数据进行统计:
当特征为error时,可通过遍历获取的日志数据,对error在所述时间段内的日志数据中出现的次数(即,数量)进行统计。具体地讲,就是每当解析到一条包含有error的日志条目时,就将error的统计次数自动累加1。
类似地,还可采用上述同样的方法对所述时间段内出现的warning、info、debug次数进行统计。
当特征为IP时,可通过遍历获取的日志数据,对IP在所述时间段内的日志数据中出现的次数进行统计。具体实施时,可将不同的IP汇总至同一个索引表中。当从日志数据中解析到一个IP时,将解析到的IP与索引表中记录的IP进行对比,如果索引表中不存在该IP,则将该IP添加至索引表中,并将IP的统计次数累加1;如果索引表中存在该IP,则IP的统计次数不变化。
当特征为不同的IP时,可通过遍历获取的日志数据,对每个IP在所述时间段内的日志数据中的访问次数进行统计。具体实施时,可将不同的IP汇总至同一个索引表<IP,次数>中,并针对每一个IP进行统计。当从日志数据中解析到一个IP时,将解析到的IP与索引表中记录的IP进行对比,如果索引表中存在该IP,则将该IP对应的统计次数累加1;如果索引表中不存在该IP,则将该IP添加至索引表中,并将该IP对应的统计次数置为1。
当特征为不同的URL时,可通过遍历获取的日志数据,对每个URL在所述时间段内的日志数据中的被访问次数进行统计。具体实施时,可将不同的URL汇总至同一个索引表<URL,次数>中,并针对每一个URL进行统计。当从日志数据中解析到一个URL时,将解析到的URL与索引表中记录的URL进行对比,如果索引表中存在该URL,则将该URL对应的统计次数累加1;如果索引表中不存在该URL,则将该URL添加至索引表中,并将该URL对应的统计次数置为1。
当特征为不同的区域时,可通过遍历获取的日志数据,对每个区域在所述时间段内的日志数据中的访问次数进行统计。具体实施时,可将不同的区域汇总至同一索引表<区域,次数>中,当从日志数据中解析到一个IP时,可通过第三方提供的IP定位系统或者IP查询站点(如:http://ip.chinaz.com)确定该IP的所属区域,然后,将确定的区域与索引表中记录的区域进行比对,如果索引表中存在该区域,则将该区域对应的统计次数累加1;如果索引表中不存在该区域,则将该区域添加至索引表中,并将该区域对应的统计次数置为1。
通过上述统计,可获得针对如下不同的特征的统计的结果:error次数、warning次数、info次数、debug次数、IP的出现次数、每个IP访问页面的次数、每个URL的被访问次数、每个区域的访问次数。
应该理解,本发明不限于采用特征的信息在日志数据中出现的次数对获取的日志数据进行统计,其他统计指标(例如,特征信息所占的比例等),也均可应用于本发明。
此外,为使得统计的结果更为全面、可靠,还可对获取的日志数据进行增量分析。在一个优选的实施例中,可解析获取的日志数据中每条日志条目包含的每个字段信息;分别统计所述一种或多种特征在解析的信息中出现的次数;将针对所述一种或多种特征统计的次数作为增量信息分别与所述一时间段相邻的上一个时间段中针对所述一种或多种特征统计的次数合并。
需要说明的是,与所述一时间段相邻的上一个时间段中针对各个对应特征统计的次数可以是预置的,也可以通过计算获得。如果通过计算获得,则以所述一时间段之前的某一时间段的日志数据作为计算的起始依据,通过增量迭代的方式,依次统计出所述一时间段之前的各个时间段中各个特征对应的统计结果。
这里,各个时间段的划分可以是若干小时、天、周、月等等,对此本发明不作限制,只要便于数据统计即可。
在步骤130中,利用统计的结果,构建所述一时间段的日志特征。
在采用多个不同的特征进行统计的实施例中,可利用步骤120中的统计的结果,构建一个多维向量作为所述一时间段的日志特征,其中,所述向量的每个分量分别对应不同的特征的统计的结果。
在一个示例性实施例中,可构建如下所示的8维向量:
[error次数,warning次数,info次数,debug次数,独立IP总次数,每个IP访问页面的次数,每个URL的被访问次数,每个区域的访问次数]
在上述8维向量中,每个分量分别对应不同的特征的统计结果,在该示例性实施例中,这8个不同的特征分别为:error、warning、info、debug、IP、每个IP、每个URL、每个区域。
在步骤140中,从所述一时间段之前的各个时间段中识别出具有与确定的日志特征相同或者相似的时间段。
具体实施时,可采用各种现有的聚类分析(例如,DBSCAN聚类算法)的方法,从所述一时间段之前的各个时间段中识别出具有与在步骤130中确定的日志特征相同或相似的时间段。
由于在聚类分析之前,还需要确定出所述一时间段之前的各个时间段的日志特征。因此,在一个可选实施例中,可参照步骤110~步骤130中所述的方法,分别获取所述一时间段之前的每个时间段的日志数据,针对一种或多种特征,在获取的所述一时间段之前的每个时间段的日志数据中进行统计,利用统计的结果,确定出所述一时间段之前的每个时间段的日志特征。然后,采用聚类算法计算所述一时间段的日志特征与所述一时间段之前的各个时间段的日志特征之间的相似度,以便将日志特征相同或者相似的时间段汇聚到同一个簇中,从而识别出具有与确定的日志特征相同或者相似的时间段。
考虑到上述实施例在确定所述一时间段之前的每个时间段的日志特征时,都会重复执行步骤110~步骤130中所述的方法,这意味着每确定一个时间段的日志特征,都会存在大量的重复计算,当获取到的日志数据越来越多时,尤其是,重复执行步骤120时不仅会占用大量的计算机资源,而且会使得计算的速度变得越来越慢。
为避免对历史日志数据的重复挖掘和计算,减少对系统资源的消耗,提高计算的效率,在一个优选的实施例中,可存储在步骤120中的统计的结果,以便对与所述一时间段相邻的下一个时间段的日志数据进行统计。这样,在对每个时间段每确定一个时间段的日志特征时,都可直接从数据库中直接获取已经挖掘好的所述一时间段之前的各个时间段的统计结果。
在步骤150中,获取针对识别的时间段的日志数据所作出的诊断处理措施。
具体实施时,可建立映射模型,用于存储针对各个时间段的日志数据反映的问题所采取的诊断处理措施,当识别出具有确定的日志特征的时间段时,可从所述映射模型中获取针对识别的时间段的日志数据所采取的诊断处理措施。
在步骤160中,将获取的诊断处理措施确定为针对所述时间段的日志数据的诊断处理措施。
例如,后台管理员针对过去的某一时间段的日志数据所反映的问题,采取的诊断处理措施是重启软件,如果当前时间段的日志特征与所述某一时间段的日志特征类似,则可根据所述某一时间段采取的历史诊断处理措施直接重启软件,以解决当前时间段的日志数据所反映的问题。这样不仅实现智能化处理,而且避免了人工干预。除此之外,还可以在问题发生之前,根据日志数据中所反映的特征(如:内存泄露等),对系统进行仔细排查和诊断分析,以即时避免问题的发生所带来的影响和损失。
此外,在图1所示的实施例中,所述方法还包括:可设置多种通知方式和过滤条件;当统计分析的结果符合所述条件时,采用设置的通知方式通知用户。这里,可采用短信、邮件、微信、QQ、铃声等通知方式,过滤条件可设置为日志错误等级(error,warning,info,debug)。例如,如果是错误等级为error的日志,则发送短信;如果是错误等级为info的日志,则不做任何处理。
此外,在图1所示的实施例中,所述方法还包括:采用预定的报表形式(例如,各种饼图、柱状图、线形图),来显示统计的结果。例如,可显示如下统计分析结果:日志长度统计报表、地区访问综述统计报表、独立IP总数访问报表、每个IP的访问页面总数报表、URL总访问量报表以及各种error、warning、info、debug的总数报表。
与现有技术相比,本发明不仅可以从多个维度对日志数据进行智能分析,而且还有效地克服了手动处理日志的效率低下、容易漏检等缺点。此外,本发明还可根据当前日志分析的结果采取及时的诊断处理措施,以克服系统潜在的问题或者缺陷。
尽管已参照优选实施例为和描述了本发明,但本领域技术人员应该理解,在不脱离由权利要求限定的本发明的精神和范围的情况下,可以对这些实施例进行各种改变和变换。