一种分布式环境下实时日志的无损采集方法及其系统与流程

文档序号:11654453阅读:293来源:国知局
一种分布式环境下实时日志的无损采集方法及其系统与流程

本发明涉及日志采集方法,更具体地说是指一种分布式环境下实时日志的无损采集方法及其系统。



背景技术:

随着平台化技术和分布式计算技术的发展,用于记录用户操作、系统运行状态的日志可能遍布成百上千的服务器上,如何将这些数据收集到一起,供后续分析使用,是一大技术难题。分布式采集系统的出现就是为了满足分布式系统环境下海量日志的采集需求,分布式采集系统利用分布在网络联通的多个计算机节点上的采集器,通过元数据统一管理、采集器分布存放实现分布式环境下系统的日志采集。

目前,通常采用rsyslog以及logstash两种方式进行日志的采集,rsyslog是linux日志机制的核心常驻服务,该服务负责监听linux下的日志信息,并把日志信息追加到对应的日志文件中,一般在/var/log目录下。它还可以把日志信息通过网络协议发送到另一台linux服务器上。rsyslog采用模块化设计,能够定制各类数据发送方,同时提供对数据进行处理并写到各种数据接受方(可定制)的能力。logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置。logstash也采用模块化设计,能够支持多种发送方,同时提供对数据进行处理并写到各种数据接受方(可定制)的能力。其低准入门槛适合小企业使用。

使用rsyslog进行采集日志文件时会有以下的缺点:

1、rsyslog的单点问题会导致异常退出期间部分滚动输出的日志文件无法采集。

2、rsyslog不支持动态日志目录采集如每日更新的日期目录,同时也不支持对相同结构的多目录进行统一配置与采集。

3、rsyslog不支持采集后日志文件的归档与删除,日志输出目录的文件数量越来越多,需要人工归档与删除。

使用logstash进行采集日志文件时会有以下的缺点:

1、logstash的单点问题会导致异常退出期间,会出现高概率的重发与丢失日志消息。

2、logstash不支持动态日志目录采集如每日更新的日期目录,同时也不支持对相同结构的多目录进行统一配置与采集。

3、logstash都不支持采集后日志文件的归档与删除,日志输出目录的文件数量越来越多。

4、在分布式系统环境下,logstash采集配置等元数据没有中心化配置与发布等功能,无法对各个主机的采集元数据有效管理。

5、在分布式系统环境下,logstash没有提供监控输出接口,无法有效管理logstash地状态。

4、logstash采用ruby开发,采集性能低下。

因此,有必要设计一种分布式环境下实时日志的无损采集方法及其系统,实现无损的采集实时日志,配置以及运营均方便,且性能高,不仅保障分布式系统日志采集实时性与可靠性,同时具有了强大的异常重采能力。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供一种分布式环境下实时日志的无损采集方法及其系统。

为实现上述目的,本发明采用以下技术方案:一种分布式环境下实时日志的无损采集方法,所述方法包括:

获取日志文件中的日志消息;

采用disk-assisted缓冲模式对所述日志消息进行缓存;

实时更新状态信息到偏移量状态文件;

记录日志文件与偏移量状态文件的对应关系;

判断日志文件是否出现漏采情况;

若日志文件出现漏采情况,则调用配置模块接口,生成漏采日志文件的采集配置文件。

其进一步技术方案为:采用disk-assisted缓冲模式对所述日志消息进行缓存的步骤之后,还包括:

对日志消息进行格式化与过滤。

其进一步技术方案为:获取日志文件中的日志消息的步骤,包括以下具体步骤:

判断采集路径中是否含有“*”,若采集路径中含有“*”,则根据目录生成实际的采集配置文件,采集多目录下的日志文件,或者,若采集路径中不含有“*”,则进行下一步骤;

判断采集路径中是否含有“{date}”,若采集路径中含有“{date}”,则定时根据当日日期生成对应的采集配置文件,采集动态日期目录下的日志文件,或者,若采集路径中不含有“{date}”,则采集单目录下的日志文件。

