书签 分享 收藏 举报 版权申诉 / 11

一种分布式设备日志采集方法.pdf

  • 上传人:Y948****062
  • 文档编号:19850
  • 上传时间:2018-01-12
  • 格式:PDF
  • 页数:11
  • 大小:1,001.28KB
  • 摘要
    申请专利号:

    CN201410061318.0

    申请日:

    2014.02.24

    公开号:

    CN104778188A

    公开日:

    2015.07.15

    当前法律状态:

    实审

    有效性:

    审中

    法律详情:

    实质审查的生效IPC(主分类):G06F 17/30申请日:20140224|||公开

    IPC分类号:

    G06F17/30; H04L29/08

    主分类号:

    G06F17/30

    申请人:

    贵州电网公司信息通信分公司

    发明人:

    王皓然; 文才豪

    地址:

    550002贵州省贵阳市南明区次南门瑞金南路38号

    优先权:

    专利代理机构:

    贵阳中新专利商标事务所52100

    代理人:

    李亮; 刘楠

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了一种分布式设备日志采集方法,该方法通过分布式日志处理框架采用中介者模式构建集成化数据中间层,形成集成数据中介管理服务,该数据中介服务采集设备日志进行分布式存储在各分布式存储点上并进行数据连接,若需增加分布式存储点时,采用分布式存储点动态扩展机制实现;本发明采用中介者模式,构建集成化数据中间层,统一采集、格式化处理日志,集中对分布式数据存储点进行统一管理和调度;采用分表结构,更好的发挥多线程处理的优势,建立独有的分表索引机制,与各数据存储点的MariaDB数据库索引一起,构成超大量数据分级索引体系,同时利用分布式服务器性能优势,极大地提高了日志数据的存储与查询性能。

    权利要求书

    1.  一种分布式设备日志采集方法,其特征在于:该方法通过分布式日志处理框架采用中介者模式构建集成化数据中间层,形成集成数据中介管理服务,该数据中介服务采集设备日志进行分布式存储在各分布式存储点上并进行数据连接,若需增加分布式存储点时,采用分布式存储点动态扩展机制实现。

    2.
      根据权利要求1所述的分布式设备日志采集方法,其特征在于:所述的分布式日志处理框架为经过格式化后的syslog处理框架,异构的syslog经过格式化后采用统一的事件数据表结构进行存储。

    3.
      根据权利要求1所述的分布式设备日志采集方法,其特征在于:所述集成化数据中间层独立运行于高性能服务器上,主要负责日志进行采集、格式化、缓存并分发存储于分布式存储节点上,同时,针对分布式存储日志的检索也通过集成化数据中间层实现。

    4.
      根据权利要求1所述的分布式设备日志采集方法,其特征在于:所述分布式数据存储点是通过MariaDB开源存储引擎建立;存储节点运行于较低性能的服务器上,分布式存储节点之间不进行通讯。

    5.
      根据权利要求1所述的分布式设备日志采集方法,其特征在于:集成化数据中间层采用JDBC协议对各分布式数据存储节点进行连接,每个数据存储节点都对应单独的管理线程。

    6.
      根据权利要求1所述的分布式设备日志采集方法,其特征在于:数据中间层实现日志数据分布式存储的核心数据架构是事件分表,事件分表的核心思想在于利用日志数据的特点,将海量日志数据进行合理的分块存储在多台存储服务器上并作为数据源子节点;根据各事件分表的数据结构完全一致,只存储格式化后的日志,事件分表可从时间与空间两个维度进行划分。

    7.
      根据权利要求6所述的分布式设备日志采集方法,其特征在于:分表的建立根据日志采集事件的时序和位置特征,可从时间和空间两个维度进行划分。

    8.
      根据权利要求1所述的分布式设备日志采集方法,其特征在于:各分布式存储点由存储节点管理服务进行监控和管理,包括:数据备份、数据恢复、数据中间表统计,并将对各分布式存储节点服务器的监控数据上报至集成化数据中间层。

    9.
      根据权利要求1所述的分布式设备日志采集方法,其特征在于:所述的分布式存储点动态扩展机制指当需要增加分布式存储点时,从原有存储点中分一个事件分表给新增存储点;从该时刻起,原有存储点不再向该事件分表中写入数据,该存储点中对应的事件分表仅提供查询,新增存储点向该事件分表中写入数据。

    说明书

    一种分布式设备日志采集方法
    技术领域
    本发明涉及一种分布式设备日志采集方法,属于计算机系统集成及应用技术领域。 
    背景技术
    随着网络环境规模的日益扩大,网络中各种设备的数量急剧增加,来自外部和内部的各种安全和攻击也在急剧增加,威胁着网络信息安全。为了不断应对新的安全挑战,企业和组织先后部署了防病毒系统、防火墙、入侵检测系统、漏洞扫描系统、UTM 等等。在这种复杂的安全体系下,安全审计变的极为重要。安全审计的数据基础是防病毒系统、防火墙、入侵检测系统、漏洞扫描系统、UTM、运行主机、交换机、路由器、数据库系统、中间件等日志事件、状态事件和网络数据包信息。在目前的网络环境中,各种设备的日志已经成为海量数据,syslog作为主要的日志类型,被各种操作系统,网络设备和安全设备广泛支持,成为日志的重要标准,对于其他类型的日志,也可以转换为日志格式,便于统一分析。
    由于目前的日志量极大,因此如何有效地进行处理和存储变得极为重要,在一个中型的企业中,一天的日志量可以达到几十G甚至上百G,而一般要求这些日志至少保持3个月,那么在一个安全审计系统中,这些日志的存储成为最基础和最重要的一环,传统的单点存储方案已经无法满足需求。
    另外由于日志量极大,日志的高效查询也是一个严重的课题,尤其是在单点存储方案中,对单个数据库在快速存储的同时进行查询,查询效率非常低下。
    传统的日志存储于查询技术一般采用单点存储方案,限于磁盘I/O性能,在服务器性能和数据库性能达到极限的情况下,也很难满足当前日志量巨大的要求。目前已有的分布式存储技术,往往采用分散存储,单点查询,无法均衡利用各个数据存储点的性能,也无法对全局数据进行综合审计查询。
    因此需要找到一种更高效率的分布式日志数据存储与查询技术,满足海量日志存储与查询的需求。 
    发明内容
    本发明的目的是:提供一种分布式设备日志采集方法,它采用中介者模式,构建集成化数据中间层,统一采集、格式化处理日志,集中对分布式数据存储点进行统一管理和调度;采用分表结构,更好的发挥多线程处理的优势,建立独有的分表索引机制,与各数据存储点的MariaDB数据库索引一起,构成超大量数据分级索引体系,同时利用分布式服务器性能优势,极大地提高了日志数据的存储与查询性能。
    本发明的技术方案
    一种分布式设备日志采集方法,该方法通过分布式日志处理框架采用中介者模式构建集成化数据中间层,形成集成数据中介管理服务,该数据中介服务采集设备日志进行分布式存储在各分布式存储点上并进行数据连接,若需增加分布式存储点时,采用分布式存储点动态扩展机制实现。
    前述的分布式设备日志采集方法,所述的分布式日志处理框架为经过格式化后的syslog处理框架,异构的syslog经过格式化后采用统一的事件数据表结构进行存储;syslog协议本身非常简洁高效,单点syslog的采集不会形成瓶颈。
    其中syslog的格式化方法, syslog格式化字段解析结构如下:
    <zone indes="5" name="type" desp="类型" analysis="" default ="" >
    <field match="^[0,1]" value="aa" />
    <field match ="^[2-4]" value ="bb" />
    <field match ="^[5-7]" value ="cc" />
    </ zone >
    其中zone字段定义如下:
    index:对应第一次提取的字段索引,对应event的Match中的正则表达式的组数,从1开始;
    name:对应字段名称;
    analysis:目前针对时间格式,只对时间字段有效;
    default:对于此字段直接赋值;
    如果直接采用提取的结果,就不需要配置field,如果需要根据提取的结果作二次提取,需要配置field;
    field定义如下:
    match:从已经提取的字段中进行提取该字段的正则表达式;
    value:字段赋值,根据Match匹配的结果赋值,如果为空,直接采用提取的结果。
    而数据表结构由基础字段与动态扩展字段组成,其中基础字段包括:
      事件ID、事件接收时刻、聚合事件数、关联事件数;
       事件名、事件分类、等级、规则名;
      对象、方法、意图;
       操作、资源、结果;
       设备动作、获取方式;
     事件原始等级、事件原始类型;
      漏洞信息、漏洞编号;
      事件原始分类号;
       事件产生时刻、事件发送时刻、事件持续时刻;
       发送字节数、接收字节数;
       协议、应用协议;
       源地址、源名称、源端口、目的地址、目的名称、目的端口。
    基础字段反应了各类IT设备和IT资源日志的基本内容。动态字段的设计如下:动态字段预留6个,全部为varchar类型,长度为1024字节,每个字段存储信息采用XML字串信息 ,格式设计如下:
    <info num="5" description ="备用1">
    <field  desc="厂商" value="aa" />
    <field  desc ="产品" value ="bb" />
    <field  desc ="模块名" value ="cc" />
    <field  desc ="进程名" value ="dd" />
    <field  desc ="软件版本" value ="ee" />
    </info >
    其中info的含义如下:
    num:表示该字段包含的动态子字段个数;
    description:表示该扩展字段的显示名称;
    动态子字段field 定义如下:
    desc:字段显示名
    value:字段值
    通过基础字段和动态字段相结合的数据表结构,可以充分适应复杂IT环境下日志信息的格式化和存储。
    前述的分布式设备日志采集方法,所述集成化数据中间层独立运行于高性能服务器上,主要负责日志进行采集、格式化、缓存并分发存储于分布式存储节点上,同时,针对分布式存储日志的检索也通过集成化数据中间层实现,异构的syslog经过格式化后采用统一的事件数据表结构进行存储,数据中间层建立事件分表索引,当存储一条syslog数据时,数据中间层会检查分表索引确定该数据所需要存入的存储点,并调用该存储点对应的线程进行高效存储。当对数据发起查询请求时,数据中间层会检索分表索引获取所查询信息所在的存储点,并调用对应的线程进行查询。
    前述的分布式设备日志采集方法,所述分布式数据存储点是通过MariaDB开源存储引擎建立;存储节点运行于较低性能的服务器上,分布式存储节点之间不进行通讯,。
    前述的分布式设备日志采集方法,集成化数据中间层采用JDBC协议对各分布式数据存储节点进行连接,每个数据存储节点都对应单独的管理线程;通过各数据存储点的MariaDB数据库索引一起,构成超大量数据分级索引体系,同时利用分布式服务器性能优势,极大地提高了日志数据的存储与查询性能。
    前述的分布式设备日志采集方法,数据中间层实现日志数据分布式存储的核心数据架构是事件分表,事件分表的核心思想在于利用日志数据的特点,将海量日志数据进行合理的分块存储在多台存储服务器上并作为数据源子节点;根据各事件分表的数据结构完全一致,只存储格式化后的日志,事件分表可从时间与空间两个维度进行划分;这样,在扫描操作中,如果事件查询器能够识别哪个分表中才包含特定查询中需要的数据,它就能直接去扫描那些分表的数据,而不用浪费很多时间扫描不需要的地方。
    前述的分布式设备日志采集方法,分表的建立根据日志采集事件的时序和位置特征,可从时间和空间两个维度进行划分,由于日志量极大,可能达到20000条/秒以上,平均一条日志按照0.5k计算,每秒的数据量达到10M以上,这样的日志量进行单表存储势必会性能低下甚至无法长周期存储,根据日志采集事件的时序特征,我们将事件表按照时间周期进行划分,系统在首个周期内建立规定数量的分表,当上周期分表到期后,再建立下一轮分表;事件分表的划分还可以从空间维度进行划分,每一个数据存储点在同一天会建立两个并行的事件分表,这样的构建方式主要是为动态数据存储节点增加建立数据框架基础。
    前述的分布式设备日志采集方法,各分布式存储点由存储节点管理服务进行监控和管理,包括:数据备份、数据恢复、数据中间表统计,并将对各分布式存储节点服务器的监控数据上报至集成化数据中间层;这样的设计架构既可以分布式数据存储节点的统一调度维护,提高数据协作能力,同时可以将各存储节点数据的备份、恢复等计算分散在各个数据存储服务器上。
    前述的分布式设备日志采集方法,所述的分布式存储点动态扩展机制指当需要增加分布式存储点时,从原有存储点中分一个事件分表给新增存储点;从该时刻起,原有存储点不再向该事件分表中写入数据,该存储点中对应的事件分表仅提供查询,新增存储点向该事件分表中写入数据,本设计是为了应对当日志数据量随着网络环境日趋复杂也会逐渐增大情况。
    由于采用了上述技术方案,与现有技术相比,本发明可以大幅度地提高日志的存储速度与存储能力,同时可以高效、全面地进行查询和分析。本发明方法的日志处理速度可以达到20000条/秒以上。为此,本发明技术采用中介者模式,构建集成化数据中间层,统一采集、格式化处理日志,集中对分布式数据存储点进行统一管理和调度;采用分表结构,更好的发挥多线程处理的优势,建立独有的分表索引机制,与各数据存储点的MariaDB数据库索引一起,构成超大量数据分级索引体系,同时利用分布式服务器性能优势,极大地提高了日志数据的存储与查询性能。
    附图说明
    附图1为本发明原理示意图;
    附图2为本发明中分布式存储点动态扩展机制原理示意图。
    具体实施方式
    本发明的一种分布式设备日志采集方法,该方法通过分布式日志处理框架采用中介者模式构建集成化数据中间层,形成集成数据中介管理服务,该数据中介服务采集设备日志进行分布式存储在各分布式存储点上并进行数据连接,若需增加分布式存储点时,采用分布式存储点动态扩展机制实现。
    分布式syslog处理框架是本发明的核心框架,如附图1所示:该处理框架采用中介者模式,构建集成化数据中间层,该中间层作为日志采集的入口,保证了全网日志采集处理的统一性,为后续关联分析和审计查询提供了基础,由于海量日志处理的瓶颈在于存储,syslog协议本身非常简洁高效,单点syslog的采集不会形成瓶颈;各数据存储点采用MariaDB开源存储引擎,各存储点之间不互相通讯,由集成化数据中间层统一对各存储点进行调度和管理;集成化数据中间层为每个数据存储节点分配独立的线程进行对应的存储于查询工作。
    分布式syslog处理框架经过格式化处理,并格式化后采用统一的事件数据表结构进行存储。
    其中syslog的格式化方法, syslog格式化字段解析结构如下:
    <zone indes="5" name="type" desp="类型" analysis="" default ="" >
    <field match="^[0,1]" value="aa" />
    <field match ="^[2-4]" value ="bb" />
    <field match ="^[5-7]" value ="cc" />
    </ zone >
    其中zone字段定义如下:
    index:对应第一次提取的字段索引,对应event的Match中的正则表达式的组数,从1开始;
    name:对应字段名称;
    analysis:目前针对时间格式,只对时间字段有效;
    default:对于此字段直接赋值;
    如果直接采用提取的结果,就不需要配置field,如果需要根据提取的结果作二次提取,需要配置field;
    field定义如下:
    match:从已经提取的字段中进行提取该字段的正则表达式;
    value:字段赋值,根据Match匹配的结果赋值,如果为空,直接采用提取的结果。
    而数据表结构由基础字段与动态扩展字段组成,其中基础字段包括:
       事件ID、事件接收时刻、聚合事件数、关联事件数;
       事件名、事件分类、等级、规则名;
      对象、方法、意图;
      操作、资源、结果;
       设备动作、获取方式;
      事件原始等级、事件原始类型;
      漏洞信息、漏洞编号;
      事件原始分类号;
       事件产生时刻、事件发送时刻、事件持续时刻;
      发送字节数、接收字节数;
     协议、应用协议;
      源地址、源名称、源端口、目的地址、目的名称、目的端口。
    基础字段反应了各类IT设备和IT资源日志的基本内容。动态字段的设计如下:动态字段预留6个,全部为varchar类型,长度为1024字节,每个字段存储信息采用XML字串信息 ,格式设计如下:
    <info num="5" description ="备用1">
    <field  desc="厂商" value="aa" />
    <field  desc ="产品" value ="bb" />
    <field  desc ="模块名" value ="cc" />
    <field  desc ="进程名" value ="dd" />
    <field  desc ="软件版本" value ="ee" />
    </info >
    其中info的含义如下:
    num:表示该字段包含的动态子字段个数;
    description:表示该扩展字段的显示名称;
    动态子字段field 定义如下:
    desc:字段显示名
    value:字段值
    通过基础字段和动态字段相结合的数据表结构,可以充分适应复杂IT环境下日志信息的格式化和存储。
    数据中间层实现日志数据分布式存储的核心数据架构是事件分表;事件分表的核心思想在于利用日志数据的特点,将海量日志数据进行合理的分块存储,这样,在扫描操作中,如果事件查询器能够识别哪个分表中才包含特定查询中需要的数据,它就能直接去扫描那些分表的数据,而不用浪费很多时间扫描不需要的地方。本发明技术方案中,各事件分表的数据结构完全一致,只存储格式化后的日志;事件分表从时间与空间两个维度进行划分。
    由于日志量极大,可能达到20000条/秒以上,平均一条日志按照0.5k计算,每秒的数据量达到10M以上,这样的日志量进行单表存储势必会性能低下甚至无法长周期存储。根据日志采集事件的时序特征,我们将事件表按照时间周期进行划分,按照一般日志数据要求保存3个月的要求,本方案每天建立一个分表,这样数据库中可以保留90个分表。分表表名命名规则为:log_yyyy_MM_dd,其中yyyy表示年份,MM表示月,dd表示天。分表的建立规则为,系统第一次启动建立30个分表,当30天到期后,再建立下一轮30个分表。由于分布式数据存储点的建立,事件分表的划分还可以从空间维度进行划分,每一个数据存储点在同一天会建立两个并行的事件分表,这样的构建方式主要是为动态数据存储节点增加建立数据框架基础。
    数据中间层通过分表索引文件快速定位事件分表,从而实现高效地分布式存储与查询。分表索引文件包含时间、空间、特征名三个维度对事件分表建立索引,通过时间索引,可以限定指定时间内的事件分表,通过空间索引,可以确定事件分表所在的数据存储点,通过特征名索引,可以确定事件分表的数据表名称。
    分表索引文件基本格式如下:
    日志时间(long) 存储点IP(varchar) 分表名称(varchar)
    日志时间(long) 存储点IP(varchar) 分表名称(varchar)
    日志时间(long) 存储点IP(varchar) 分表名称(varchar)
     ……
    数据中间层实现日志数据分布式存储的流程如下:
    (1)         日志采集采用非阻塞处理方式,采用不同的线程分别进行采集和存储操作,日志采集线程负责接收日志,将日志写入缓存队列,日志分发线程负责处理日志,从缓存队列中读取日志进行处理,如果缓存队列没有数据,将会处于等待状态,一旦有新的日志写入缓存,将会触发处理线程启动开始处理日志。
    (2)         日志分发线程从缓存中读取日志后,获取该日志的采集时间,访问事件分表索引,根据时间索引确定该日志所需要存储的符合时间条件的分表。
    (3)         在这些分表中检查哪些分布式数据存储节点可用,如果有可用的存储节点,则直接采用该存储点;如果没有可用的存储节点,则在任意数据存储节点上创建符合时间范围的分表,并将该存储点作为待存储位置。
    (4)         调用待选存储点对应线程,通过JDBC连接进行数据存储,考虑到效率,采用批量存储的策略,达到一定换存量集中处理
    数据中间层在管理分布式数据存储节点的过程中,需要具备动态增加数据源的机制,对于分布式的存储体系,当日志数据量随着网络环境日趋复杂也会逐渐增大,本发明设计了动态数据源扩展机制来应对该要求。
    如附图2所示:原有数据存储节点为1、2、3至n,每个数据存储节点上有两个当天的分表,假设数据存储点n上的两个分表名称为事件分表A、事件分表B。当增加新的一个数据存储节点n+1,从数据存储节点n分一个事件分表,如分表B给存储节点n+1。从此时刻开始,不再向存储节点n的事件分表B写入数据,而是向数据存储节点n+1的事件分表B写入数据,而数据存储节点n中的事件分表B仅作为查询时的只读表。
    当进行查询时,首先在分表索引中进行分表定位,查找在指定查询起止时间中 每个数据存储节点所包含的所有事件分表,然后依次查询。当到了第二时间周期,各个数据存储节点会重新建立各个分布式存储节点上的事件分表。
    数据中间层在管理分布式数据存储节点的过程中,当一个数据存储节点失效,重启数据中介管理引擎,重新分配各个数据存储节点的连接,让多个数据存储节点分担负载。原有数据存储节点为1、2、3至n,假设数据存储节点1失效,该存储节点对应的连接线程会分配给存储节点n,原来写入存储节点1的数据都将写入存储节点n对应的事件分表中,直到数据存储节点1恢复使用。
    本发明采用分级索引结构对分布式存储的syslog数据进行管理,极大的提高了数据查询效率。本发明的日志数据查询流程是:
    (1)         通过webservice接口向数据中间层发出指定条件的日志查询请求。基于日志格式化的统一数据结构,可选的查询条件包括:采集时间、源地址、源端口、源用户名称、目的地址、目的端口、设备地址、系统类型、等级、设备类型、操作。
    (2)         数据中间层获取查询请求后,根据采集时间条件,访问事件分表索引(一级索引),确定需要查询的事件分表,事件分表以天为周期存储syslog数据,如果查询时间条件超过一天,需要在单个存储点处理多个事件分表。由于同一天的数据会分布存储于多个数据存储节点,查询申请中的采集时间条件,可以确定所需要访问的存储节点以及存储节点上可能涉及的多个分表。数据中间层确定了所需访问的数据存储节点,调用各个数据存储节点的调度线程,从而可以以多线程并行查询,提高日志数据查询的效率。
    (3)         当数据中间层的调度线程连接某一存储节点对事件分表进行查询时,利用MariaDB数据引擎针对时间、IP等信息建立的数据库表索引(二级索引)提高查询效率。
    (4)         对某一事件分表进行查询时,针对日志的时序特征和数据量巨大的特征,本发明采用分段查询的技术,即针对时间条件进行分段处理,将一次查询转化为多次、动态适应查询方式。对于大型的网络安全体系,每小时的日志数量都可以达到千万量级,当用户指定时间范围较大时,整个时间段内的日志数量巨大,一次性查询所需的时间过长,在这个过程中,页面处理假死状态。本发明采取的措施是,将用户指定的时间范围进行分段,首次查询针对5分钟时间范围进行查询,根据返回的事件数量,可以调整查询时间范围,经过多次查询,将结果合并,最终返回整个时间范围的查询结果。
    (5)         数据中间层的将各个数据存储节点的调度线程返回的查询结果进行汇总、排序,最终获得针对分布式日志存储环境下的查询结果。
    本发明方案针对各数据存储节点的管理分两个维度,一是数据中间层的集中调度维护,另一个是各个数据存储节点的本地维护。数据存储节点的集中调度负责整个分布式日志数据体系的统一数据存储与查询功能,而各个存储节点的本地维护包括:数据备份、数据恢复、数据中间表统计,同时存储节点管理服务对存储节点服务器进行监控,并将监控数据上报至集成化数据中间层。这样的设计架构既可以分布式数据存储节点的统一调度维护,提高数据协作能力,同时可以将各存储节点数据的备份、恢复等计算分散在各个数据存储服务器上。在本发明中,syslog数据的统一存储和查询调度由数据中间层统一处理,各数据存储节点的日志数据完整性由各个数据节点负责处理。 

    关 键  词:
    一种 分布式 设备 日志 采集 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种分布式设备日志采集方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-19850.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1