`

Flume(日志收集系统)的部署与测试

阅读更多

Flume的部署与测试

Flume是一个分布式、高可靠、高可用的日志收集系统。能够有效的收集、聚合、移动大量的日志。把各种类型的数据源采集汇总到各种类型的目的地,flume有一个口号:“我们不生产数据,我们是数据的搬运工。

官网文档: http://flume.apache.org/FlumeUserGuide.html

相关项目:
相关示例项目:Leek——简易版实时智能选股平台

Flume组件:

Flume 的核心(agent)就是把数据从数据源收集过来,再送到目的地。为了保证高可靠输送一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。 Flume : 传输的数据的基本单位是 Event,如果是文本文件,通常是一行记录,这也是事务的基本单位。

  • Event : (包含:headers:{} 、body) 从 Source,流向 Channel,再到 Sink,本身为一个 byte 数组。
  • Source : 对数据进行收集,分成 transtion 和 event 打入到channel之中。
  • Channel : 就像一个管道(队列),接收 Source 的输出,再推送给 Sink 消费。数据直到进入到下一个Channel中或者进入终端才会被删除。即:中转Event临时存储,在 sources 和 sinks之间起一个连接作用 。
  • Sink : 取出 Channel 中的数据,然后送给外部源(HDFS、HBase)或者其他 Source。

flume的作用:

可用于实时计算和离线计算的数据源采集工具 

1、Flume安装(安装flume前需要先安装JDK环境)

http://mirrors.cnnic.cn/apache/flume/1.6.0/apache-flume-1.6.0-bin.tar.gz  
tar -xvzf apache-flume-1.6.0-bin.tar.gz  
mv apache-flume-1.6.0-bin apache-flume-1.6.0

2、环境变量设置

vim /etc/profile
export FLUME_HOME=/usr/local/apache-flume-1.6.0
export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=.:$PATH::$FLUME_HOME/bin
source /etc/profile
echo $FLUME_HOME

3、Flume配置

cd /usr/local/apache-flume-1.6.0/conf/
cp flume-conf.properties.template flume-conf.properties
vim flume-conf.properties
接下来我们要实现如下目的:

B服务器的nginx访问日志传输到A服务器,A服务器将本服务器上的nginx访问日志和B服务器传输过来的日志一起输出到/tmp/flume文件夹下面。

#服务器A的配置:
#下面的agent1是代理名称
agent1.sources = s1 s2
agent1.channels = c1
agent1.sinks = k1

#配置数据源source
agent1.sources.s1.type = avro
agent1.sources.s1.bind= 0.0.0.0    
agent1.sources.s1.port= 44444    
agent1.sources.s1.channels= c1
agent1.sources.s2.batchSize=1000
agent1.sources.s2.batchTimeout=1000

agent1.sources.s2.type = exec
agent1.sources.s2.channels = c1
agent1.sources.s2.command = tail -f /usr/local/nginx/logs/access.log
agent1.sources.s2.batchSize=1000
agent1.sources.s2.batchTimeout=1000


# 配置内存 channel
agent1.channels.c1.type = memory
agent1.channels.c1.capacity = 50000
agent1.channels.c1.transactionCapacity = 10000

# 配置 sinks
agent1.sinks.k1.channel = c1
agent1.sinks.k1.type = file_roll
agent1.sinks.k1.sink.directory = /tmp/flume
#默认值为30,即每30秒生成一个文件  
#为0时表示只有一个文件存放数据
agent1.sinks.k1.sink.rollInterval  = 0 
#设置的越大吞吐能力越好,延时也越大
agent1.sinks.k1.sink.batchSize=100

 

#服务器B的配置:
#下面的agent1是代理名称
agent1.sources = s1
agent1.channels = c1
agent1.sinks = k1

#配置数据源source
agent1.sources.s1.type = exec
agent1.sources.s1.channels = c1
agent1.sources.s1.command = tail -f /usr/local/nginx/logs/access.log

# 配置内存 channel
agent1.channels.c1.type = memory
agent1.channels.c1.capacity = 10000
agent1.channels.c1.transactionCapacity = 10000

# 配置 sinks
# 数据被转换成 Avro Event ,然后发送到指定的服务端口上。
agent1.sinks.k1.channel = c1
agent1.sinks.k1.type = avro
agent1.sinks.k1.hostname = 192.168.xx.xxx
agent1.sinks.k1.port = 44444
agent1.sinks.k1.batch-size=50

4、依次启动服务

cd /usr/local/apache-flume-1.6.0/
nohup flume-ng agent -n agent1 -c conf -f conf/flume-conf.properties &

5、在A服务器上看整合的日志输出

tail -f  /tmp/flume/xxxxxx
3
1
分享到:
评论

相关推荐

    一个基于Python和Flume的日志收集和解析系统+源代码+文档说明

    实时收集、解析Nginx日志(日志文件在不断地增加),需要较好的处理: * **断点续读**:agent意外挂掉,重启之后从上次处理过的位置继续处理 * **日志滚动**:当rename Nginx日志文件,并reload Nginx的时候,...

    2017最新大数据架构师精英课程

    本资源为大数据基础到中...159_kafka与flume集成-source集成- _, G+ K) y% I4 D" q9 \ 160_kafka与flume集成-sink集成4 o6 W; v5 a; p9 s. X% I7 @ 161_kafka与flume集成-channel集成/ x' w3 g3 z& d: w 162_kafka简介!

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    JAVA上百实例源码以及开源项目

    笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...

    java开源包1

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包11

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包2

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包3

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包6

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包5

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包10

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包4

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包8

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包7

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包9

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包101

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    Java资源包01

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

Global site tag (gtag.js) - Google Analytics