其进一步技术方案为:采用disk-assisted缓冲模式对所述日志消息进行缓存的步骤,包括以下具体步骤:

判断内存队列是否处于满载状态或者退出状态;

若内存队列不处于满载状态或者退出状态,则将所述日志消息缓存于所述内存列队中;

若内存队列处于满载状态或者退出状态,则激活磁盘队列,将所述日志消息持久化到磁盘中。

其进一步技术方案为:若日志文件出现漏采情况,则调用配置模块接口,生成漏采日志文件的采集配置文件的步骤之后,还包括:

对最后更新时间为历史日期的日志文件发起归档与删除操作。

其进一步技术方案为:所述一种分布式环境下实时日志的无损采集方法还包括:

提供网页进行统一配置与发布。

本发明还提供了一种分布式环境下实时日志的无损采集系统,包括输入单元、消息缓存单元、输出单元、记录单元以及数据检测单元;

所述输入单元,用于获取日志文件中的日志消息;

所述消息缓存单元,用于采用disk-assisted缓冲模式对所述日志消息进行缓存;

所述输出单元,用于实时更新状态信息到偏移量状态文件;

所述记录单元,用于记录日志文件与偏移量状态文件的对应关系;

所述数据检测单元,用于判断日志文件是否出现漏采情况,若日志文件出现漏采情况,则调用配置模块接口,生成漏采日志文件的采集配置文件。

其进一步技术方案为:所述一种分布式环境下实时日志的无损采集系统还包括解析过滤单元,所述解析过滤单元用于对日志消息进行格式化与过滤。

其进一步技术方案为:所述输入单元包括多目录采集模块以及动态目录采集模块;

所述多目录采集模块,用于判断采集路径中是否含有“*”,若采集路径中含有“*”,则根据目录生成实际的采集配置文件,采集多目录下的日志文件;

所述动态目录采集模块,用于判断采集路径中是否含有“{date}”,若采集路径中含有“{date}”,则定时根据当日日期生成对应的采集配置文件,采集动态日期目录下的日志文件,或者,若采集路径中不含有“{date}”,则采集单目录下的日志文件。

其进一步技术方案为:所述消息缓存单元包括判断模块、内存列队缓存模块以及磁盘队列缓存模块;

所述判断模块,用于判断内存队列是否处于满载状态或者退出状态;

所述内存列队缓存模块,用于若内存队列不处于满载状态或者退出状态,则将所述日志消息缓存于所述内存列队中;

所述磁盘队列缓存模块,用于若内存队列处于满载状态或者退出状态,则激活磁盘队列,将所述日志消息持久化到磁盘中。

本发明与现有技术相比的有益效果是:本发明的一种分布式环境下实时日志的无损采集方法,通过将获取的日志消息进行缓存,当内存队列满或者退出时会激活磁盘队列,用于持久化到磁盘中,保障消息不丢失,偏移量状态文件的更新有利于保障消息不丢失或者重复发送数据,对日志文件进行漏采判断,防止漏采情况发生,实现无损的采集实时日志,配置以及运营均方便,且性能高,不仅保障分布式系统日志采集实时性与可靠性,同时具有了强大的异常重采能力。

下面结合附图和具体实施例对本发明作进一步描述。

附图说明

图1为本发明具体实施例提供的一种分布式环境下实时日志的无损采集方法的流程图;

图2为本发明具体实施例提供的获取日志文件中的日志消息的具体流程图;

图3为本发明具体实施例提供的采用disk-assisted缓冲模式对日志消息进行缓存的具体流程图;

图4为本发明具体实施例提供的一种分布式环境下实时日志的无损采集系统的结构示意图;

图5为本发明具体实施例提供的输入单元的结构示意图;

图6为本发明具体实施例提供的消息缓存单元的结构示意图。

具体实施方式

为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。

