一种应用日志数据告警方法及装置与流程

文档序号:12818844阅读:262来源:国知局
一种应用日志数据告警方法及装置与流程

本发明涉及计算机信息处理技术,尤其涉及一种应用日志数据告警方法及装置。



背景技术:

目前,随着计算机技术的发展,互联网环境中各种应用的规模越来越庞大,产生的应用日志数据量也越来越多,且应用日志数据对于分析应用的性能和故障起到了非常重要的作用,因此,如何准确、全面、快速、高效地从海量的应用日志数据中获取到关键的性能和故障日志数据指标,对于应用在运行过程中产生的问题的定位、处理、服务质量的改善以及潜在问题的发现,有着非常重要的意义。

现有技术中,获取应用日志数据并进行分析目前可以通过采用hadoopmapreduce框架进行离线式的应用日志数据分析,如图3所示,将大的计算任务拆分成多个任务,分配到不同的计算节点执行并行计算,最后汇总计算结果。

而上述方案是使用静态离线式的方法对海量的应用日志数据进行分析,当应用在运行过程中出现异常或故障后,需要在应用运行周期结束后才可以将异常和故障原因分析出来,因此,上述方案无法实时、高效地对应用运行过程产生的故障进行处理。



技术实现要素:

有鉴于此,本发明实施例期望提供一种应用日志告警方法及装置,能够自动、实时、准确、高效地获取应用在运行期间发生故障时的日志数据,并及时发出告警信息。

为达到上述目的,本发明实施例提供了一种应用日志数据告警方法,包括:

获取elk平台所采集的应用日志数据;

基于预设规则,判断所述应用日志数据中是否有需要进行告警的告警数据,将告警数据存入数据库;

读取数据库中存储的告警数据,采用预设配置将所述告警数据发送至目标对象。

上述方法中,所述获取elk平台所采集的应用日志数据之前,包括:

elk平台实时采集应用在运行期间的应用日志数据,将所述采集的应用日志数据进行格式化,对所述应用日志数据的字段建立索引,当收到应用日志数据查询请求后,根据所述索引将与所述查询请求对应的应用日志数据进行发送。

上述方法中,所述获取elk平台所采集的应用日志数据,包括:

周期性的向elk平台发送应用日志数据查询请求,所述应用日志数据查询请求包括查询预设的多个连续的时间点的应用日志数据,获取elk平台发送的预设的多个连续的时间点的应用日志数据。

其中,所述基于预设规则,判断所述应用日志数据文件中是否有需要告警的数据,将告警数据存入数据库中,包括:

预先对应用日志数据中各个类型的数据设定阈值,获取elk平台发送的应用日志数据后,判断所述应用日志数据中各个类型数据在预设的连续的时间点是否超过所述预设的阈值,将超过阈值的数据确定为需要告警的告警数据,将所述告警数据存入数据库中。

所述阈值根据应用在正常运行中日志数据的取值设定。

所述预设配置包括调用通信工具接口以发送告警数据。

本发明实施例还提供了一种应用日志数据告警装置,包括:

获取模块,用于获取elk平台所采集的应用日志数据;所述应用日志数据包括应用在运行期间内所有数据在各个时间点的数值;

确定模块,用于基于预设规则,判断所述应用日志数据文件中是否有需要告警的告警数据,确定出告警数据;

数据库,用于存储告警数据;

发送模块,读取所述存储在数据库中的告警数据,根据预设配置将所述告警数据发送至目标对象;所述预设配置包括调用通信工具接口以发送告警数据。

其中,所述获取模块,具体用于:

周期性的向elk平台发送应用日志数据查询请求,所述应用日志数据查询请求包括查询预设的多个时间点的应用日志数据,获取elk平台发送的预设的多个时间点的应用日志数据。

所述确定模块,具体用于:

预先对应用日志数据中各个类型的数据设定阈值,获取elk平台发送的应用日志数据后,判断所述应用日志数据各个类型数据在预设的连续的时间点是否超过所述预设的阈值,将所述超过阈值的数据确定为需要告警的告警数据,将所述告警数据存入数据库中。

