欢迎光临112期刊网!
网站首页 > 论文范文 > 计算机论文 > 软件技术 > 基于Apache Flume的分布式日志收集系统设计开发实

基于Apache Flume的分布式日志收集系统设计开发实

日期:2023-01-24 阅读量:0 所属栏目:软件技术


 0引言
  对于网站而言,通过采集系统日志,分析系统的运行和安全状况以及客户的访问行为至关重要[1]。传统的日志采集模式都是直接将信息记录在本地服务器,然后通过Linux命令行或其它日志分析工具对其进行分析[2,3]。然而,随着信息规模的扩大,一个网站系统可能会包含多个组件,并部署到多个不同的服务器上。采用传统的方式对其日志分别进行维护和分析会带来一些麻烦和问题。另一方面,随着虚拟化技术和云计算技术的应用,任何一个节点都可以动态地根据一定的策略分布或迁移,传统的本地日志收集模式势必不能适应虚拟环境的需要。
  本文基于开源日志收集系统Apache Flume,设计并实现了一个分布式环境下的日志集中收集系统。该系统可以实现异构网站之间的日志集中收集,从而为下一步的日志分析与统一监控提供数据支持。
  1Apache Flume
  Apache Flume是Cloudera开源的分布式日志,其内置了非常齐全的各种组件,减少了用户使用的复杂度。Flume架构具有简单、可靠、灵活的特点,并且为HDFS提供了直接的支持,可以比较方便地实现与HBase的集成[4]。
  本文采用Apache Flume NG系统进行分布式日志的收集。NG是New Generation的缩写,与Apache Flume 0.9x版本存在区分。Flume NG对传统的Apache Flume进行了精简,去掉了Master和Collector两种角色,只保留了Agent一种角色。
  数据流(Data Flow)描述了日志数据从产生、传输、处理到最终写入目的地的路径,它是Flume中最主要的抽象模型。 Flume的数据流模型如图1所示。
  图1Flume数据流模型
  Flume Ng的数据流程分为3个阶段:
  (1)Flume的Source接收由外部源(如Web Server)发送过来的事件。其中事件需要以Source能够识别的格式发送,如Avro Flume Source只能接收Avro客户端或其它Agent中的Avro Sink发送的Avro事件。
  (2)Flume Source接收到一个事件后,它会将事件存储到一个或多个Channel,Channel会保存这些数据直到Sink处理完这些数据。
  (3)Sink会取出并删除Channel中的事件,并将其发送到HDFS等存储系统进行存储,或者继续发送到下一个Agent的Source进行进一步处理,如汇聚等。
  2日志收集数据流程定义
  为了有效收集日志,系统实施时需要在每个需要收集日志的服务器上安装相同版本的Flume NG。由于不同类型的网站选用的Web Server不同,为了对数据进行有效的收集,需要为每类Web Server设定一个或多个Agent,对收集的不同数据进行不同的处理,本文采用如图2所示的日志收集流程。
  图2基于Flume的日志数据收集流程
  Flume中数据收集的流向以及各个组件的处理方式均通过配置Agent来实现。Flume中Agent配置文件采用了Java属性文件的格式,各个属性采用层次化的方式进行设置。
  3Agent配置
  Tomcat服务器日志采集方式如下:假定tomcat安装在/opt/tomcat目录,日志存放在var/log/data,日志聚合Agent的IP地址为192.168.0.10, Avro客户端访问端口为4545。定义ties如下:
  # A single-node Flume configuration
   # Name the components on this agent
   s = source1
    = sink1
   ls = channel1
   # Describe/configure source1
    = exec
   d =
    tail -n +0 -F
    /
   ls =
    channel1
   # Describe sink1
    = avro
   me = 192.168.0.10
    = 4545
   # Use a channel which buffers events in memory
    = file
   ointDir=/var/checkpoint
   rs=/var/tmp
   ty = 1000
   ctionCapactiy = 100 
   # Bind the source and sink to the channel
   ls = channel1
   l = channel1
  其它Ngnix服务器、Apache服务器的日志收集Agent与此类似,这里不再赘述。对于IIS服务器,由于其运行在Windows平台上,可以通过安装Flume的Windows版本实现。
  日志聚合Agent负责收集通过Avro Sink发送过来的事件,并将其写入到HBase数据库中,具体配置代码如下:
   #source定义
   s = avroIn
    = avro
    = 0.0.0.0
    = 4545
   ls = mc1 
   #Channel定义
   ls = mc1
    = memory
   ty = 100
   #HBase Sink定义
    = sink1
   #使用AsyncHBaseSink
    = BaseSink
    = transactions
   Family = clients
    = charges
   ize = 5000
   #使用自定义的SplittingAsyncHbaseEventSerializer类
   izer =
    ingAsyncHbaseEventSerializer
   entColumn = icol
   l = mc1
  4结语
  本文针对异构网站间的日志集中存放需求,首先提出了一种基于Apache Flume的分布式日志收集系统设计方案,然后对日志收集的数据流程进行了设计,最后以Tomcat服务器下的日志收集为例,对其Agent配置进行了分析。该系统通过将多个网站的日志集中存储,为进行下一步的日志分析提供了数据支 持,也为云平台下的网站日志收集方案提供了参考依据。
  参考文献:
  \[1\]詹玲,马骏.分布式I/O日志收集系统的设计与实现[J].计算机工程与应用, 2010,46(36):8890.
  [2]孙寅林. 基于分布式计算平台的海量日志分析系统的设计与实现[D].西安: 西安电子科技大学,2012.
  [3]宋爱青. 基于Hadoop的日志分析系统的设计与实现[D].北京:中国地质大学,2012.