如图1~6所示的具体实施例,本实施例提供的一种分布式环境下实时日志的无损采集方法,可以运用在分布式系统的日志统一归集管理中,实现无损的采集实时日志,配置以及运营均方便,且性能高,不仅保障分布式系统日志采集实时性与可靠性,同时具有了强大的异常重采能力。

本实施例提供的一种分布式环境下实时日志的无损采集方法,该方法包括:

s1、获取日志文件中的日志消息;

s2、采用disk-assisted缓冲模式对所述日志消息进行缓存;

s3、对日志消息进行格式化与过滤;

s4、实时更新状态信息到偏移量状态文件;

s5、记录日志文件与偏移量状态文件的对应关系;

s6、判断日志文件是否出现漏采情况;

s7、若日志文件出现漏采情况,则调用配置模块接口,生成漏采日志文件的采集配置文件;

s8、对最后更新时间为历史日期的日志文件发起归档与删除操作。

上述的一种分布式环境下实时日志的无损采集方法还包括:若日志文件不出现漏采情况,则进入s8步骤。

对于上述的s1步骤,获取日志文件中的日志消息,使用事件监听方式进行获取日志消息,当日志文件写入事件触发时,将第一时间采集到日志消息并发送到缓冲队列当中,其包括以下具体步骤:

s11、判断采集路径中是否含有“*”,若采集路径中含有“*”,则s12、根据目录生成实际的采集配置文件,采集多目录下的日志文件,或者,若采集路径中不含有“*”,则进行下一步骤;

s13、判断采集路径中是否含有“{date}”,若采集路径中含有“{date}”,则s14、定时根据当日日期生成对应的采集配置文件,采集动态日期目录下的日志文件,或者,若采集路径中不含有“{date}”,则s15、采集单目录下的日志文件。

上述的s11步骤-s14步骤,实现文件多目录、动态目录文件采集。

更进一步的,上述的s2步骤,采用disk-assisted缓冲模式对所述日志消息进行缓存的步骤,包括以下具体步骤:

s21、判断内存队列是否处于满载状态或者退出状态;

s22、若内存队列不处于满载状态或者退出状态,则将所述日志消息缓存于所述内存列队中;

s23、若内存队列处于满载状态或者退出状态,则激活磁盘队列,将所述日志消息持久化到磁盘中。

当内存队列处于满载状态或者退出状态时会激活磁盘队列,用于持久化到磁盘中,保障消息不丢失。

上述的s4步骤,实时更新状态信息到偏移量状态文件,安全可靠输出日志消息,并在输出异常时保证日志消息的存盘。

上述的状态信息包括偏移量等状态信息。当eops-agent采集器重启时会加载状态信息,并从偏移量处重新读取数据,保障消息不丢失或者重复发送数据。

上述的s6步骤以及s7步骤,不仅保障分布式系统日志采集实时性与可靠性,同时具有了强大的异常重采能力,为进一步实现分布式系统日志统一归集管理提供基础设施。

对于s8步骤,对最后更新时间为历史日期的日志文件发起归档与删除操作,采集后文件归档与删除,支持无损实时采集。

另外,上述的一种分布式环境下实时日志的无损采集方法包括提供网页进行统一配置与发布,实现可视化统一配置、中心化管理。

在网页上提供统一配置功能,可以对进行采集的日志文件名称、进程号、路径、归档路径与是否删除等信息进行配置,配置完成生成配置模板文件。

发布前需要选择配置模板文件与完成发布所属集群、主机组等发布信息的配置,进行发布操作后,网页界面将配置模板文件发布到对应主机的eops-agent采集器采集配置模板目录下,并重启采集器,完成采集发布。

上述的一种分布式环境下实时日志的无损采集方法,通过将获取的日志消息进行缓存,当内存队列满或者退出时会激活磁盘队列,用于持久化到磁盘中,保障消息不丢失,偏移量状态文件的更新有利于保障消息不丢失或者重复发送数据,对日志文件进行漏采判断,防止漏采情况发生,实现无损的采集实时日志,配置以及运营均方便,且性能高,不仅保障分布式系统日志采集实时性与可靠性,同时具有了强大的异常重采能力。

