• 浪潮孙丕恕从信息时代到智能时代 人工智能价值将爆发式释放 2019-12-21
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
    • / 19
    • 下载费用:30 金币  

    重庆时时彩历史开结果: 日志收集系统和方法.pdf

    关 键 词:
    日志 收集 系统 方法
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201710058570.X

    申请日:

    2017.01.23

    公开号:

    CN106777371A

    公开日:

    2017.05.31

    当前法律状态:

    实审

    有效性:

    审中

    法律详情: 实质审查的生效IPC(主分类):G06F 17/30申请日:20170123|||公开
    IPC分类号: G06F17/30 主分类号: G06F17/30
    申请人: 北京齐尔布莱特科技有限公司
    发明人: 陈天明; 董启政
    地址: 100080 北京市海淀区丹棱街3号B座10层1010室
    优先权:
    专利代理机构: 北京思睿峰知识产权代理有限公司 11396 代理人: 赵爱军;谢建云
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201710058570.X

    授权公告号:

    |||

    法律状态公告日:

    2017.06.23|||2017.05.31

    法律状态类型:

    实质审查的生效|||公开

    摘要

    本发明公开了一种日志收集系统,该系统包括:一个或多个第一服务器,一个或多个第二服务器以及监控服务器。其中,监控服务器用于实时获取各第二服务器的运行状态,并生成可用的第二服务器列表。第一服务器基于客户端发起的HTTP请求生成格式化的日志数据,监听可用的第二服务器列表,并将格式化的日志数据发送至可用的第二服务器。第二服务器接收到日志数据后,根据其所属的日志类型将其本地化存储于相应的日志文件中。本发明还公开了适于在上述日志收集系统中执行的日志收集方法。

    权利要求书

    1.一种日志收集系统,所述系统包括:
    一个或多个第一服务器,每一个第一服务器中均存储有多个配置文件,所述配置文件
    适于指定每种日志类型所对应的请求路径和日志数据格式,每一个第一服务器均包括:
    日志生成单元,适于从客户端发起的HTTP请求中解析出请求路径,
    根据请求路径确定日志类型,根据该日志类型所对应的配置文件中所指定的日志数据
    格式将所述HTTP请求生成日志数据;
    第一输出单元,适于将日志数据发送至第二服务器;
    一个或多个第二服务器,每一个第二服务器均包括:
    本地化存储单元,适于接收第一服务器发送的日志数据,并根据日志数据所属的日志
    类型将接收到的日志数据存储于第二服务器的相应日志文件中;
    监控服务器,适于获取第二服务器的运行状态,生成可用的第二服务器列表;
    其中,第一输出单元中还包括:监听???,适于监听所述可用的第二服务器列表,所述
    第一输出单元适于根据所述可用的第二服务器列表向可用的第二服务器发送日志数据。
    2.如权利要求1所述的系统,其中,所述监控服务器进一步适于:
    每隔第一时间向每一个第二服务器发送确认信息;
    若在第二时间内接收到第二服务器的反馈信息,则将该第二服务器判定为可用的第二
    服务器,加入可用的第二服务器列表。
    3.如权利要求1或2所述的系统,其中,所述可用的第二服务器列表包括一条或多条可
    用的第二服务器记录,每条可用的第二服务器记录包括IP地址和端口号信息。
    4.如权利要求1-3中任一项所述的系统,其中,所述第一输出单元还适于:在可用的第
    二服务器的数量小于第一阈值时,将所述日志数据存储于第一服务器;在可用的第二服务
    器的数量大于等于第一阈值时,将第一服务器中已存储的日志数据和日志生成单元在当前
    时刻生成的日志数据发送至可用的第二服务器。
    5.如权利要求4所述的系统,其中,所述第一输出单元还适于:
    在可用的第二服务器的数量大于等于第一阈值时,以轮询的方式从多个可用的第二服
    务器中确定一个第二服务器,并将日志数据发送至确定的所述第二服务器。
    6.一种日志收集方法,在日志收集系统中执行,所述系统包括一个或多个第一服务器、
    一个或多个第二服务器以及监控服务器,其中,每一个第一服务器中均存储有多个配置文
    件,所述配置文件适于指定每种日志类型所对应的请求路径和日志数据格式,所述方法包
    括:
    监控服务器获取第二服务器的运行状态,生成可用的第二服务器列表;
    第一服务器从客户端发起的HTTP请求中解析出请求路径,根据请求路径确定日志类
    型,根据该日志类型所对应的配置文件中所指定的日志数据格式将所述HTTP请求生成日志
    数据;
    第一服务器监听所述可用的第二服务器列表,将所述日志数据发送至可用的第二服务
    器;
    第二服务器接收到第一服务器发送的日志数据后,根据日志数据所属的日志类型将接
    收到的日志数据存储于第二服务器的相应日志文件中。
    7.如权利要求6所述的方法,其中,所述监控服务器获取第二服务器的运行状态,生成
    可用的第二服务器列表的步骤包括:
    监控服务器每隔第一时间向每一个第二服务器发送确认信息;
    若在第二时间内接收到第二服务器的反馈信息,则将该第二服务器判定为可用的第二
    服务器,加入可用的第二服务器列表。
    8.如权利要求6或7所述的方法,其中,所述可用的第二服务器列表包括一条或多条可
    用的第二服务器记录,每条可用的第二服务器记录包括IP地址和端口号信息。
    9.如权利要求6-8中任一项所述的方法,其中,所述第一服务器监听所述可用的第二服
    务器列表,将所述日志数据发送至可用的第二服务器的步骤包括:在可用的第二服务器的
    数量小于第一阈值时,将所述日志数据存储于第一服务器;在可用的第二服务器的数量大
    于等于第一阈值时,将第一服务器中已存储的日志数据和当前时刻生成的日志数据发送至
    可用的第二服务器。
    10.如权利要求9所述的方法,其中,所述将第一服务器中已存储的日志数据和当前时
    刻生成的日志数据发送至可用的第二服务器的步骤包括:以轮询的方式从多个可用的第二
    服务器中确定一个第二服务器,并将日志发送至确定的所述第二服务器。

    说明书

    日志收集系统和方法

    技术领域

    本发明涉及数据采集技术领域,尤其涉及一种日志收集系统和方法。

    背景技术

    用户对互联网的访问实际上就是对某台服务器的访问,即向服务器发起HTTP请
    求。当服务器被访问时,会在本地生成用户访问日志。对日志数据进行分析和挖掘可以为行
    业/企业带来巨大的价值。

    随着互联网技术的发展和终端设备的普及,用户对服务器的访问量增大,相应地,
    服务器端生成的用户访问日志的数据体量也越来越大。面对海量的日志数据,简单的日志
    本地化采集和处理已无法满足需求,因此,需要提供一种分布式的日志收集系统。

    目前比较常用的分布式日志收集系统为Flume日志收集框架。Flume以Agent为最
    小的独立运行单位。一个Agent由Source、Channel和Sink三大组件构成。Flume的数据流由
    Event(事件)贯穿始终。Event是Flume的基本数据单位,它携带日志数据(字节数组形式)并
    且携带有header(头信息)。尽管Flume是一种高可用的分布式海量日志采集、聚合和传输的
    系统,但是,其在日志的分类整理和流量统计监控的实现上很不方便。例如,用Flume实现日
    志的分类整理时,需要由技术人员自行实现interceptor(拦截器)接口,对请求进行拦截,
    区分不同的日志类型,然后给每个Event添加header。此外,还需要对Channel和Sink进行配
    置,当日志种类很多的时候,配置很麻烦。

    发明内容

    为此,本发明提供一种日志收集系统和方法,以解决或至少缓解上面存在的问题。

    根据本发明的一个方面,提供一种日志收集系统,该系统包括:一个或多个第一服
    务器,每一个第一服务器中均存储有多个配置文件,所述配置文件适于指定每种日志类型
    所对应的请求路径和日志数据格式,每一个第一服务器均包括:日志生成单元,适于从客户
    端发起的HTTP请求中解析出请求路径,根据请求路径确定日志类型,根据该日志类型所对
    应的配置文件中所指定的日志数据格式将所述HTTP请求生成日志数据;第一输出单元,适
    于将日志数据发送至第二服务器;一个或多个第二服务器,每一个第二服务器均包括:本地
    化存储单元,适于接收第一服务器发送的日志数据,并根据日志数据所属的日志类型将接
    收到的日志数据存储于第二服务器的相应日志文件中;监控服务器,适于获取第二服务器
    的运行状态,生成可用的第二服务器列表;其中,第一输出单元中还包括:监听???,适于监
    听所述可用的第二服务器列表,所述第一输出单元适于根据所述可用的第二服务器列表向
    可用的第二服务器发送日志数据。

    可选地,在根据本发明的日志收集系统中,监控服务器进一步适于:每隔第一时间
    向每一个第二服务器发送确认信息;若在第二时间内接收到第二服务器的反馈信息,则将
    该第二服务器判定为可用的第二服务器,加入可用的第二服务器列表。

    可选地,在根据本发明的日志收集系统中,可用的第二服务器列表包括一条或多
    条可用的第二服务器记录,每条可用的第二服务器记录包括IP地址和端口号信息。

    可选地,在根据本发明的日志收集系统中,第一输出单元还适于:在可用的第二服
    务器的数量小于第一阈值时,将所述日志数据存储于第一服务器;在可用的第二服务器的
    数量大于等于第一阈值时,将第一服务器中已存储的日志数据和日志生成单元在当前时刻
    生成的日志数据发送至可用的第二服务器。

    可选地,在根据本发明的日志收集系统中,第一输出单元还适于:在可用的第二服
    务器的数量大于等于第一阈值时,以轮询的方式从多个可用的第二服务器中确定一个第二
    服务器,并将日志数据发送至确定的所述第二服务器。

    可选地,在根据本发明的日志收集系统中,第二服务器中还包括第二输出单元,适
    于读取第二服务器中存储的日志文件,将所述日志文件中的日志数据发送至数据应用端。

    可选地,在根据本发明的日志收集系统中,第二输出单元进一步适于:将待发送的
    日志类型添加至队列中,其中,每个日志类型包括一个或多个日志文件;创建多个线程;对
    于每一个线程:从队头取出一个日志类型;读取该日志类型所对应的日志文件中的日志数
    据并将其发送至数据应用端;将该日志类型放回队尾。

    可选地,在根据本发明的日志收集系统中,数据应用端包括:Hadoop集群、Kafka集
    群、UDP服务器中的一种或多种。

    可选地,在根据本发明的日志收集系统中,日志生成单元、第一输出单元、本地化
    存储单元、第二输出单元中均包括监控???,适于监控每一种日志类型的日志数据的流量
    情况。

    根据本发明的一个方面,提供一种日志收集方法,该方法适于在日志收集系统中
    执行,日志收集系统包括一个或多个第一服务器、一个或多个第二服务器以及监控服务器,
    其中,每一个第一服务器中均存储有多个配置文件,所述配置文件适于指定每种日志类型
    所对应的请求路径和日志数据格式,该方法包括:监控服务器获取第二服务器的运行状态,
    生成可用的第二服务器列表;第一服务器从客户端发起的HTTP请求中解析出请求路径,根
    据请求路径确定日志类型,根据该日志类型所对应的配置文件中所指定的日志数据格式将
    所述HTTP请求生成日志数据;第一服务器监听所述可用的第二服务器列表,将所述日志数
    据发送至可用的第二服务器;第二服务器接收到第一服务器发送的日志数据后,根据日志
    数据所属的日志类型将接收到的日志数据存储于第二服务器的相应日志文件中。

    根据本发明的技术方案,根据HTTP请求中的请求路径来确定日志类型,为每种日
    志类型指定相应的日志数据格式,这样,仅需要简单地设置几个配置文件就可以实现基于
    HTTP请求的日志数据的分类格式化采集,方便高效。在将已分类的日志数据发送至第二服
    务器后,根据日志数据的类型将该日志数据存储于相应的日志文件中,即,实现了日志数据
    的分类存储。另外,第一服务器、第二服务器中均部署有监控???,可以监控每一种日志类
    型的日志数据的流量情况,从而能够及时地发现问题。

    另外,本发明的日志收集系统中包括可以监控第二服务器运行状态的监控服务
    器;第一服务器中包括监听???,可以从监控服务器处获取可用的第二服务器列表,将数据
    发送至可用的第二服务器,从而防止了因第二服务器不可用而造成的数据丢失。更进一步
    地,根据可用的第二服务器列表中包括的可用的第二服务器的数量来选择启用主通道或备
    通道。当可用的第二服务器较多时(数量大于等于第一阈值时),第二服务器的状态良好,启
    用主通道,将日志数据发送至可用的第二服务器;当可用的第二服务器较少时(数量小于第
    一阈值时),第二服务器很可能出现问题,这时暂时将日志数据存储于第一服务器本地,当
    可用的第二服务器的数量恢复正常时,再启用主通道,将第一服务器本地暂存的日志数据
    和当前时刻生成的日志数据发送至可用的第二服务器,从而进一步保证了数据传输的可靠
    性。

    另外,在第二服务器向数据应用端发送日志数据时,采用了一个全局的阻塞队列
    来控制并发,使得同一时间同一个日志类型只能被一个线程占用,避免了同时读取一个日
    志类型文件所带来的数据混乱和数据安全问题。

    附图说明

    为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方
    面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面
    旨在落入所要求?;さ闹魈獾姆段?。通过结合附图阅读下面的详细描述,本公开的上述
    以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的
    部件或元素。

    图1示出了根据本发明一个实施例的日志收集系统100的示意图;

    图2示出了根据本发明另一个实施例的日志收集系统100的示意图;

    图3示出了根据本发明一个实施例的多线程处理日志数据的示意图;

    图4A、4B示出了根据本发明的日志数据流量的监控结果的示意图;

    图5示出了根据本发明一个实施例的日志收集方法500的流程图;以及

    图6示出了根据本发明一个实施例的日志收集方法600的流程图。

    具体实施方式

    下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开
    的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例
    所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围
    完整的传达给本领域的技术人员。

    图1示出了根据本发明一个实施例的日志收集系统100的示意图。图1所示的日志
    收集系统100包括五个第一服务器200(构成第一服务器集群)、四个第二服务器300(构成第
    二服务器集群)以及一个监控服务器400。应当指出,图1所示的日志收集系统100仅用于示
    例性地说明本发明的技术方案,在具体的实践情况中,日志收集系统中可以包括其他数量
    的第一服务器、第二服务器和监控服务器,本发明对日志收集系统100中所包括的第一服务
    器、第二服务器和监控服务器的数量不做限制。另外,第一服务器、第二服务器、监控服务器
    可以根据实际情况部署于任意位置,本发明对三者的部署情况亦不做限制。

    第一服务器200为能够接收客户端发起的HTTP(HyperText Transfer Protocol,
    超文本传输协议)请求,并向客户端返回其所请求的内容的服务器,例如HTTP服务器、WEB服
    务器、应用服务器等,但不限于此。第二服务器300为能够提供存储服务的服务器,例如文件
    服务器、数据库服务器等,但不限于此。监控服务器400为能够提供监控服务的服务器,例如
    WEB服务器、应用服务器等,但不限于此。

    在本发明中,监控服务器400用于实时获取各第二服务器300的运行状态,并生成
    可用的第二服务器列表。第一服务器200基于客户端发起的HTTP请求生成分类格式化的日
    志数据,监听可用的第二服务器列表,并将生成的日志数据发送至可用的第二服务器300。
    第二服务器300接收到日志数据后,根据其所属的日志类型将其本地化存储于相应的日志
    文件中。以下将对系统100中各部分的功能和处理逻辑进行详细描述。

    监控服务器400可以获取第二服务器300的运行状态,并生成可用的第二服务器列
    表,从而避免了因为第二服务器300不可用而导致数据丢失的情况。根据一种实施例,监控
    服务器400每隔第一时间向每一个第二服务器发送确认信息。若在第二时间内接收到第二
    服务器的反馈信息,则将该第二服务器判定为可用的第二服务器,加入可用的第二服务器
    列表;若在第二时间内未接收到第二服务器的反馈信息,则将该第二服务器判定为不可用。
    根据一种实施例,每一个可用的第二服务器在可用的第二服务器列表中体现为一条可用的
    第二服务器记录,每条可用的第二服务器记录包括该可用的第二服务器的IP地址和端口号
    信息。一般来说,为了实现对第二服务器运行状态的实时监控,第一时间和第二时间均设置
    为一个较小的数值。

    监控服务器400获取第二服务器300的运行状态的一种可能的实现方式是,在每一
    个第二服务器300中均配置有ZooKeeper程序(ZooKeeper是一种能够实现集群管理功能的
    分布式应用程序协调服务),相应地,每个第二服务器300均是ZooKeeper的注册服务器。监
    控服务器400是能够提供ZooKeeper服务的服务器?;赯ooKeeper,监控服务器400可以实
    时获取第二服务器300的运行状态。监控服务器400以“心跳”的方式获取各第二服务器的运
    行情况,即周期性地向第二服务器发送“心跳包”,若在预设的超时时间内接收到第二服务
    器对于“心跳包”的响应,则认为该第二服务器在线,处于可用状态,在第二服务器对于“心
    跳包”的响应中包括其自身的IP地址和端口号。若在预设的超时时间内未接收到第二服务
    器对于“心跳包”的响应,则表明该第二服务器离线,处于不可用状态。

    如图1所示,第一服务器200包括日志生成单元210和第一输出单元220,其中,第一
    输出单元220包括监听???22。另外,为了实现日志的分类,第一服务器200中存储有多个
    配置文件,每个配置文件用于定义一个日志类型,并指定该日志类型所对应的请求路径和
    日志数据格式。根据一种实施例,配置文件可以是以下形式:

    <logger catlog="mall_augf_click_count"delimer="\\t">

    <description>web_mall_augf_click_count</description>

    <category>web_mall_augf_click_count</category>

    <msg>

    {const('20160614');

    onlyid();

    param('ahpplid');

    param('ahpsign');

    now();

    autoip();

    visittype();

    cuid();

    reguserid();

    useragent();

    param('cur');

    param('ref');

    param('site');

    param('category');

    param('subcategory');

    param('target');

    }</msg>

    <agent name="udp"/>

    </logger>

    其中,第一行代码用于指定请求路径,第二行代码是对本日志种类的描述,第三行
    代码用于指定日志种类,其余的代码用户设置日志数据格式。另外,应当指出,配置文件中
    只是定义了日志数据格式,并不能将HTTP请求解析成设定格式的日志数据。本领域技术人
    员应当知道,为了将HTTP请求处理成配置文件中预设格式的日志数据,还需要设置对应的
    方法。当然,上述配置文件仅是一个示例,本领域技术人员可以根据实际情况自行设置配置
    文件,本发明对第一服务器200中存储的配置文件的具体内容不做限制。

    第一服务器200可以接收客户端发起的HTTP请求,日志生成单元210从HTTP请求中
    解析出请求路径,根据请求路径确定日志类型,根据该日志类型所对应的配置文件中所指
    定的日志数据格式,调用相应的方法,将该HTTP请求解析成日志数据。

    监听???22可以监听监控服务器400处的可用的第二服务器列表,由第一输出单
    元220根据该列表向可用的第二服务器发送日志数据。根据一种实施例,当列表中可用的第
    二服务器的数量小于第一阈值时,将日志数据存储于第一服务器本地;当可用的第二服务
    器的数量大于等于第一阈值时,将第一服务器本地已存储的日志数据和日志生成单元210
    在当前时刻生成的日志数据发送至可用的第二服务器。该方案相当于,第一输出单元220在
    发送日志数据时,有主通道、备通道两个路径。当可用的第二服务器较多时(数量大于等于
    第一阈值时),第二服务器的状态良好,启用主通道,将日志数据发送至可用的第二服务器。
    当可用的第二服务器较少时(数量小于第一阈值时),第二服务器很可能出现问题,若这时
    将数据发送至第二服务器则可能造成数据丢失,因此,在这种情况下启用备通道,暂时将日
    志数据存储于第一服务器本地,当可用的第二服务器的数量恢复正常时,再启用主通道,将
    第一服务器本地暂存的日志数据和日志生成单元210在当前时刻生成的日志数据发送至可
    用的第二服务器,这样可以保证数据传输的可靠性。应当指出,第一阈值可以由本领域技术
    人员根据实际情况自行设置,例如,在考虑到服务器冗余容灾的简单情况下,可以将第一阈
    值设置为2。

    另外,在可用的第二服务器的数量大于等于第一阈值(第一阈值≥2)时,可用的第
    二服务器有多个,第一输出单元220没有必要向每一个可用的第二服务器均发送日志数据,
    而是从中选择一个发送数据即可。根据一种实施例,在可用的第二服务器的数量大于等于
    第一阈值时,第一输出单元220以轮询的方式从多个可用的第二服务器中确定一个第二服
    务器,并将日志数据发送至确定的所述第二服务器。所谓轮询,即依次询问列表中的第二服
    务器是否空闲,若空闲,则将日志数据发送至该第二服务器。

    第一输出单元220例如可以实现为基于log4j(log for java)实现的一个自定义
    的Appender对象,其内部封装了能够实现对可用的第二服务器列表进行监听的ZooKeeper
    客户端以及用于数据传输的UDP(User Datagram Protocol,用户数据报协议)客户端。
    ZooKeeper客户端可以以注册监听的方式监听监控服务器400处的可用的第二服务器列表。
    基于该列表,UDP客户端可以采用UDP协议向可用的第二服务器发送日志数据。

    第二服务器300中包括本地化存储单元310,用于接收第一服务器发送的日志数
    据,并根据日志数据所属的日志类型将接收到的日志数据存储于第二服务器300的相应日
    志文件中。本地化存储单元310可以将接收到的日志数据放到队列中,并开启多个线程来处
    理队列中的日志数据,将日志数据保存到本地的日志文件中。第二服务器300中也可以存储
    有针对不同日志类型所设置的配置文件,用于指定将日志数据存入日志文件过程中的一些
    参数。以下是配置文件的一个示例:

    <log type="web_mall_augf_click_count"desc="web_mall_augf_click_
    count">

    <rollmin>30</rollmin>

    <flushsec>3</flushsec>

    </log>

    其中,第一行代码表示日志类型为“web_mall_augf_click_count”。第二行代码表
    示文件生成时间间隔为30分钟,即每30分钟生成一个文件。另外,可以根据日志类型和文件
    生成时间间隔来为文件命名,文件名称=日志类型+时间,后一个文件的时间为前一个文件
    的时间与配置的时间间隔之和。例如,2017年1月1日日志类型“web_mall_augf_click_
    count”的第一个日志文件的名称为“web_mall_augf_click_count.201701010000”,第二个
    文件名称为“web_mall_augf_click_count.201701010030”,以此类推。第三行代码表示每3
    秒钟将缓存的日志数据写入文件。例如,对于接收到的日志数据,首先将其写入缓存队列,3
    秒后再将缓存中的日志数据写入文件,这样可以保证日志数据的写入效率。当然,该配置文
    件仅是一个示例,本领域技术人员可以根据实际情况自行设置配置文件,本发明对第二服
    务器300中存储的配置文件的具体内容不做限制。

    根据一种实施例,如图2所示,第二服务器300中还包括第二输出单元320,用于读
    取第二服务器300中存储的日志文件,并将日志文件中的日志数据发送至数据应用端120,
    方便后续对日志数据进行应用。根据一种实施例,第二输出单元320可以按照以下步骤来读
    取第二服务器300中存储的日志文件,并将日志文件中的日志数据发送至数据应用端:首
    先,将待发送的日志类型添加至队列中,其中,每个日志类型包括一个或多个日志文件。创
    建多个线程,每个线程可以从队头取出一个日志类型,读取该日志类型所对应的日志文件
    中的日志数据并将其发送至数据应用端。为了避免同时读取一个日志类型文件所带来的数
    据混乱和数据安全问题,同一时间同一个日志类型只能被一个线程占用,当触发预设的释
    放条件时,线程在其处理的日志文件中标记当前处理到的数据位置,随后解除对日志类型
    的占用,将该日志类型放回队尾,从队头再重新取出一个日志类型,进行下一轮的日志数据
    处理和发送。释放条件可以由本领域技术人员根据实际情况自行设置,例如,可以设置为当
    线程读取到当前日志文件的最后一个换行符\n(即读取到当前时刻的最后一条日志数据)
    时解除对当前日志类型的占用。

    应当指出,一般来说,第二输出单元320是实时工作的,即,本地化存储单元310每
    存储一条日志数据,第二数据单元320即时将其加入队列,等待发送至数据应用端120。相应
    地,队列中的每一个日志类型一般仅对应于该日志类型当前时刻最新的日志文件。在这种
    情况下,由于本地化存储单元310会按照一定的时间间隔来生成日志文件(例如每半小时生
    成一个日志文件),那么若线程刚好在本地化存储单元310切换日志文件的时刻读取日志文
    件,则可能会出现找不到文件的情况。因此,根据一种实施例,为线程在日志切换时读取文
    件设置一个等待时间,例如,30秒。若超过等待时间后仍未生成新的日志文件,则线程也无
    法读取文件,这时再报错提示找不到文件。该方案相当于在线程读取日志文件时为本地化
    存储单元310预留了一段时间生成新的日志文件,避免了线程找不到文件的虚假报错以及
    频繁报错。

    图3示出了根据本发明一个实施例的多线程处理日志数据的示意图。如图3所示,
    队列中包括N个日志类型,每个日志类型中包括多个日志文件。图3所示的队列为静态队列,
    其所占用的存储空间固定不变。当然,在其他的实施例中,也可以采用动态队列,其所占用
    的存储空间随着队列中元素的数量而变化。本发明对队列的形式不做限制。图3中,采用三
    个线程,即线程1~线程3来处理并发送日志数据。首先,线程1从队头取出日志类型1,线程2
    从队头取出日志类型2,线程3从队头取出日志类型3,随后,各线程分别读取各日志类型所
    对应的日志文件中的日志数据并将其发送至数据应用端。当线程读取到当前日志文件的最
    后一个换行符(即读取到当前时刻的最后一条日志数据)时解除对当前日志类型的占用,将
    其占用的日志类型放回队尾,在分别从队头取一个日志类型,继续进行日志数据的读取和
    发送。

    根据一种实施例,数据应用端包括Hadoop集群、Kafka集群、UDP服务器等,但不限
    于此。Hadoop集群可以提供离线计算服务,Kafka集群可以提供实时计算服务。其中,根据本
    发明的技术方案,可以将日志数据快速写入数据应用端,对于Hadoop集群仅有2min延迟,而
    Kafka集群仅有5s延迟。

    例如,第二输出单元320的将日志数据发送至Hadoop集群的过程可以采用以下代
    码来配置实现:

    <log type="web_mall_augf_click_count"desc="web_mall_augf_click_
    count">

    <hdfs>

    <path>/stage/web/mall/web_mall_augf_click_count</path>

    <compress>true</compress>

    <latency>30000</latency>

    <rollmin>30</rollmin>

    </hdfs>

    </log>

    其中,第一行代码表示日志类型,<path>表示Hadoop集群的目标路径,<compress>
    表示数据是否压缩,<latency>表示线程在日志切换时刻的等待时间(单位为毫秒),<
    rollmin>表示日志文件的时间间隔(单位为分钟)。

    根据一种实施例,日志生成单元210、第一输出单元220、本地化存储单元310、第二
    输出单元320中均包括监控???33(图1、图2中均未示出),可以监控每一种日志类型的日
    志数据的流量情况。图4A、4B示出了根据本发明的日志数据流量的监控结果的示意图,其
    中,横坐标为时间,纵坐标为每秒HTTP请求数量(query per second)。图4A为日志生成单元
    210处生成的所有日志类型的日志数据的流量情况,图4B为日志生成单元210处生成的日志
    类型为web_pvlog的日志数据的流量情况。

    图5示出了根据本发明一个实施例的日志收集方法500的流程图。方法500可以在
    如前述图1所示的日志收集系统100中执行。如图5所示,该方法包括步骤S510~S550。

    在步骤S510中,监控服务器获取第二服务器的运行状态,生成可用的第二服务器
    列表。该步骤的具体过程可以参考前述对监控服务器400的描述,此处不再赘述。

    在步骤S520中,第一服务器从客户端发起的HTTP请求中解析出请求路径,根据请
    求路径确定日志类型,根据该日志类型所对应的配置文件中所指定的日志数据格式将该
    HTTP请求生成日志数据。该步骤的具体过程可以参考前述对日志生成单元210的描述,此处
    不再赘述。

    在步骤S530中,第一服务器监听可用的第二服务器列表。该步骤的具体过程可以
    参考前述对监听???22的描述,此处不再赘述。

    在步骤S540中,第一服务器将日志数据发送至可用的第二服务器。该步骤的具体
    过程可以参考前述对第一输出单元220的描述,此处不再赘述。

    在步骤S550中,第二服务器接收到第一服务器发送的日志数据后,根据日志数据
    所属的日志类型将接收到的日志数据存储于第二服务器的相应日志文件中。该步骤的具体
    过程可以参考前述对本地化存储单元310的描述,此处不再赘述。

    应当指出,步骤S510和S520之间并不存在先后顺序,实际上,二者都是不停地在进
    行的,即,在步骤S510中,监控服务器每隔第一时间都会获取第二服务器的运行状态;在步
    骤S520中,由于第一服务器几乎每时每刻都会接收到客户端发起的HTTP请求,相应地,也会
    不断地生成日志数据。

    图6示出了根据本发明一个实施例的日志收集方法600的流程图。方法600可以在
    如前述图2所示的日志收集系统100中执行。如图6所示,该方法包括步骤S510~S560。其中,
    步骤S510~S550与图5所示的方法500完全相同,此处不再赘述。方法600与方法500的区别
    仅在于步骤S560。

    在步骤S560中,读取第二服务器中存储的日志文件,将所述日志文件中的日志数
    据发送至数据应用端。该步骤的具体过程可以参考前述对第二输出单元320的描述,此处不
    再赘述。

    A6:A1所述的系统,其中,第二服务器中还包括第二输出单元,适于读取第二服务
    器中存储的日志文件,将所述日志文件中的日志数据发送至数据应用端。

    A7:A6所述的系统,其中,所述第二输出单元进一步适于:

    将待发送的日志类型添加至队列中,其中,每个日志类型包括一个或多个日志文
    件;

    创建多个线程;

    对于每一个线程:

    从队头取出一个日志类型;

    读取该日志类型所对应的日志文件中的日志数据并将其发送至数据应用端;

    将该日志类型放回队尾。

    A8:A6所述的系统,其中,所述数据应用端包括:Hadoop集群、Kafka集群、UDP服务
    器中的一种或多种。

    A9:A6所述的系统,其中,所述日志生成单元、第一输出单元、本地化存储单元、第
    二输出单元中均包括监控???,适于监控每一种日志类型的日志数据的流量情况。

    B15:B10所述的方法,其中,在根据日志数据所属的日志类型将接收到的日志数据
    存储于第二服务器的相应日志文件中的步骤之后,还包括步骤:读取第二服务器中存储的
    日志文件,将所述日志文件中的日志数据发送至数据应用端。

    B16:B15所述的方法,其中,所述读取第二服务器中存储的日志文件,将所述日志
    文件中的日志数据发送至数据应用端的步骤包括:

    将待发送的日志类型添加至队列中,其中,每个日志类型包括一个或多个日志文
    件;

    创建多个线程;

    对于每一个线程:

    从队头取出一个日志类型;

    读取该日志类型所对应的日志文件中的日志数据并将其发送至数据应用端;

    将该日志类型放回队尾。

    B17:B15所述的方法,其中,所述数据应用端包括:Hadoop集群、Kafka集群、UDP服
    务器中的一种或多种。

    B18:B10所述的方法,其中,还包括步骤:监控每一个第一服务器、第二服务器中每
    一种日志类型的日志数据的流量情况。

    在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它
    设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类
    系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可
    以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为
    了披露本发明的最佳实施方式。

    在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施
    例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结
    构和技术,以便不模糊对本说明书的理解。

    类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在
    上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施
    例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保
    护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的
    权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵
    循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都
    作为本发明的单独实施例。

    本领域那些技术人员应当理解在本文所公开的示例中的设备的??榛虻ピ蜃?br />件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备
    不同的一个或多个设备中。前述示例中的??榭梢宰楹衔桓瞿?榛蛘叽送饪梢苑殖啥喔?br />子???。

    本领域那些技术人员可以理解,可以对实施例中的设备中的??榻凶允视π缘?br />改变并且把它们设置在与该实施例不同的一个或多个设备中??梢园咽凳├械哪?榛虻?br />元或组件组合成一个??榛虻ピ蜃榧?,以及此外可以把它们分成多个子??榛蜃拥ピ?br />子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何
    组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任
    何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权
    利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代
    替。

    此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例
    中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的
    范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求?;さ氖凳├娜?br />意之一都可以以任意的组合方式来使用。

    此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行
    所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法
    元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在
    此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行
    的功能。

    如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来
    描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必
    须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。

    尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域
    内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,
    本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限
    定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本
    技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本
    发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

       内容来自专利网重庆时时彩单双窍门 www.4mum.com.cn转载请标明出处

    关于本文
    本文标题:日志收集系统和方法.pdf
    链接地址://www.4mum.com.cn/p-6021164.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 浪潮孙丕恕从信息时代到智能时代 人工智能价值将爆发式释放 2019-12-21
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 两肖两码中特资料下载 球探比分即时足球比分下载 如意彩票群 山西快乐10分基础走势图 零点棋牌案件 篮球比分直播118 qq四川麻将作弊器 最好的炒股手机 辽宁十一选五开奖号47 黑龙江体彩6+1走势图 黑龙江十一选五 体彩浙江61开奖结果 金博棋牌注册送10元20提现 北京德州扑克比赛 8波比分网网络直播 河北福彩快三遗漏号