本发明属于计算机软件技术领域,特别是涉及一种基于日志分析的告警方法和系统。
背景技术:
日志记录是操作系统或者应用程序必不可少的功能,在现有技术中,当出现问题时,例如系统安全性问题或应用程序异常时,去分析相应的日志,往往面对的是一个或数个巨大的日志文件,真正有效的信息可能无从查起,而且只能事后去分析原因,并不能对系统做到一个实时的预警,可见,这种方式解决问题的效率较低。
技术实现要素:
为解决上述问题,本发明提供了一种基于日志分析的告警方法和系统,能够实时高效的分析日志,并且及时的发现操作系统或应用程序的问题,解决起来更加容易。
本发明提供的一种基于日志分析的告警方法,包括:
以预设周期扫描日志文件;
提取所述日志文件中的预设关键词;
当提取的所述预设关键词的数量达到对应的预设阈值时,发出告警信息。
优选的,在上述基于日志分析的告警方法中,
在所述提取所述日志文件中的预设关键词之后,还包括:
对所述日志文件进行格式化;
对格式化后的日志文件进行入库;
对入库的日志文件进行归类。
优选的,在上述基于日志分析的告警方法中,
所述提取所述日志文件中的预设关键词包括:
当关注系统安全时,提取的所述预设关键词为telnet;
当关注应用程序的错误日志时,提取的所述预设关键词为error;
当关注接口登录情况时,提取的所述预设关键词为login。
优选的,在上述基于日志分析的告警方法中,
所述以预设周期扫描日志文件包括:
识别所述日志文件的修改日期;
如果所述修改日期在当前周期内,则读取所述日志文件;
扫描所述日志文件。
优选的,在上述基于日志分析的告警方法中,
所述扫描所述日志文件之后,还包括:
记录当前扫描的行数或字节数,作为下次扫描的起点。
本发明提供的一种基于日志分析的告警系统,包括:
扫描模块,用于以预设周期扫描日志文件;
提取模块,用于提取所述日志文件中的预设关键词;
告警模块,用于当提取的所述预设关键词的数量达到对应的预设阈值时,发出告警信息。
优选的,在上述基于日志分析的告警系统中,
还包括:
格式化模块,用于对所述日志文件进行格式化;
入库模块,用于对格式化后的日志文件进行入库;
归类模块,用于对入库的日志文件进行归类。
优选的,在上述基于日志分析的告警系统中,
所述提取模块包括:
第一提取单元,用于当关注系统安全时,提取的所述预设关键词为telnet;
第二提取单元,用于当关注应用程序的错误日志时,提取的所述预设关键词为error;
第三提取单元,用于当关注接口登录情况时,提取的所述预设关键词为login。
优选的,在上述基于日志分析的告警系统中,
所述扫描模块包括:
识别单元,用于识别所述日志文件的修改日期;
读取单元,用于当所述修改日期在当前周期内,读取所述日志文件;
扫描单元,用于扫描所述日志文件。
优选的,在上述基于日志分析的告警系统中,
所述扫描模块还包括:
记录单元,用于记录当前扫描的行数或字节数,作为下次扫描的起点。
本发明提供了上述基于日志分析的告警方法和系统,由于先以预设周期扫描日志文件,然后提取所述日志文件中的预设关键词,当提取的所述预设关键词的数量达到对应的预设阈值时,再发出告警信息,因此能够实时高效的分析日志,并且及时的发现操作系统或应用程序的问题,解决起来更加容易。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的第一种基于日志分析的告警方法的示意图;
图2为本申请实施例提供的第一种基于日志分析的告警系统的示意图。
具体实施方式
本发明的核心思想在于提供一种基于日志分析的告警方法和系统,能够实时高效的分析日志,并且及时的发现操作系统或应用程序的问题,解决起来更加容易。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例提供的第一种基于日志分析的告警方法如图1所示,图1为本申请实施例提供的第一种基于日志分析的告警方法的示意图。该方法包括如下步骤:
S1:以预设周期扫描日志文件;
在该步骤中,所述日志包括但不限于系统日志和具体应用程序日志,可以设定对一个或多个日志文件进行周期性扫描,周期可设定,一般是秒级,例如可以选择为2秒。
S2:提取所述日志文件中的预设关键词;
需要说明的是,可以针对扫描的日志文件设置不同的关键词,用来进行关键信息提取。
S3:当提取的所述预设关键词的数量达到对应的预设阈值时,发出告警信息。
在该步骤中,在提取的所述预设关键词的数量达到对应的预设阈值,如发现异常链接、扫描周期内ERROR信息过多或者业务模块调用频率过高等,将按照设定方式发送告警信息,可以以邮件通知的方式来发出告警信息,将可能发生的问题(系统进行的不安全操作,应用程序异常),提前暴露出来,以便采取措施,将可能造成的影响降到最低。
本申请实施例提供了上述基于日志分析的告警方法,由于先以预设周期扫描日志文件,然后提取所述日志文件中的预设关键词,当提取的所述预设关键词的数量达到对应的预设阈值时,再发出告警信息,因此能够实时高效的分析日志,并且及时的发现操作系统或应用程序的问题,解决起来更加容易。
本申请实施例提供的第二种基于日志分析的告警方法,是在上述第一种方法的基础上,还包括如下技术特征:
在所述提取所述日志文件中的预设关键词之后,还包括:
对所述日志文件进行格式化;
对格式化后的日志文件进行入库;
对入库的日志文件进行归类。
需要说明的是,日志信息入库的目的是提高日志分析性能,当日志文件量级非常大时,对单个文件的分析将变的非常困难,那么在周期性扫描阶段,将需要入库的日志信息格式化后入库,有了数据库支持,在日志分析时,能够提供强大的检索归类功能,提高日志分析的效率和准确性,而且入库前可以对日志信息进行过滤,保证入库日志信息的有效性,避免无效信息的混淆。
本申请实施例提供的第三种基于日志分析的告警方法,是在上述第一种或第二种方法的基础上,还包括如下技术特征:
所述提取所述日志文件中的预设关键词包括:
当关注系统安全时,提取的所述预设关键词为telnet;
当关注应用程序的错误日志时,提取的所述预设关键词为error;
当关注接口登录情况时,提取的所述预设关键词为login。
需要说明的是,关键词需要根据具体的应用场景进行设置,也并不仅限于上述三个例子。关注系统安全方面的异常telnet链接,或者应用程序的ERROR日志,以及需要重要关注的业务模块关键字等。想要监控telnet,则telnet就是关键字;想要监控接口login,那login就是关键字。需要根据具体的监控目标进行操作,通过关键字分析,可以将当前的异常信息及时收集起来,用于系统安全、接口异常以及业务模块访问量等方面的实时判断。
本申请实施例提供的第四种基于日志分析的告警方法,是在上述第三种方法的基础上,还包括如下技术特征:
所述以预设周期扫描日志文件包括:
识别所述日志文件的修改日期;
如果所述修改日期在当前周期内,则读取所述日志文件;
扫描所述日志文件。
也就是说,在当前周期内如果没有改动则不读取日志文件数据,这就能够进一步提高工作效率。
本申请实施例提供的第五种基于日志分析的告警方法,是在上述第四种方法的基础上,还包括如下技术特征:
所述扫描所述日志文件之后,还包括:
记录当前扫描的行数或字节数,作为下次扫描的起点。
在这种情况下,就无需每次扫描之前已经扫描过的部分,可以接续上次扫描的地点继续扫描,从而进一步提高工作效率。
本申请实施例提供的第一种基于日志分析的告警系统如图2所示,图2为本申请实施例提供的第一种基于日志分析的告警系统的示意图,该系统包括:
扫描模块1,用于以预设周期扫描日志文件,所述日志包括但不限于系统日志和具体应用程序日志,可以设定对一个或多个日志文件进行周期性扫描,周期可设定,一般是秒级,例如可以选择为2秒;
提取模块2,用于提取所述日志文件中的预设关键词,可以针对扫描的日志文件设置不同的关键词,用来进行关键信息提取;
告警模块3,用于当提取的所述预设关键词的数量达到对应的预设阈值时,发出告警信息,在提取的所述预设关键词的数量达到对应的预设阈值,如发现异常链接、扫描周期内ERROR信息过多或者业务模块调用频率过高等,将按照设定方式发送告警信息,可以以邮件通知的方式来发出告警信息,将可能发生的问题(系统进行的不安全操作,应用程序异常),提前暴露出来,以便采取措施,将可能造成的影响降到最低。
本申请实施例提供了上述基于日志分析的告警系统,能够实时高效的分析日志,并且及时的发现操作系统或应用程序的问题,解决起来更加容易。
本申请实施例提供的第二种基于日志分析的告警系统,是在上述第一种系统的基础上,还包括如下技术特征:
还包括:
格式化模块,用于对所述日志文件进行格式化;
入库模块,用于对格式化后的日志文件进行入库;
归类模块,用于对入库的日志文件进行归类。
需要说明的是,日志信息入库的目的是提高日志分析性能,当日志文件量级非常大时,对单个文件的分析将变的非常困难,那么在周期性扫描阶段,将需要入库的日志信息格式化后入库,有了数据库支持,在日志分析时,能够提供强大的检索归类功能,提高日志分析的效率和准确性,而且入库前可以对日志信息进行过滤,保证入库日志信息的有效性,避免无效信息的混淆。
本申请实施例提供的第三种基于日志分析的告警系统,是在上述第一种或第二种系统的基础上,还包括如下技术特征:
所述提取模块包括:
第一提取单元,用于当关注系统安全时,提取的所述预设关键词为telnet;
第二提取单元,用于当关注应用程序的错误日志时,提取的所述预设关键词为error;
第三提取单元,用于当关注接口登录情况时,提取的所述预设关键词为login。
关键词需要根据具体的应用场景进行设置,也并不仅限于上述三个例子。关注系统安全方面的异常telnet链接,或者应用程序的ERROR日志,以及需要重要关注的业务模块关键字等。想要监控telnet,则telnet就是关键字;想要监控接口login,那login就是关键字。需要根据具体的监控目标进行操作,通过关键字分析,可以将当前的异常信息及时收集起来,用于系统安全、接口异常以及业务模块访问量等方面的实时判断。
本申请实施例提供的第四种基于日志分析的告警系统,是在上述第三种系统的基础上,还包括如下技术特征:
所述扫描模块包括:
识别单元,用于识别所述日志文件的修改日期;
读取单元,用于当所述修改日期在当前周期内,读取所述日志文件;
扫描单元,用于扫描所述日志文件。
也就是说,在当前周期内如果没有改动则不读取日志文件数据,这就能够进一步提高工作效率。
本申请实施例提供的第五种基于日志分析的告警系统,是在上述第四种系统的基础上,还包括如下技术特征:
所述扫描模块还包括:
记录单元,用于记录当前扫描的行数或字节数,作为下次扫描的起点。
在这种情况下,就无需每次扫描之前已经扫描过的部分,可以接续上次扫描的地点继续扫描,从而进一步提高工作效率。
上述基于日志分析的告警方法和系统使用语言可以为Python、Java、C++、mysql或Oracle等,数据库可以为postgresql,应用环境可以为Linux环境。可以一定程度上实现对所监控日志的预警功能,能够及时的发现日志异常,并通过告警通知,将可能出现的风险降到最低,同时提高了对日志的分析能力。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。