所述确定模块中预先对应用日志数据中各个类型的数据设定阈值根据应用在正常运行中日志数据的取值进行设定。

本发明实施例提供的应用日志数据告警方法及装置,应用于elk平台,获取elk平台所采集的应用日志数据;基于预设规则,判断所述应用日志数据中是否有需要告警的告警数据,将告警数据存入数据库;读取数据库中存储的告警数据,采用预设配置将所述告警数据发送至目标对象;如此,可以实现应用日志数据的实时监控,当应用运行出现异常或故障时,及时发现并及时发出告警信息。

附图说明

图1为本发明实施例应用日志数据告警方法的流程示意图;

图2为本发明实施例elk平台结构示意图;

图3为现有技术中haddoopmapreduce框架结构示意图;

图4为本发明实施例应日志数据告警装置组成结构示意图;

图5为本发明实施例基于elk平台的应用日志数据告警方法实际应用流程示意图。

具体实施方式

为了能够更加详细的了解本发明实施例的特点与技术内容,下面对本发明实施例的实现进行详细阐述。

图1为本发明实施例应用日志数据告警方法的流程示意图,如图1所示,本发明实施例的应用日志数据告警方法基于elk平台实现,包括以下步骤:

步骤101:获取elk平台所采集的应用日志数据;所述应用日志数据包括应用在运行期间内所有数据在多个连续的时间点的数值;

这里,所述获取应用日志数据可以是周期性获取,所述周期可以根据应用运行时间进行设定;

其中,所述获取elk平台所采集的应用日志数据具体包括:周期性的向elk平台发送查询应用日志数据请求,所述查询应用日志数据请求包括查询预设的多个连续的时间点的应用日志数据,获取elk平台发送的预设的多个连续的时间点的应用日志数据;

这里,所述周期可以根据应用运行时间进行设定,例如:某个应用每日运行时间为13个小时;其中,高负载时间段为连续的6个小时,因此,可以设置高负载时间段内以5分钟为周期对应用日志数据进行获取,其余时间段内每10分钟为周期对应用日志数据进行获取。

所述步骤301之前还包括:elk平台实时采集应用在运行期间的日志数据,将所述采集的应用日志数据进行格式化,对所述应用日志数据的每个字段建立索引,收到应用日志查询请求后,根据所述索引将查询请求的应用日志数据进行发送。

其中,如图2所示,elk平台包括:

日志采集模块logstash201,用于采集应用日志数据,完成增量日志传输以及数据规整,支持多线程采集,可以实现秒级上万数据吞吐量;

分布式发布订阅消息系统kafka202,用于对应用日志数据进行缓存;

这里,由于服务器数量很多,必须使用高吞吐量的分布式发布订阅消息系统kafka202对应用日志数据进行缓存,以提高日志采集模块logstash201的性能;数据分析检索模块elasticsearch203,用于完成数据的检索和聚合分析,支持分布式和线性扩展,可以实现亿级数据秒级响应;

数据展示模块kibana204,用于提供可视化功能,提供web界面供用户进行检索、分析elasticsearch203中的日志数据,可以更加直观的分析关键日志数据。

步骤102:基于预设规则,判断所述应用日志数据中是否有需要告警的数据,将确定出的告警数据存入数据库;

其中,预先对应用日志数据中所有类型的数据设定阈值,获取elk平台发送的应用日志数据后,判断所述应用日志数据所有数据在预设的连续的时间点是否超过所述预设的阈值,将所述超过阈值的数据确定为需要告警的数据,将所述告警数据存入数据库中;

具体的,所述阈值可以根据应用在正常运行中日志数据的取值进行设定;例如:应用在正常运行中的一个数据的取值为50-90毫秒,那么,可以将其正常运行取值的上限值(90毫秒或100毫秒)设置为该数据的阈值,即当该数据在预设的连续的时间点(例如3个或5个)的取值均超过所述阈值,则确定该数据为告警数据,表明应用在运行过程中出现异常或故障。

