unijun 发表于 2015-11-27 21:01:02

flume日志收集系统搭建

原创文章,转载请注明: 转载自始终不够
本文链接地址: flume日志收集系统搭建
转载请注明:始终不够 » flume日志收集系统搭建

flume原理简介
flume是Apache的一款开源日志收集软件。在flume中,主要有三个重要的角色:source、channel和sink。source负责收集日志,日志可以是来自任何地方,例如socket,本地文件等等。sink负责将收集来的日志处理掉,处理的方法同样可以是多种多样的,例如写入HDFS,或者在本地文件系统中进行持久化。二channel则是负责source和sink之间的通信的,通信方式最常用的主要有内存管道和文件管道。这样设计的一个好处就是能够让每个角色做到单一职责,source只负责收集,sink只负责处理,而channel只负责通信。
flume提供了多种多样的sink、channel和sink,你可以通过简单的修改配置文件的方式,实现不同sink、channel和sink的组合。甚至你可以在一个节点设置多个channel和sink,将一个日志源发送给多个处理节点。
flume负载均衡原理
flume的负载均衡设计非常简单,简单到你只需要修改几行配置即可实现。这得益于flume软件架构的简单设计。这里我们看一张从官网扒的图:

这里我们看到在webserver的前端,有一个consolidation,我们可以称之为controller,它也是一个flume节点,与其他webserver节点不同的是,他的source是webserver,他的sink是HDFSH或其他sink。webserver的sink与controller的source使用arvo rfc进行通信。
但是这样依然解决不了负载均衡的问题,到目前为止,我们只有一台controller。
别急,还记得上面说flume支持使用多个channel和sink,这里我们可以在webserver上部署多个sink,flume支持使用轮询、随机调度的方式使用sink,这样我们通过差异化sink的配置,就能够实现日志上传到不同的机器。当controller发生宕机时,webserver上的flume会自动尝试其他sink继续上传。
flume安装
操作系统:centos6.4
首先需要安装jdk1.6以上版本,我装的是1.8最新版,运行没发现什么问题。然后在官网下载flume,安装官网的安装方法进行安装即可,同时官网提供了一套测试安装是否成功的方法。
flume测试
由于我只有一台机器,所以是启用了不同的端口进行的。配置文件列举如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#负载机flume client配置 #组件名称配置client.sources= source_clientclient.sinks= sink_client sink_client_bakclient.channels= channel_client #日志源组件配置(获取44444端口数据)#client.sources.source_client.type= netcat#client.sources.source_client.bind= 127.0.0.1#client.sources.source_client.port= 44444 #日志源组件配置(监听目录下新增文件)client.sources.source_client.type= spooldirclient.sources.source_client.channels= channel_clientclient.sources.source_client.spoolDir= /www/statistics.huyanping.cn/logs/blog_log/queue/20150312client.sources.source_client.fileHeader= trueclient.sources.source_client.fileHeaderKey= trueclient.sources.source_client.basenameHeader= trueclient.sources.source_client.basenameHeaderKey= true #sink组件组配置(用于负载均衡配置)client.sinkgroups= sink_groupclient.sinkgroups.sink_group.sinks= sink_client sink_client_bakclient.sinkgroups.sink_group.processor.type= load_balanceclient.sinkgroups.sink_group.processor.backoff= trueclient.sinkgroups.sink_group.processor.selector= random #sink组件配置(用于将日志信息持久化或发送给其他服务,注意两个sink访问的hosts或port是不同的)client.sinks.sink_client.type= avroclient.sinks.sink_client.channel= channel_clientclient.sinks.sink_client.hostname= 127.0.0.1client.sinks.sink_client.port= 4141 #sink组件配置(用于负载均衡配置)client.sinks.sink_client_bak.type= avroclient.sinks.sink_client_bak.channel= channel_clientclient.sinks.sink_client_bak.hostname= 127.0.0.1client.sinks.sink_client_bak.port= 4142 #内存管道设置#client.channels.channel_client.type= memory#client.channels.channel_client.capacity= 1000#client.channels.channel_client.transactionCapacity= 100 #文件管道设置client.channels.channel_client.type= fileclient.channels.channel_client.checkpointDir= /data/tmp/checkpointclient.channels.channel_client.dataDirs= /data/tmp
12345678910111213141516171819202122232425262728293031323334353637#日志收集中心flume controller 配置 #组件名称配置master.sources= source_mastermaster.sinks= sink_master filesystem_sinkmaster.channels= channel_master filesystem_channel #日志源组件配置(两个channel,分别用于本地持久化和其他用途,例如写入HDFS,或者logger调试)master.sources.source_master.type= avromaster.sources.source_master.channels= channel_master filesystem_channelmaster.sources.source_master.bind= 127.0.0.1master.sources.source_master.port= 4141 #sink组件配置master.sinks.sink_master.type= loggermaster.sinks.sink_master.channel= channel_master #内存管道配置#master.channels.channel_master.type= memory#master.channels.channel_master.capacity= 1000#master.channels.channel_master.transactionCapacity= 100 #文件管道配置(其他用途)master.channels.channel_master.type= filemaster.channels.channel_master.checkpointDir= /data/master/tmp/checkpointmaster.channels.channel_master.dataDirs= /data/master/tmp #文件管道配置(本地文件系统持久化)master.channels.filesystem_channel.type= filemaster.channels.filesystem_channel.checkpointDir= /data/filesystem/tmp/checkpointmaster.channels.filesystem_channel.dataDirs= /data/filesystem/tmp #本地文件系统sink组件配置master.sinks.filesystem_sink.type= file_rollmaster.sinks.filesystem_sink.channel= filesystem_channelmaster.sinks.filesystem_sink.serializer= TEXTmaster.sinks.filesystem_sink.sink.directory= /data/master/back_log
1234567891011121314151617181920212223242526#日志收集中心flume controller back配置 #组件名称配置master.sources= source_mastermaster.sinks= sink_mastermaster.channels= channel_master #日志源组件配置master.sources.source_master.type= avromaster.sources.source_master.channels= channel_mastermaster.sources.source_master.bind= 127.0.0.1master.sources.source_master.port= 4142 #sink组件配置master.sinks.sink_master.type= loggermaster.sinks.sink_master.channel= channel_master #内存管道配置#master.channels.channel_master.type= memory#master.channels.channel_master.capacity= 1000#master.channels.channel_master.transactionCapacity= 100 #文件管道配置master.channels.channel_master.type= filemaster.channels.channel_master.checkpointDir= /data/master_bak/tmp/checkpointmaster.channels.channel_master.dataDirs= /data/master_bak/tmp
页: [1]
查看完整版本: flume日志收集系统搭建