本文链接:http://www.qk112.com/lwfw/jsjlw/ruanjianjishu/229728.html

论文中心更多

发表指导
期刊知识
职称指导
论文百科
写作指导
论文指导
论文格式 论文题目 论文开题 参考文献 论文致谢 论文前言
教育论文
美术教育 小学教育 学前教育 高等教育 职业教育 体育教育 英语教育 数学教育 初等教育 音乐教育 幼儿园教育 中教教育 教育理论 教育管理 中等教育 教育教学 成人教育 艺术教育 影视教育 特殊教育 心理学教育 师范教育 语文教育 研究生论文 化学教育 图书馆论文 文教资料 其他教育
医学论文
医学护理 医学检验 药学论文 畜牧兽医 中医学 临床医学 外科学 内科学 生物制药 基础医学 预防卫生 肿瘤论文 儿科学论文 妇产科 遗传学 其他医学
经济论文
国际贸易 市场营销 财政金融 农业经济 工业经济 财务审计 产业经济 交通运输 房地产经济 微观经济学 政治经济学 宏观经济学 西方经济学 其他经济 发展战略论文 国际经济 行业经济 证券投资论文 保险经济论文
法学论文
民法 国际法 刑法 行政法 经济法 宪法 司法制度 法学理论 其他法学
计算机论文
计算机网络 软件技术 计算机应用 信息安全 信息管理 智能科技 应用电子技术 通讯论文
会计论文
预算会计 财务会计 成本会计 会计电算化 管理会计 国际会计 会计理论 会计控制 审计会计
文学论文
中国哲学 艺术理论 心理学 伦理学 新闻 美学 逻辑学 音乐舞蹈 喜剧表演 广告学 电视电影 哲学理论 世界哲学 文史论文 美术论文
管理论文
行政管理论文 工商管理论文 市场营销论文 企业管理论文 成本管理论文 人力资源论文 项目管理论文 旅游管理论文 电子商务管理论文 公共管理论文 质量管理论文 物流管理论文 经济管理论文 财务管理论文 管理学论文 秘书文秘 档案管理
社科论文
三农问题 环境保护 伦理道德 城镇建设 人口生育 资本主义 科技论文 社会论文 工程论文 环境科学