在实际应用中,所述设定的阈值可以包括种告警触发函数,例如:all(#3)、max(#3)、min(#3)、sum(#3)、avg(#3)等,其中,

#3表征最新的3个连续的时间点的应用日志数据;

all(#3):最新的3个点都满足阈值条件,则确定为告警数据;

max(#3):对于最新的3个点,其最大值满足阈值条件,则确定为告警数据;

min(#3):对于最新的3个点,其最小值满足阈值条件,则确定为告警数据;

sum(#3):对于最新的3个点,其和满足阈值条件,则确定为告警数据;

avg(#3):对于最新的3个点,其平均值满足阈值条件,则确定为告警数据;

所述阈值条件可以是对日志数据设定的一个阈值,例如:responseall(#3)>100,表征response的值连续3次大于100毫秒,则确定为告警数据,所述response表征应用日志数据的一个数据;

确定模块周期性的向elasticsearch模块发送查询请求,数据请求通过elasticsearchrestful接口完成,获取预设的多个连续的时间点的应用日志数据,并根据预设规则判断所述应用日志数据中是否有需要告警的数据;其中,请求和响应数据均为json格式,例如:

请求数据包括:应用日志数据时间段范围和应用日志数据格式,如"gte":1473248070565,"lte":1473334470565"format":"epoch_millis""date_histogram":{"field":"@timestamp","interval":"30m","time_zone":"asia/shanghai","min_doc_count":1,"extended_bounds":{"min":1473248070562,"max":1473334470562。

响应数据包括:应用日志数据在固定时间的具体取值数据,如:"key_as_string":"2016-09-08t16:30:00.000+08:00","key":1473323400000,"doc_count":10。

步骤103:读取所述存储在数据库中的告警数据,采用预设配置将所述告警数据发送至目标对象;所述预设配置包括调用通信工具接口发送告警数据;

其中,所述通讯工具包括互联网通信工具、无线通信工具、有线通信工具;所述目标对象为用户或相关技术人员的通信工具接收端等;

在实际应用中,所述数据库可以使用redis数据库,根据告警数据字段建立索引,提高告警数据查询、读取和发送效率;所述预设配置可以使用通信运营商提供的服务发送告警数据,例如:短信,也可以使用越顶通信软件发送告警数据,例如:微信,也可以使用电子邮件等通信接口发送告警数据;所述目标对象可以是应用运营维护人员的告警数据接收客户端,供相关人员查阅,例如:邮箱收件箱、微信、短信等。

本发明实施例提供的应用日志数据告警方法,获取elk平台所采集的应用日志数据;基于预设规则,判断所述应用日志数据中是否有需要告警的告警数据,将告警数据存入数据库;读取数据库中存储的告警数据,采用预设配置将所述告警数据发送至目标对象;如此,可以实现应用日志数据的实时监控,当应用运行出现异常或故障时,及时发现并及时发出告警信息。

现有技术中有通过采用elk(elasticsearch、logstash、kibana)平台对应用日志数据进行采集和分析,当应用在运行过程中出现故障之后,由相关运维人员通过调取elk平台相应的日志数据,根据日志数据进行逐一排查,进一步确定应用的故障原因,解决应用故障。由于需要运维人员参与对数据进行调取和排查,因此,无法快速、高效地解决应用出现的故障。

图4为本发明实施例应日志数据告警装置组成结构示意图,如图4所示,本发明实施例应日志数据告警装置包括:

获取模块401,用于获取elk平台所采集的应用日志数据;所述应用日志数据包括应用在运行期间内所有数据在多个连续的时间点的数值;

这里,所述获取应用日志数据可以是周期性获取,所述周期可以根据应用运行时间进行设定;

确定模块402,用于基于预设规则,判断所述应用日志数据文件中是否有需要告警的数据,确定出的告警数据;

数据库403,用于存储确定出的告警数据;

发送模块404,读取所述存储在数据库中的告警数据,采用预设配置将所述告警数据发送至目标对象;所述预设配置包括调用通信工具接口发送告警数据;

其中,所述通讯工具包括互联网通信工具、无线通信工具、有线通信工具;

其中,获取模块401,具体用于周期性的向elk平台发送查询应用日志数据请求,所述查询应用日志数据请求包括查询预设的多个时间点的应用日志数据,获取elk平台发送的预设的多个时间点的应用日志数据;所述周期可以根据应用运行时间进行设定;

确定模块402具体用于预先对应用日志数据中所有类型的数据设定阈值,所述阈值可以根据应用在正常运行中日志数据的取值进行设定,获取elk平台发送的应用日志数据后,判断所述应用日志数据所有数据在预设的连续的时间点是否超过所述预设的阈值,将所述超过阈值的数据确定为需要告警的数据,将所述告警数据存入数据库中。

需要说明的是:各模块的实现功能可参照前述图3中应用日志数据告警方法的相关描述而理解,这里不再赘述。

图5为本发明实施例基于elk平台的应用日志数据告警方法实际应用流程示意图,如图5所示,本发明实施例基于elk平台的应用日志数据告警方法实际可以应用于咪咕音乐app的服务端,包括以下流程:

步骤501:实时采集应用日志数据;

所述步骤由elk平台logstash模块实时采集并存储应用日志数据。

步骤502:采集模块将应用日志数据发送至kafka集群;

其中,所述kafka集群式一种高吞吐量的分布式发布订阅消息系统单个或多个服务器,可以处理应用运行过程中产生的所有的动作流数据,使用消息队列对应用日志数据进行缓冲,提高采集模块性能。

步骤503:采集模块从kafka集群读取应用日志数据存入elasticsearch;

其中,所述elasticsearch模块是基于lucene的搜索系统,可以实现应用日志数据的检索和聚合分析,其特点有:分布式、零配置、自动发现、索引自动分片、索引副本机制、restful接口、多数据源、自动搜索负载等。

步骤504:确定模块周期性的发送查询指令至elasticsearch集群,根据预设规则判断日志数据中是否有超出设定阈值的数据,如果有,执行步骤505;如果没有,执行步骤507;

其中,周期性的向elk平台发送查询应用日志数据指令,所述查询应用日志数据指令包括查询预设的多个连续的时间点的应用日志数据,获取elk平台发送的预设的多个连续的时间点的应用日志数据;所述周期可以根据应用运行时间进行设定,例如:某个应用每日运行时间为13个小时,其中,高负载时间段为连续的6个小时,因此,可以设置高负载时间段内以5分钟为周期对应用日志数据进行获取,其余时间段内每10分钟为周期对应用日志数据进行获取;

其中,预先对应用日志数据中所有类型的数据设定阈值,所述阈值可以根据应用在正常运行中日志数据的取值进行设定,获取elk平台发送的应用日志数据后,判断所述应用日志数据所有数据在预设的连续的时间点是否超过所述预设的阈值,将所述超过阈值的数据确定为需要告警的数据,将所述告警数据存入数据库中;

在实际应用中,所述设定的阈值可以包括种告警触发函数,例如:all(#3)、max(#3)、min(#3)、sum(#3)、avg(#3)等,其中,

#3表征最新的3个连续的时间点的应用日志数据;

all(#3):最新的3个点都满足阈值条件则确定为告警数据;

max(#3):对于最新的3个点,其最大值满足阈值条件则确定为告警数据;

min(#3):对于最新的3个点,其最小值满足阈值条件则确定为告警数据;

sum(#3):对于最新的3个点,其和满足阈值条件则确定为告警数据;

avg(#3):对于最新的3个点,其平均值满足阈值条件则确定为告警数据;

所述阈值条件可以是对日志数据设定的一个阈值,例如:responseall(#3)>100,表征response的值连续3次大于100毫秒则确定为告警数据,所述response表征应用日志数据的一个数据。

步骤505:将告警数据存入数据库中;

所述数据库可以使用redis数据库存储告警数据。

步骤506:发送模块根据告警方式将告警数据发送至目标对象;

其中,发送模块根据告警方式(例如:短信、app、电子邮件)向用户发送告警信息。

步骤507:结束本次告警周期;

本次告警周期结束,根据预设时间进入下一告警周期。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

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