如图4所示,本实施例还提供了一种分布式环境下实时日志的无损采集系统,包括输入单元10、消息缓存单元20、输出单元40、记录单元50以及数据检测单元60。

输入单元10,用于获取日志文件中的日志消息。

消息缓存单元20,用于采用disk-assisted缓冲模式对所述日志消息进行缓存。

输出单元40,用于实时更新状态信息到偏移量状态文件。

记录单元50,用于记录日志文件与偏移量状态文件的对应关系。

数据检测单元60,用于判断日志文件是否出现漏采情况,若日志文件出现漏采情况,则调用配置模块接口,生成漏采日志文件的采集配置文件。

上述的一种分布式环境下实时日志的无损采集系统还包括解析过滤单元30,解析过滤单元30用于对日志消息进行格式化与过滤。

更进一步的,上述的输入单元10包括多目录采集模块11以及动态目录采集模块12。

多目录采集模块11,用于判断采集路径中是否含有“*”,若采集路径中含有“*”,则根据目录生成实际的采集配置文件,采集多目录下的日志文件。

动态目录采集模块12,用于判断采集路径中是否含有“{date}”,若采集路径中含有“{date}”,则定时根据当日日期生成对应的采集配置文件,采集动态日期目录下的日志文件,或者,若采集路径中不含有“{date}”,则采集单目录下的日志文件。

上述的多目录采集模块11以及动态目录采集模块12实现文件多目录、动态目录文件采集。

另外,消息缓存单元20包括判断模块21、内存列队缓存模块22以及磁盘队列缓存模块23。

判断模块21,用于判断内存队列是否处于满载状态或者退出状态。

内存列队缓存模块22,用于若内存队列不处于满载状态或者退出状态,则将所述日志消息缓存于所述内存列队中。

磁盘队列缓存模块23,用于若内存队列处于满载状态或者退出状态,则激活磁盘队列,将所述日志消息持久化到磁盘中。

当内存队列处于满载状态或者退出状态时会激活磁盘队列,用于持久化到磁盘中,保障消息不丢失。

输出单元40安全可靠输出日志消息,并在输出异常时保证日志消息的存盘,上述的状态信息包括偏移量等状态信息。当eops-agent采集器重启时会加载状态信息,并从偏移量处重新读取数据,保障消息不丢失或者重复发送数据。

数据检测单元60不仅保障分布式系统日志采集实时性与可靠性,同时具有了强大的异常重采能力,为进一步实现分布式系统日志统一归集管理提供基础设施。

另外,上述的一种分布式环境无损的实时日志采集系统还包括归档删除单元70,用于对最后更新时间为历史日期的日志文件发起归档与删除操作,采集后文件归档与删除,支持无损实时采集。

更进一步的,上述的一种分布式环境无损的实时日志采集系统还包括配置单元80,该配置单元80用于提供网页进行统一配置与发布,实现可视化统一配置、中心化管理。

在网页上提供统一配置功能,可以对进行采集的日志文件名称、进程号、路径、归档路径与是否删除等信息进行配置,配置完成生成配置模板文件。

发布前需要选择配置模板文件与完成发布所属集群、主机组等发布信息的配置,进行发布操作后,网页界面将配置模板文件发布到对应主机的eops-agent采集器采集配置模板目录下,并重启采集器,完成采集发布。

上述的一种分布式环境下实时日志的无损采集系统,通过将获取的日志消息进行缓存,当内存队列满或者退出时会激活磁盘队列,用于持久化到磁盘中,保障消息不丢失,偏移量状态文件的更新有利于保障消息不丢失或者重复发送数据,对日志文件进行漏采判断,防止漏采情况发生,实现无损的采集实时日志,配置以及运营均方便,且性能高,不仅保障分布式系统日志采集实时性与可靠性,同时具有了强大的异常重采能力。

上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。

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